software I use
this is not an extensive list of the software I prefer, but it includes projects that I think deserve a special note, and ones to which I anticipate contributing upstream (if I had not done so already).
additionally, I can keep track of support and development communication channels for the software listed.
desktop environment
- bspwm
- upstream: git
- dmenu
- upstream: git
- discussion ML: dev@suckless.org [info]
- patch ML: hackers@suckless.org [info]
useful for running programs and for various other tools/scripts I write
- lemonbar-xft
- upstream: git
more performant than original lemonbar and supports truetype fonts with Xft.
I feed status info to it using sprite (C alternative to bartender) and bspws (C utility I wrote to process bspwm state information).
- mpv
- upstream: git
- picom
- upstream: git
- st
- upstream: git
- discussion ML: dev@suckless.org [info]
- patch ML: hackers@suckless.org [info]
- sxiv
utilities
- abduco
- upstream: git
- execline
- upstream: git
- ML: skaware@list.skarnet.org [info]
I use
execlineb
for service run scripts, cron jobs, and other trivial miscellaneous scripts.- mkp224o
- upstream: git
- mksh
- ML: miros-mksh@mirbsd.org [info]
I use mksh everywhere I don't want to configure zsh: on servers, alternate user accounts, et cetera.
- Neovim
it
just works
withst
now, and I have no complaints compared to Vim.- pass
-
I was happy with KeePassXC but wanted something simpler, more modular, and easier on resource usage when I was not using it. I have had KPXC running in background idling a bit under 100mb memory usage. while not as big as some graphical (or even commandline) applications, it's still memory put to better use for other things. and besides, pass has just about everything KPXC has, thanks to third-party efforts.
I do want to cut the bash dependency out of
pass
, either switching to POSIX shell, or using a compiled language, or a combination of the two. - rsync
- ML: rsync@lists.samba.org [info]
- scdoc
- upstream: git
- ML: ~sircmpwn/public-inbox@lists.sr.ht [info]
- zsh
- ML: zsh-users@zsh.org [info]
my primary at-home interactive shell
daemons & system components
- pam_rundir
- upstream: git
implements XDG_RUNTIME_DIR support with pam module, eliminating the need for a session manager such as (e)logind
- Prosody
- upstream: hg
- user ML: prosody-users@googlegroups.com [info, archive]
- dev ML: prosody-dev@googlegroups.com [info, archive]
- XMPP: prosody@conference.prosody.im
- s6
- upstream: git
- ML: supervision@list.skarnet.org [info]
- tor
- upstream: git
- user ML: tor-talk@lists.torproject.org [info]
- dev ML: tor-dev@lists.torproject.org [info]
fun
- Dolphin Emulator
- upstream: git
- Mednafen
Android
- andOTP
- upstream: git
- Matrix #andOTP:privacytools.io
I use this for TOTP keys I do not store on my YubiKey.
- Conversations
- KISS Launcher
- OpenKeychain
- Android Password Store
- upstream: git
complements my
pass
usage on PC devices; database is synchronised over a private, self-hosted git repository.
planned
I'm planning to make various software switches in my setups, but switching takes time. my goal is to try switching all these out and hopefully add the replacement tools to the lists above.
- torrenting: currently I use transmission for BitTorrent, but I'd like to switch most or all of my torrents over to btpd due to its headless and scriptable nature. btpd is entirely CLI-driven with a supervised daemon (much like transmission-daemon) so it should be easier than even rtorrent in terms of scripting and extensibility. the two issues with switching right away are: not all private trackers seem to allow btpd yet, and btpd seems to be a relatively-dormant project. so, I expect to do a bit of maintenance and heavy lifting with this one before I'm able to switch.
- E-mail: I want to move from claws-mail to a CLI setup. again, my main concern is ease of automation and configuration. but also, claws seems to use a lot more memory than it used to; probably attributed to my current mailbox sizes. my other major complaint with claws is the blocking UI, which makes it feel incredibly sluggish to perform actions such as checking and viewing mail. hopefully I can find a comfortable setup incorporating notmuch for tagging mail, mbsync for fetch, msmtp for sending, and of course nvim for editing mail.
- ssh: I plan to migrate from openssh to tinyssh but I need to add some (deliberately?) missing functionality to tinyssh first: namely support for multiple ssh channels (which is an RFC feature and not an openssh extension).
- httpd: I want to drop nginx in favour of solutions such as publicfile especially for static-served content. CGI is another thing I want to investigate.
- ActivityPub: I plan to write a server implementation to replace (and eventually be a near drop-in replacement for) Pleroma based around UNIX/djb principles of strictly-designed programs and IPC interfaces. the goal is to be simple yet flexible enough to meet unique, individual needs.
- OpenPGP: unfortunately, GnuPG for desktop is the de facto OpenPGP implementation. I am keeping my eye on sequoia OpenPGP library and will probably write a frontend utility for it. currently, the main caveat is that sequoia does not support smartcards—which is actually a serious usability concern for me, since I extensively use my YubiKey.
- logging: I switched three of my systems away from rsyslog to a combination of ucspilogd (for local syslog) and socklog (for remote syslog collection). both of these work together with s6 and s6-log to write to directories on disk as specified by line-matching rules; the architecture allows for most of the components to run as a non-root user, unlike rsyslog which essentially has to run as root. ultimately I want to remove syslog from the equation entirely, but some software seems to support only logging to syslog, so it will be a while before I can reach this ideal situation.
- cron: I want to switch away from conventional cronds such as cronie, opting either for uschedule or, if uschedule does not fit my needs, writing my own daemon.
- clocksetting: I use OpenNTPD for client-server and chrony on client-only devices. I would like to experiment with replacing them with the time management utilities found in s6-networking.
- image organisation: I want to re-implement hydrus as a suite of commandline utilities. in addition, I'd like to have a companion app for Android so I can access my media library from my phone.