Subject This week in KISS (#13)
From Dylan Araps <dylan@k1ss.org>
Date Tue, 3 Mar 2020 12:07:09 +0100
Hello all.
This week I worked on slimming down the official repositories. The
official repositories no longer require, libnl, automake, autoconf,
libtool, python-mako and others.
Perl is now an optional dependency and is only required when building
Firefox or libvpx. The kernel also requires perl though there are
patches available for removing this requirement.
YASM is now also an optional dependency and NASM is used everywhere.
The only package which requires YASM during builds is Firefox which
is optionally also available as a binary through firefox-bin.
The installation guide will be updated once GCC 10 is released to
include the kernel changes above and how to avoid perl.
I also worked on removing libxdg-basedir from picom and my patch
was accepted and merged upstream [1]. This library is tiny,
unmaintained and doesn't see much use anymore.
[1] https://github.com/yshui/picom/pull/322
WYVERKISS 0.2 released
Wyverkiss is an alternative root-fs tarball created by Konimex which
uses LLVM/clang as the default compiler. This extends to removing as
much GNU as possible.
This isn't an officially supported project so any bugs should be
reported to the wyverkiss repository. I thought I'd post about it
regardless as it is KISS related and may be of some interest to you.
To quote the README:
"Wyverkiss is an alternative rootfs for KISS Linux. If KISS goes
GNU, we go the opposite."
Source: https://github.com/wyvertux/wyverkiss/releases/tag/0.0.2
DOCS
Every KISS install now optionally includes the distribution's
documentation (in /usr/share/doc/kiss). This was done for a couple
of reasons.
1) It removes the network requirement for the docs and enables the
user to read them locally..
2) It's another means of ensuring that the docs outlive the website
were it to go down.
The files themselves take up no space at all as they're merely plain
.txt files. With this change, every KISS user has the entire distro
stored locally on their system.
This was fairly simple to achieve as the repositories are git based
and contain full history, the package manager is written in shell
so the installed program _is_ the source code and the docs are
little .txt files.
Were something to happen to me (knock on wood!), there is now nothing
to lose access to. Every KISS user has the ability to continue to
keep their system up to date and to additionally keep KISS alive.
Remember, the distribution is designed to be maintainable by a single
person. You have the right and means as a user to drop the dependence
on me at any time.
SYSMGR
Cem Keylan, (the creator of Carbs Linux (a distro based on KISS)) has
released a simple system supervisor. The project was written with
KISS Linux an Carbs Linux in mind and Cem is calling for testers.
The project is written in POSIX shell and should require no
additional dependencies. If you are interested, please try it out.
I am yet to use it though it's always good to have options. I thought
I'd post about this as it's a minimal alternative for those using
KISS who are looking to move away from busybox init.
Source: https://github.com/cemkeylan/sysmgr
BIRCH
I spent some time working on my IRC client as well. I rewrote it from
the ground up and it's now in a "ready" state. Documentation is still
lacking which I will tackle over the next week.
While all of the core functionality has been implemented, you may
still find some bugs. This is expected!
A little introduction first. Birch is an IRC client written in
around 200 lines of bash (excluding blank lines and comments).
Interesting features include:
- Full readline prompt ('read -e') with support for tab completion of
nicks, channels, etc and support for keybindings, message history
and all readline keybindings.
- Buffers and a tabline split into server, channels and users. The
keybind can be used to cycle through buffers.
- Pretty printing of output. Nicks are colored based on their length
and the display is what I would call "pretty".
These may seem pretty basic to you as a reader though keep in mind
that bash is very tricky to work with when it comes to writing any
kind of TUI.
The trickiest part is that the input prompt and IRC listener must run
asynchronously and small portions of the window must be updated
without affecting other parts of the window.
So, the listener runs in the background. When you background
something in bash, it runs in a subshell. What this means is that you
can no longer share variables between the now separate processes.
This made it very hard to communicate between input/output. I ended
up using files for IPC which turned out great for logging purposes.
Lots of fun to be had.
I know I'll get this question: "Why bash?". I'll answer as simply as
possible. It's fun and challenging!
Source: https://github.com/dylanaraps/birch
POW
I also spent a little time writing a simple and barebones laptop
power management tool called pow. It merely provides two commands,
'pow pow' to swap to power (AC) and 'pow bat' to swap to battery.
On my hardware the battery mode passes all of powertop's tunable
nitpicks though more rules may need to be added for yours. Patches
are welcome.
This tool provides no daemon to listen to AC/Battery events. It only
provides the switching mechanism. It's up to you how, when and why
it should be run.
There is no configuration file either as the program is so tiny. Once
edits are made and it works, there's no real need to ever touch it
again.
As an example, you could pair this with acpid to automatically run it
on specific events. I hope you find some use out of it, I have!
Source: https://github.com/dylanaraps/pow
SOWM
SOWM is a simple window manager of my creation and is the closest
thing to a "default" window manager in a KISS system. It comes in at
around 200 LOC and is extendable through patches.
The patch process for SOWM has changed to a more maintainable system.
Each patch is now a pull request on GitHub which will be kept open in
perpetuity.
The author of the pull request will know when there are merge
conflicts as the web-UI won't allow the PR to be merged. GitHub also
allows patches to be generated by appending '.patch' to the PR URL.
I also worked on adding basic titlebar support to SOWM. They're
pretty useless right now though I'll be extending the patch to add
title text, buttons, etc. It's a start.
Patches: https://github.com/dylanaraps/sowm/pulls
---
Dylan Araps (62):
wpa_supplicant: Link statically to libnl-tiny
libnl: move to community
eiwd,openresolv: Move to community
wpa_supplicant: minor fixes
opendoas: fix comment
kiss: More portable install usage
liberation-fonts: More portable install
json-c: Move to community
libevent: Move to community
kiss: bump to 1.7.1
fontconfig: Remove automake dependency
GNU auto*,libtool: Move to community
glib: bump to 2.63.6
wpa_supplicant: use CC. @konimex. Closes #160
baseinit: bump to 0.4.2
baseinit: bump to 0.4.3
baseinit: bump to 0.4.4
gcc: latest snapshot
python: bump to 3.8.2
baseinit: bump to 0.5.0
mesa: Use own python-mako. python-mako: drop
various: fix maintainer
various: fix maintainer
python: fix chmod
python2: fix chmod
meson bump to 0.53.2
glib: never pcre
kiss: bump to 1.7.2
bison: Remove perl dependency
rsync: Remove perl dependency. Thanks @E5ten
x264: Remove perl depend
gtk+3: Remove perl dependency
xkeyboard-config: Remove perl dependency
rsync: Add comment
xkeyboard-config: Simpler xml2lst. Thanks @E5ten
glib: bump to 2.64.0
rust: bump to 1.41.1
xvidcore: use yasm
lame: Disable nasm.
libass: Use nasm
xvidcore: Use nasm.
libvpx: use nasm
libjpeg-turbo: Use nasm
ffmpeg: use nasm
xkeyboard-config: Fix checksums
libevdev: bump to 1.9.0
fribidi: bump to 1.0.9
imagemagick: bump to 7.0.9-26
libnl: Add to community
eiwd,openresolv: Add to community
apulse: drop from community
json-c: Add to community
libevent: Add to community
GNU auto*,libtool: Move to community
compton,esetroot,keychain: Drop from community
zsh: drop from community
luajit: Create missing symlinks
guile: drop from community
mercurial: Drop from community.
imagemagick: bump to 7.0.9-27
ntfs-3g: Fix build. Closes #489
mc: Remove from community
Adam Schaefers (7):
drop nawk, add nawk-git, closes #467
nettle: remove texinfo dependency
pciutils: fix #490
libcap: bump to 2.33, use_sched_not_pthread.patch
libcap: use sed, not patch
Cem Keylan (4):
lazygit: bump to 0.15.2
lazygit: bump to 0.15.3
libsoup: bump to 2.68.4
lazygit: bump to 0.15.5
Dilyn Corner (5):
xf86-input-mtrack: new package at 0.5.0
modified: xf86-input-mtrack/build
modified: build
modified: depends
xf86-input-mtrack: bumped to 0.5.1
Dzogovic Vehbo (1):
fix lua rights - thanks to paper
Kris Heck (1):
Various packages: adoption (#415) (#454)
M. Herdiansyah (3):
json-c: swap to cmake (#457)
picom: remove libxdg-basedir depends (#458)
libxdg-basedir: drop package (#459)
Matthew W (1):
mercurial: new package at 5.3
Muhammad Herdiansyah (6):
picom: use patch submitted to upstream
go: update to 1.14
picom: switch to merged patch
libsodium: new package at 1.0.18
minisign: new package at 0.8
libsodium/minisign: move to proper directories
Owen Rafferty (7):
sfeed: new package at 0.9.16
xwallpaper: bump to 0.6.3
glu: new package at 9.0.1
cython: new package at 0.29.15
freeglut: new package at 3.2.1
flashrom: new package at 1.2
keyutils: new package at 1.6.1
Will Eccles (3):
cfm: update to 0.5.4
cfm: update to 0.5.6
cfm: update to 0.6.0
dzove855 (1):
Add dylan's improvement.