{{define "lang"}}en{{end}} {{define "author"}}Brian Mayer{{end}} {{define "title"}}Linux configs for minimalists{{end}} {{define "desc"}}Configuration files and decisions for minimalist Linux users.{{end}} {{define "created"}}2023-06-27{{end}} {{define "maturity"}}seed{{end}} {{define "content"}}

This guide is based on my experience and choices concerning my linux PC, I try to create a very simple system that uses the fewer extra programs to run. So this may not work for your distro, feel free to contribute patches that make this work on other systems.

The initial decisions are:

The hardware part

I have a Pinebook Pro (PBP) laptop, this means my archtecture is aarch64 and it boot using Tow-Boot. And my desktop is an old Dell machine, so x86_64 with legacy BIOS (no UEFI unfortunatelly). This made me take some decisions that are not optimal, but I plan to slowly migrate some things.

I'm not sure if the Dell has UEFI support, I plan to check this soon.


I chose ArchLinux for many reasons, but I feel compelled to try some BSD or Alpine. ArchLinux is super lightweight, simple to configure, it gives you a lot of control over the OS and the AUR system let's you install basically anything using the package manager. Alpine has the same advantages plus having a smaller footprint. This is desired for me since my hard drive is small.

I need to setup wifi, and I only install wpa_supplicant. To connect to networks I add them using wpa_passphrase:

sudo wpa_passphrase name password >> /etc/wpa_supplicant/wpa_supplicant.conf

You can do it for multiple networks, the other half is getting an IP. For this I enable dhcpcd on systemctl, and add the wpa hook.


I chose X11 over Wayland mainly because of better support, better documentation and maturity. This was sad, I really wanted to have a system running on wayland, but the last time I tried I had many difficulties, wayland still heavilly dependent in X11, has fewer software options and it is somewhat harder to configure. Wayland needs more time to mature.

So far I only need to add natural scrolling, this is the config:

Section "InputClass"
        Identifier "touchpad"
        MatchIsTouchpad "on"
        Driver "libinput"
        Option "Tapping" "on"
        Option "NaturalScrolling" "on"

On the Dell I just change the Identifier, and remove the tapping option.


DWM is my window manager of choice, I'll not comment on that as we all know its qualities. I change some things on config.h, I add:

#include <X11/XF86keysym.h>

And I start DWM using xinit, here's a minimal .xinitrc:

sysmon &
exec dwm


Before Neovim came out I was a vim user, but I always had a lot o pain configuring it. Neovim makes it easier but there is still work to do. For me only LSP, TreeSitter and a color theme are enough, so those are explained here.


What I have about vim and neovim is the difficulty to install plugins: there are many plugin installers, and they are not trivial to install and no one tells you how to install a plugin from source. So I managed to install plugins without any plugin manager. To install LSP:
  1. Go to lspconfig git: git and download the zip file, or a release you want.
  2. Copy the plugin folder into ~/.config/nvim/.
  3. Copy the lua folder into the same place.
  4. Configure each client as the README file indicates.
I use the suggested configuration from here on my init.lua file.


This plugin is installed as a separate package. The steps are:
  1. Create the following folders:
  2. Download the zip from nvim-treesitter's repo: github
  3. Unpack the contents directly into the created folder, do not create a containing folder like nvim-treesitter-master.


I use a modified version of rams, found in: GitHub.


Some terminal apps use xrdb to load configurations, some examples are xterm, urxvt and xpdf. The config file normally is located in ~/.Xresources, and can be loaded running xrdb ~/.Xresources. I like to set my grayscale theme for urxvt and my fonts using:
! URxvt settings
Rxvt.scrollBar: false
URxvt*font: xft:JuliaMono:size=11
URxvt*boldFont: xft:JuliaMono:bold:size=11
URxvt*italicFont: xft:JuliaMono:italic:size=11

URxvt.iso14755: false
URxvt.iso14755_52: false
URxvt.geometry: 120x42
URxvt*metaSendsEscape: true

*.background:   #000000
*.foreground:   #bbbbbb
*.cursorColor:  #888888
*fadeColor: 	#222222

URxvt*color0:  	#ffffff
URxvt*.color8: 	#ffffff

! git diff-
URxvt*.color1: 	#993333

! compressed files
URxvt*.color9: 	#888888

! types, git diff+
URxvt*.color2:  #eeeeee
URxvt*.color10: #cc5555

! statements
URxvt*.color3:  #cc3333
URxvt*.color11: #ff2222 

! directories
URxvt*.color12: #ffffff

! some things
URxvt*.color5:  #eeeeee

! strings
URxvt*.color13: #aaaaaa
URxvt*.color6:  #666666

! base functions
URxvt*.color14: #555555 

! crontab comments ledger names
URxvt*.color4:  #777777

! comments
URxvt*.color7:  #444444 
URxvt*.color15: #333333