Personal projects

Some of my current personal projects


A directory bookmarking utility for the command line

Written in: sh/Bash
License: ISC

One very useful feature found in many file managers is the ability to bookmark directories just like pages in a Web browser, making it very easy to access often-used and relatively deeply nested directories quickly.

On the command line, however, this kind of functionality is not readily available. While using the cd command efficiently and working with the directory stack in shells that offer it can certainly help speed up navigation considerably, it is not the same as having a tool that will create persistent bookmarks with user-defined names and make them accessible in a way that doesn't necessarily depend on a particular shell.

dil offers exactly that. It is a collection of shell functions facilitating directory bookmarking on the command line by combining the use of symbolic links as shortcuts to nested directories with auto-completion of bookmark names (only supported in Bash at this point) for additional speed-up.

The core script was written aiming for a reasonable degree of POSIX compliance and will therefore most likely work in other Bourne-like shells, as long as they support the local command for creating local variables. Apart from that, dil needs the find and readlink utilities to be available on your system. The find utility needs to support the non-POSIX primary -print0.

Download: dil-1.0.0.tar (.sha256, .sha256.asc)

The latest development version is available from dil's public Git repository.


A handy, good enough file finder

Written in: Tcl
License: ISC

ff is a wrapper script around the Unix find command. It aims to provide a useful subset of the latter's functionality through a simpler and arguably more convenient interface.

There are two defining differences between ff and find:

  1. While find is a utility “for making lists of files that match given criteria and running commands on them” (Finding Files), ff only does the former, i.e., it does not provide means to perform further actions on search results. The only action ff performs is listing the names of found files, optionally using the null character as a delimiter instead of a newline.
  2. While the user interface of find provides a primitive albeit powerful domain-specific programming language consisting of “options”, “tests”, “actions”, and “operators” that need to be given in a certain order, the ff user interface merely offers a set of position-independent options that can mostly be combined at will.

ff is still in development. The source code is available from its public Git repository.


A set of tools to facilitate random note-taking in the terminal

Written in: Bash
License: ISC

Quickly jotting down a few notes in their preferred text editor is, in itself, probably a non-issue for most computer users. That said, having to decide on where to save them and making sure they don't get lost in the vast expanses of a multi-gigabyte home directory filled with tens of thousands of files can sometimes make for an uninvited challenge.

mote aims to get these problems out of the way by

  1. storing notes in a pre-defined location in chronological order
  2. making stored notes easily searchable, browsable, and editable

The program will use the user's preferred text editor and pager as defined by the shell environment.

mote is, however, not intended to be useful for structured note-taking. It is, in essence, just a notepad with date stamps to facilitate immediate, distraction-free “mind-to-file” action, the results of which are to be recovered later and mostly ordered and edited elsewhere.

mote is still in development. The source code is available from its public Git repository.

An ongoing attempt at doing a website right

This site is being built using a still evolving combination of Unix command-line tools strung together in Bash. Manual editing is done almost exclusively in Nano.

There are basically two ideas behind this: One, to preserve the freedom of writing web pages by hand in your favorite text editor but at the same time provide a remedy for the headaches usually coming with this approach. Two, to produce web pages that are plain and valid HTML and CSS only but nevertheless have a dynamic appeal.

Pages are written in HTML 4.01 because I'm more than slightly skeptical about the merits provided by HTML5. The color scheme has, for the most part, been limited to the traditional “web-safe” 216-color palette (visited links being the sole exception). This is not so much to ensure compatibility with older systems but rather because experience tells me that limitation is good, as long as it doesn't hurt usability.

And just in case you should not have a graphical environment, these pages will be fairly readable in your preferred text-only web browser too.

Also, being nothing but HTML and CSS (except for the logo) should give them a considerable advantage in terms of rendering speed.

Last but not least, as all internal link paths are relative and none of the site's functionality relies on external resources, you could simply download it and use it locally without any modification. Downloading the whole site can be done using, e.g., wget -r Currently, this will amount to less than 400 kilobytes on the receiving side.


A graphical application launcher (run dialog) written in Tcl/Tk. I'm creating this to eventually replace gmrun on my system. This is, however, not an attempt to create a gmrun clone. Rather, mrun aims to resemble the run dialogs found on Windows as well as in past versions of GNOME, KDE and Xfce. It's taking form slowly.

Contributions to other projects

Apart from my personal projects, I'm also involved with or have contributed to a few others, including the following.

Devuan GNU+Linux

I spent about one year on this project between 2017 and 2018, trying to help work out a solid structure for their documentation, putting together portions of the user's manual to-be and taking care of a few other things here and there.


In 2017, I started working on completing and improving the German translation of the Openbox window manager. Finished in February 2018, the PO file was made available on Openbox' bug tracker in March of the same year.


Over the years (since about 2017), I've also been involved with drafting, writing, and editing documentation for various other software projects, such as Adélie Linux, Dragora GNU/Linux-Libre, NetBSD, Tcl, and the Trinity Desktop Environment.

Last changed: 2024-01-27