Linux configs for minimalists
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:
- Hardware that is easy to modify (firmware)
- Arch Linux
- X11
- DWM
- Vim
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 HP machine, so x86_64 with booting using UEFI.
- On the PBP the Tow Boot was installed on the SPI so it doesn't mess up with you main drive's partitions.
I'm not sure if the HP has UEFI support, I plan to check this soon.
Distro
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.
X11
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:
/etc/X11/xorg.conf.d/30-touchpad.confSection "InputClass" Identifier "touchpad" MatchIsTouchpad "on" Driver "libinput" Option "Tapping" "on" Option "NaturalScrolling" "on" EndSection
On the HP I just change the Identifier, and remove the tapping option.
DWM
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
Neovim
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.LSP
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:- Go to lspconfig git: git and download the zip file, or a release you want.
- Copy the plugin folder into ~/.config/nvim/.
- Copy the lua folder into the same place.
- Configure each client as the README file indicates.
Treesitter
This plugin is installed as a separate package. The steps are:-
Create the following folders:
$home/.config/nvim/pack/nvim-treesitter/start/nvim-treesitter - Download the zip from nvim-treesitter's repo: github
- Unpack the contents directly into the created folder, do not create a containing folder like nvim-treesitter-master.
Theme
I use a modified version of rams, found in: GitHub.Xresources
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! 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