• Report Links
    We do not store any files or images on our server. XenPaste only index and link to content provided by other non-affiliated sites. If your copyrighted material has been posted on XenPaste or if hyperlinks to your copyrighted material are returned through our search engine and you want this material removed, you must contact the owners of such sites where the files and images are stored.
  • Home
  • -
  • New Pastes

The Art of *Nix Customization

  • Thread starter XMAN
  • Start date Sep 13, 2021
X

XMAN

Well-known member
Joined
Jul 12, 2021
Messages
32,398
Reaction score
203
Points
63
  • Sep 13, 2021
  • #1
The Art of *Nix Customization 05-14-2021, 07:47 AM #1
(05-13-2021, 06:25 PM)Skullmeat Wrote: I seriously want to learn to customize linux like that.

Table of Contents

  1. Why Should You Care?
  2. Window Managers and Desktop Environments
  3. Shells, Terminal Emulators and CLI Tools
  4. Graphical Applications
  5. Resources
  6. The Art of *Nix Customization
  7. Footnotes



Why Should You Care?

Simply put, your desktop is your daily workflow. There are several instances where you may want to change something, or maybe you just don't like how something looks. In an ideal world, you do not work around the weaknesses of your computer, it works around yours. Things like accessibility features should not be an after thought with additional functionality, they should be the initial function of the system.

Customization of a system is an art that has been done ever since computers first existed. Don't like something on your system? Get rid of it. Don't like the look of something? Change it. What's sad is that nowadays, this is a dying art. People are content with programs that over extent their reach of the system, and its for the simple fact that they don't know any better, and don't know how to get started.

Customizing a system is a craft. You may have a grand idea that you'll find that you just can't execute on. It takes time, it takes a little bit of practice, and it takes a lot of passion. It's kind of like a project car, you can "finish" it, but it will never be complete.

At the end of the day, a system that has lots of love takes a lot of elbow grease. In some cases, you may not want to put in that additional elbow grease. In some cases you may. Somethings are easier to change, and somethings are harder. The only thing that stands between you and success is your dedication. This thread will provide you the basis for customization, teach you some terms used in customization communities, and give you resources to start. This thread is written under the assumption that you have, at the minimum, an installation that has a functioning display server.

Unfortunately I can't write up tutorials on configuring every thing, but I can inform about them, where to find them, and from there you can extrapolate information on how to actually do the installation and configuration.



Window Managers and Desktop Environments

Window Managers

A desktop at its bare minimum is composed of one component. That being the window manager.

If you were to just run start the X server with a program, a window would open in the top left, with a black screen. You will not be able to move said window, resize it, and if somehow other windows were spawned, you wouldn't be able to do anything with those windows either. This is why window managers exist. Their name is mostly self-explanatory; they are managers for windows. The very least they will do is allow your to move and resize windows. Others provide more functionality, like automatically sizing and position windows. On top of that, they may provide "decorations," which are the borders around a window, as well as the close, maximize, minimize buttons, and more if you choose to configure one as such. There are two kinds of commonly used window managers. Tiling and floating window managers.

Tiling window managers will automatically size and position windows for you, often times in a configuration that follows a set algorithm. These are often times used to maximize usability and screen real estate. Most of the time, windows will not overlap when these kind of window managers are used.

Here are some tiling window managers
  • bspwm - binary space partitioning window manager. Windows are leaves of a binary tree.
  • i3 - A dynamic tiling window manager. Windows are tiled automatically, and the end user can change how a window is tiled or positioned by keybindings during runtime.
  • custard - A manual tiling window manager that utilizes a virtual grid to size and position windows.
  • yabai - a tiling window manager based on bspwm created specifically for macOS.
  • sway - A Wayland compositor based on the i3 window manager.

Floating window managers (also referred to as stacking window managers) allow users to freely size and position windows, normally with use of the mouse. These window managers are often times easier to setup and configure, but provide less of a "power user" experience.

Here's a list of floating window managers.
  • openbox - An XML-configuration-based floating window manager, known for its ease of use and decorations.
  • 2bwm - A floating window manager that has simple window decorations of only borders.
  • swm - A super simple window manager controlled with only left and right mouse buttons, configured through config.h. Deprecated for wmutils¹
  • xfwm - The window manager of the XFCE desktop environment.
  • mutter - The window manager of the GNOME desktop environment.

