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. ________________________________________________________________________________ Dylan Araps (C) 2019-2020 Linux(R) is the registered trademark of Linus Torvalds in the U.S. and other countries.