My Linux desktop setup

I run Arch Linux both at work & at home and I use a few utilities between them to make them reliable and myself productive. Here’s an overview of some of the choices I’ve made to make it that way.


Environment / window manager: Cinnamon

I use Cinnamon because I find it to be responsive enough on modern hardware while still looking clean and well-styled. I use a dark theme with it.

Background randomizer: Variety

Variety is something I found last year that sources backgrounds from various places across the internet including Reddit, Bing, NASA, and Flickr. I have it set up to point at my backgrounds folder as well and to save anything I favorite to that folder, which is synced between my desktops with Nextcloud (I’ll write more on that later, I’m sure).

Launcher: Kupfer

I first got hooked on keyboard-based launchers when I was running KDE. When I switched to something lighter (at the time, XFCE), I wanted a similar launcher. I’ve got Kupfer set up to show itself when I hit Meta+Z, which is something that comes easily to hand for me but might not for you. Kupfer can do a lot more than just launch programs, though I tend to only use it as a launcher, including: automatically open up a web search, control media, and find files.

Terminal: Guake

I use Guake, a terminal which is named that way because it drops down from the top of the screen like the Quake terminal. Having a terminal that opens exactly where I expect it to every time is excellent for productivity. I have it set up to open on Meta+Shift+Enter, which is a relic of my time using XMonad as my window manager. If you use KDE there’s a version called Yakuake which is similar but build with the KDE toolkit rather than the GNOME one.

Blue light filter: redshift

Redshift is a simple out-of-the-box blue light filter. Same thing as f.lux, but available in my package manager right away.

System management

Network manager: netctl

netctl makes networking a breeze. Connecting to corporate / university networks is difficult without a network manager (although if I just figured out how to use WPA_supplicant I suppose I’d think it was simple - whatever). I’ve tried NetworkManager and wicd, as well as whatever one comes with ElementaryOS, and nothing’s been as simple as netctl. You copy the right example config from /etc/netctl/examples (which includes one for the PEAP/MSCHAPv2 university networks) to /etc/netctl, fill out your username and password, and netctl start my-network. If you want it always on, netctl enable my-network. Simplicity itself.

Bootloader: systemd-boot

I’m running systemd-boot on my laptop at home. I have found it’s a bit easier to work with than the two-stage modern GRUB setup (edit this config file, then rebuild the real one), and setting it up extra boot menu entries is intuitive.


Terminal multiplexer: screen

Screen’s installed everywhere, unlike tmux which I would regard as strictly better. Learning to use screen is more widely applicable. I can’t wait for the day when tmux is available by default on every server distribution, but we’re not there yet.

Configuration management: Ansible

Ansible allows you to setup your servers / VMs the way you want them to be without any preconfiguration on them and without any extra infrastructure. It runs over SSH so it uses the connection and privilege you already have. Most of the things you can do are idempotent - you describe the state you want the server to be in (this config file installed here, this package installed, this service running) and Ansible goes and does the steps it needs to in order to make it so. It’s human readable, which is a big plus as well when learning it / teaching someone else.

X application multiplexer / CSSH replacement: xlax

Just discovered xlax today while looking for something that would allow me to simultaneously use multiple SSH sessions in terminals with modern fonts and colorschemes (in short, a replacement for ClusterSSH). I found xlax, which allows you to simultaneously send keystrokes to an arbitrary selection of X windows that have already been opened (it doesn’t have to spawn its own child terminals). This is better & more flexible than what I was looking for, & it allowed me to work with my pair of identically configured redundant switches much faster than working with each individually.

Text editor: vim

vim’s hard to learn, but I find it to be more productive (at least it feels that way, even if it’s just on par with mouse-driven text editors, which I think is good enough). Here’s my vimrc which I intend to cover in more detail later. Short rundown is: Sublime’s colorscheme, lightweight status bar, extra syntax highlighting dialects, and asynchronous linting.


This is what I’ve got installed on all my Linux desktops. What did I miss? What do you use that I should start using?