Now, there is a bunch of other "in-between" paradigms for window managers. For example, there are dynamic window managers which allow a user to either have windows tile or be free floating, such as awesome. Finding your window manager is going to be just a matter of testing them out and seeing which ones you like or dislike. Some are much easier to configure than others, but they all mostly provide a different experience.

Desktop Environments

Often times in the *nix community desktop environments and window managers are used interchangeably. Now, in a realistic conversation, you wouldn't necessarily correct someone for mixing the two up, but they're not the same.

A desktop environment is a suite of tools that provides a user with applications for daily use. A desktop environment often times includes window managers in their packaging. For example, xfwm4 and mutter, which were mentioned earlier in the floating window manager section. You do not need a desktop environment to set a desktop up.

Commonly used DEs include the likes of GNOME, XFCE, Cinnamon, MATE, Budgie, the list goes on. Often times desktop environments are installed for you when you install a new operating system (such as Debian, which in its default installation path includes GNOME). Each desktop environment provides a different experience than others.

For example, while minimally customizable, GNOME provides the most structured set of utilities out of the box, and is also the most well known desktop environment. GNOME allows you to theme the desktop using GTK themes, icon themes and the like, but outside of GNOME extensions is not all too customizable. XFCE on the other hand is known for its customization. You can easily configure bars, menus, your desktop and the icons, and you can theme it using GTK themes and XFWM themes, but it's not as refined as GNOME is. Like window managers, desktop environments are purely your taste. You won't know what you do or don't like unless you try them out. Often times your desktop environment is installed as a group of packages through your package manager, and not a single package.

For your convenience, here are links to some commonly used desktop environments so you can browse around.
  • GNOME
  • Budgie
  • XFCE
  • Plasma²

For those users who are running only window managers and wish to not install an entire desktop environment, various applications are used to supplement the functionality provided out-of-the-box with a desktop environment. An example being bars, desktop icons, keybindings. These additional utilities will be discussed more in depth in the Resources section.

Changing your desktop environment or window manager will depend on your system setup. If you've got a display manager, you'll need to create a .desktop file. If not, you'll need to modify your .xinitrc.



Shells, Terminal Emulators and CLI Tools

Now, a very common aspect to customizing your linux installation is going to be your shell. Your shell is basically how you interface with your computer. Shells provide drastically different scopes of functionality.

A very popular and commonly used shell is ZSH. The Z shell provides verbose autocompletion, and various convenience functions like automatic directory changing. Often times it's one of the first things people do. Shells are changed at the user level. There are various other shells that can be used as well. Most commonly, bash is the default shell provided by a Linux installation to the user.

The shell is set per user, but there is also a system shell. This is what's located at /bin/sh. Commonly the system shell is either bash, dash, or POSIX shell.
  • zsh - Powerful interactive shell, often used as a user shell and extended with a configuration management framework called oh my zsh
  • bash - GNU shell that is sh compatible and incorporates features from csh and ksh. Often times the default shell when users are created on a system.
  • dash - A POSIX-compliant shell built for speed and size. The default system shell for Debian and some Debian-based distributions.
  • fish - An easier to script shell with history, completion, and automatic suggestions, configured through a web application.

Why should you care about a shell? Well, in short, since it's how you interface with the system, you probably want the most easy to use or convenient. The system shell is what the system defaults to when a UID does not have a specific shell set or when the shell goes unchanged, whereas the user shell is used when ran by your specific UID.

To change your shell, you'll make use of the chsh command.

Code:
$ chsh -s [path to shell]
# Example of changing to zsh
$ chsh -s /bin/zsh

The next immediate interface with your computer is going to be your terminal emulator (often referred to as just the terminal). Foregoing the history lesson on actual terminals and why we have terminal emulators nowadays, when you first launch into your desktop, you'll want to start up a terminal.

If you're using a desktop environment, you'll have a terminal emulator already. Just search "terminal." There's various terminals which provide differing levels of customization.
  • rxvt-unicode - Commonly referred to as just urxvt, configured through Xresources and uses perl for extensions.
  • st - An extremely customizable terminal emulator that is extended through patches and configured via a config.h file. Not for the faint of heart.
  • xterm - The de facto default terminal emulator for X.
  • alacritty - GPU accelerated terminal emulator.

