This thread was made at the request of a specific user.
Note: I'll be using superscripts to denote foot notes. For example, if there's a number slightly above a word (example¹), then it corresponds to a foot note, and in this example, the first foot note.
The act of "ricing" or customizing your computer is something big these days. Especially in the *nix community. People love doing it, and people can make some absolutely stunning things too. For example, look at this desktop made by a person under the alias "nnkd".
He made a sci-fi inspired desktop using a modified version of bspwm and openFrameworks¹. Absolutely awe inspiring. These are the kinds of things that one can do, but all it requires is creativity, and the know how. Unfortunately I won't be telling you how to make Dex UI (the name of nnkd's sci-fi desktop), but I will be teaching you the basics.
The first step to customizing your desktop is deciding if you want a DE, or WM. DE stands for a desktop environment, these are applications such as XFCE, GNOME, KDE, etc. A few more will be named below. Then there's window managers. These are applications such as Openbox, bspwm, 2bwm, ratpoison, etc. Now you may be asking, "what's the difference?" The difference is, a desktop environment is an entire suite. It comes with many more applications for daily work, and it has its own window manager as well. Window managers are what they are named. All they do is manage windows, and that's it.
Some desktop environments:
GNOME
XFCE
Budgie
Cinnamon
Enlightenment
LXDE
KDE/KDE Plasma
MATE
There are many more desktop environments that I've listed, but those are some of the most common that you will find. Some of them are even more customizable than others. For example, you can replace the window manager in XFCE and substitute your own.²
There are tons of window managers, more so than there are desktop environments. Some window managers are even taken directly from desktop environments, so you can run them without the actual desktop.³
Here's a list of some window managers:
Openbox
BSPWM
Ratpoison
2bwm(/3bwm)
Enlightenment (both DE and WM share the name)
FluxBox
wmutils*
Mutter (GNOME's window manager)
XFWM (XFCE's window manager)
Window Maker
*wmutils is NOT a window manager, rather a set of tools that, if used in unison, can create a window manager.⁴
There are also different kinds of window managers. There's floating/stacking, dynamic, and tiling. Tiling window managers create windows in a tiled format. They are partitioned a specific amount of screen space, and don't exceed that, and are resized when more windows are added to the screen. Floating/stacking window managers float on the screen, and can be resized and moved as the user wishes, not by a preset algorithm or set of functions. Dynamic window managers can switch between the two, for example one workspace can be tiling, another floating, or simply toggling between floating
Once you have decided on a window manager or a desktop environment, you'll want to start off basic with a wallpaper and a color scheme. And a terminal. One of the best places in the world to find your terminal color config is terminal.sexy, you can use pre made color schemes, import or create your own, and export to a few various different configuration types, ranging from XFCE terminal, to URxvt, to even the normal non-cli shell.⁵
If you have a wallpaper and want to get a color scheme from there, you can use a few different tools. Of course you can do it all by hand, but there's tools to make your life easier as well. URNN⁶, themer.py⁷, and many more (some of which will be closed source, and you can of course write your own).
General rule of thumb, and you don't have to follow this, but it's generally a good idea to start putting your configuration files in ~/.config/. That's where a lot of programs put them by default, and that way it's easy to keep files organized.
One thing you will want to figure out is what kind of programs you want for your workflow, for example, if you are using a tiling window manager, you may not a very intrusive file manager, that creates pop ups like hookers pop anti-pregnancy pills. Unfortunately I haven't used all of these, and because of that, the only thing I will be separating them by is whether they have graphical user interfaces, or are command line based. You will have to decide which is right for your workflow. Also note that these aren't complete lists, programs will be left off, because I am only one person.
File Managers
GUI
Thunar
Nautilus
PCManFM
Nemo
Dolphin
SpaceFM
CLI
Text Editors
GUI
Vim
Sublime Text
Atom Editor
Geany
Emacs
CLI
Browsers
GUI
Firefox
Google Chrome/Chromium
Vivaldi
Opera
So, you've gotten a color scheme, a wallpaper, and a wm/de picked out. Where do you start? Well, if you're using a desktop environment, you'll want a theme and an icon theme. Among the millions of themes to pick, two of the most popular are Numix, and Moka. Each has their own respective icon theme. Two more extremely popular themes are Vertex and Arc.⁸
If you're using a window manager, you may want to refer to the window managers documentation, or if there is no documentation, simply look up how to configure the window manager to your liking. Beware, some window managers that are written in various languages will require knowledge of that language in order to configure them.
However, because this is just a general thread, I cannot give much more information. I do, however, have tutorials for specific window managers, or programs that I write. Check the 9th foot note for links to those.
Customization goes far beyond just changing aesthetics of your desktop, however. Or rather, it can. For example, you can change the shell that your user runs. There's quite a few shells, and here's a few to list.
POSIX shell
BaSH
KSH
ZSH
Fish
After installing, to change your shell, open a terminal and type chsh -s /bin/{your desired shell's name here}
. For example, after installing zsh, you'll want to execute chsh -s /bin/zsh
.
Speaking of terminals, there's something we haven't covered. Which terminal should you use? There are various terminal emulators that will meet your basic needs. Some better than others. Here's a quick list, and the perks of them. There comes a point where the terminal itself just becomes a copy and paste of another, and its functionality is the same as another. So, not all of them have perks.
URxvt - Extremely customizable terminal emulator, not for easily intimidated. Configuration may be tough, but you must remain vigilant.
Gnome Terminal - Made for gnome specifically, really. Has tabs, colors, various settings for psuedo-power users.
XFCE Terminal - Pretty much the same as gnome terminal.
Terminator - Same as gnome terminal, hell, it's based on gnome terminal. Also includes panels, that are resizable, in a single window (Gnome terminal may have this, but I don't think it does. I may be wrong).
XTerm - Basic terminal for X.
If you are starting X directly after boot, and there is no display manager (covered in the next section), then you'll want to edit your xinitrc file. This should be placed in $HOME
under .xinitrc
.
Because the file may change based on your window manager or desktop environment, here's what the default X file should look like. Execution of window managers, key binding managers, etc. should be put AFTER the following code block.
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/?* ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
Starting X from the linux console can be done two ways. Well, a few, but I'll be constricting it down to two. Either by executing startx
manually, or putting it in your shell's configuration file. If you didn't change the shell, edit ~/.bash_profile, and place startx
at the bottom of the file. If you changed the shell, look at the documentation, or look up "Starting X from {shell's name} on login".
If you have a display manager, all you will have to do is locate the option box to change the window manager or desktop environment. Generally speaking, this will be along the top or bottom panel of the display manager after the system boots up, but it may also be a dropdown (in gnome's case).
Changing the theme of the display manager will vary, so once more, you will want to read documentation.
Here's a small little list of some display managers that can be used, should you want to install one (other than the default one included in the operating system you installed, or assuming your operating system doesn't already have one installed).
GDM
LightDM (has multiple forks)
KDM
SLiM
XDM
LXDM
Because this is a general customization thread, I cannot cover enabling the display manager on init, because not all operating systems use systemd or sysvinit (or another init script).
Foot notes
1.
- https://wiki.archlinux.org/index.php/desktop_environment
- https://wiki.archlinux.org/index.php/Window_manager
- https://lewd.sx/t/window-managers-the-unix-way-with-wmutils
- http://terminal.sexy/
- https://github.com/nixers-projects/urnn/
7.
- One thing to note is that if you're using a window manager, and you still want to use a theme and an icon theme, you'll need an external program to be installed so that you can change these. Should you decide to choose OpenBox, the recommended program for this task is ObConf. Another program that can be used to change themes is LxAppearance. You can of course use your own, that you find, or that you make.
If you've made it to the end of this thread, congratulations. You've earned a cookie!
You may request specific tutorials below, and I'll do my best to make a tutorial for you. 🙂
Also take a look at the current unix customization thread on Lewd. #shamelessselfpromotion
https://lewd.sx/t/unix-customization-thread-v2
Also, if there's something you think I missed, post below! I'll be sure to edit this post.