FreeBSD
January 18, 2020

Ricing your *nix desktop | An overview

Desktop environments are just a pre-packed bunch of software from which you'll maybe need a ten percent. They are great for users that just want to strat using the OS, but if you want more control on what you install, what you use and how it behaves then it has to be done by hand.

The term "ricing" was inherited from the practice of customizing cheap Asian import cars to make them appear to be faster than they actually were.

We're not going to make anything appear more of what it is but choose the exact amount of software needed to cover our needs, and eventually making it look cool.

Just like a recipe, for the basic setup we need:

  • A window manager. (dwm, bspwm, awesome, i3)
  • A panel bar. (lemonbar, slstatus, polybar)
  • A terminal emulator. (st, xTerm, urxvt, termite)
  • A text editor. (vim, sublime, vscode)
  • A program launcher. (dmenu, rofi)
  • A network-manager.
  • An internet browser. (firefox, vimb, qutebrowser)
  • Some sort of file manager. (nnn, ranger, fff, vifm)

You also can select the needed elements from a Desktop Environment and set up your custom DE flavor that fit your needs, without the "extra fat".

All the items from the list are "kind of" unrelated to each other as they have their own unique function to achieve. The cool thing is that with this level of modularity you can tweak and change almost anything independently.

Although some programs require to change the source code and compile them again like the suckless tools, most programs allow the user to tweak them in configuration files. Each program uses it's own syntax for understanding configuration content, but they're all readable text files. Those config files are the ones named dotfiles.

dotfiles due to local configuration files names start with a dot (.)

Dotfiles are separated from the program's directory. There's no "official rule" for where to place the dotfiles. Some programs need their own path to read their configuration files but for general purposes, let's organize our $HOME directory like this to maintain an order structure:

├── .config
├── .scripts
├── .fonts
└── usr
    ├── documents
    ├── images
    ├── downloads
    ├── music
    └── tmp

Usually configuration files for most of the programs lie in the .config directory and the custom fonts that we may use to change the look of the desktop are inside the .fonts directory.

The .scripts directory is the place to store all our custom scripts. They may be used in X daemons to perform actions or just by executing them trough the terminal.

This example guide is going to be explained with the following programs' combination:

bspwm | urxvt | lemonbar | vim | nnn

As mentioned above, almost everything is modular so you can opt to install different components. For better read this is going to be placed in a series of posts, one for each component.

This is an index for the posts:

  1. about ricing
  2. window managers
  3. terminal emulators
  4. status bar I
  5. status bar II
  6. vim
  7. final tweaks

A complete repository with a ready-to-go FreeBSD window manager config based on this guides can be found here.

Go make some epic working place, and have fun ricing (: