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.


    dylan


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).


    irc client


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.


    window manager


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.