DIY Desktop Environment

29 april 2023

I have a pretty severe case of DE-Hopper-itis, and I blame my younger self discovering i3 for that. Ever since then, I again and again get fed up with having to configure everything myself in WMs like i3 (or even dwm a few years back), I switch to a DE like xfce or gnome so things “just work”, I miss the workflow of a tiling window manager, repeat.

I’ve tried to fix that by stuffing all of my configs into a dotfiles repo, but that wasn’t enough. I wanted to automatically install dependencies and configs. So, this time, I’ve decided to write my own Arch PKGBUILD package. I have no plans to upload it to the AUR or port it to any other package managers, as it’s a very simple package and I don’t expect anyone else to use it.

It’s available on my gitea (not tildegit, as I felt that it has nothing to do with the tildeverse). It includes an xsessions .desktop file, a few config files, and, most importantly, a startup script (think, like, startxfce4).

Startup script

This is probably the most important part. You need a good startup script in order for window managers like i3 to interface nicely with Display Managers. The very first thing ekkie-de’s startup script does is setup gnome-keyring. Not because it’s the best keyring, but because it’s… the best SSH-Agent, at least for X11.

Unlike OpenSSH’s ssh-agent, gnome-keyring automatically adds all SSH-Keys it can find that also have a public key in ~/.ssh. However, it doesn’t decrypt them, which means you don’t need to type in all of your SSH-Key passphrases at login. When you then try to SSH to some server, the gnome-keyring will present all public keys it knows, and will only ask you to decrypt a fitting SSH-Key if it hasn’t already been decrypted this session.

Apart from that, the startup script will choose which config file to use for a few of ekkie-de’s apps: If $XDG_CONFIG_HOME/ekkie-db/configfile exist, that one will be used. If it doesn’t, /etc/ekkie-db/configfile will be used as fallback. That allows me to ship default configs that I like, while still allowing further per-user configuration.