Within your terminal emulator and your shell you'll find that you'll need to manage your system. Now, with a desktop environment, a lot of system management is going to be done through the use of graphical applications. But for those that don't, here's some command-line interface utilities.
  • File management
    1. ranger
    2. cfm
    3. cd, cp, rm, touch, etc.
  • Text editing
    1. neovim
    2. xi³
    3. nano
    4. vim
    5. emacs



Graphical Applications

In the same way that you can manage your system through a set of command-line tools, you can do so using graphical applications. Often times you won't want to start up a terminal emulator just to delete a file from your desktop. Here's a shotgun-round-esque list of graphical applications you can use.
  • File Management
    1. Nautilus - "Files" in GNOME
    2. thunar - Bundled with XFCE
    3. pcmanfm
  • Text Editors
    1. Atom
    2. geany

Resources

Here are various resources so you can get more information on various topics, or tools you can use to help customize your desktop.

https://wiki.archlinux.org/title/Window_manager - Information regarding window managers
https://wiki.archlinux.org/title/desktop_environment - Information regarding desktop environments
http://terminal.sexy/ - Creating or getting color schemes for you terminal
https://unsplash.com/ - Desktop wallpapers
https://reddit.com/r/unixporn, https://reddit.com/r/unixart - *nix customization communities

Bars are often times used in desktop environments, but if you only use a window manager there are solutions that allow you to have a bar.

  1. polybar
  2. bar, by LemonBoy (often called lemonbar)
  3. tint2

plymouth - Provides graphical boot
conky - The "rainmeter" of *nix
glava - OpenGL audio visualizer

Compositors are used to give transparency effects (in some cases, shadows, rounded corners, and blur as well). Here are some often used compositors. Compositors are for X, as Wayland uses compositors to provide the functionality of window managers. Desktop environments use their own compositors. macOS also uses quartz compositor, which provides its window management functionality out of the box.

  1. compton
  2. picom - fork of compton
  3. compiz

Display managers provide a user a means to login and select specific desktop environments or window managers to use. These are used in place of your linux console as they start on boot.

  1. Gnome Display Manager
  2. LightDM
  3. SLiM

For the more die-hard *nix users who want to change out some system components

  1. OpenRC - Dependency based init system. Default for Gentoo.
  2. runit - Init system with service management
  3. hummingbird - Lightweight system init built for fast boot times
  4. systemd - Suite of system utilities (init, service management, journaling, etc). Default for most distributions.

Package Managers

  1. Snap - Container based package manager.
  2. Nix - Package manager of NixOS, easily portable to other distributions.

Footnotes

1. wmutils is not a window manager, but rather a set of utilities that allow users to directly control windows.
2. Unlike most desktop environments, KDE Plasma is written using the Qt toolkit instead of GTK. This means you won't be able to use GTK themes you installed to theme the desktop.
3. Xi is a backend for an editor. To make usage of it, you'll need a frontend. Frontends can be found on the GitHub page for Xi. Explore what's right for you.

Though it wasn't covered, there are two terms you should know about if you wish to partake in a *nix customization community.

"dots" - Configuration files. This name comes from configuration files often times being placed under .config in your home directory, but as a general term can refer to any configuration file.
"rice" - Someones desktop or setup. This comes from the car community; ricers which look faster or more powerful than they actually are.

The Art of *Nix Customization

Customization goes much deeper than just the eye can see. Literally. The great thing about most *nix operating systems is that they've got some degree of modularity, thanks to the Unix Philosophy's "do one thing and do it well" rule. You can go down a rabbit hole as deep as changing out your actual package manager, changing out your PID 1 (system init), your service management, wireless management, the list goes on.

You're never forced to use one specific tool or toolset. And with enough time and effort, you can force something to be different. As stated earlier, the only thing that stands between you and success is your dedication, thus is the art of *nix customization.
 
Upvote 0 Downvote
You must log in or register to reply here.
Share:
Facebook Twitter Reddit Pinterest Tumblr WhatsApp Email
  • Home
  • -
  • New Pastes
  • Terms and rules
  • Privacy policy
  • Help
  • Home
AMP generated by AMPXF.com
Menu
Log in

Register

  • Home
    • Go Premium
  • Go Premium / Advertise
  • New Ad Listings
  • What's new
    • New posts
    • New Ad Listings
    • Latest activity
  • Members
    • Registered members
    • Current visitors
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?