Desktop Customization

Introduction to Desktop Customization in Linux/BSD.

Click download in: [PDF], [Impress]

All slides in: [slides]

About Me πŸ™‹πŸ»β€β™‚οΈ!

my photo

Yet, another underachiever πŸ‘».

But hey, I have my own dotfiles repository πŸŽ‰.

About This Material 🀠

After watching this, you will understand:

  • The difference between GUI in linux or BSD.
  • What customization can be done in linux or BSD.
  • Choices to leverage your desktop appealing.

So that you can pick what customization suitable
for you for daily basis usage.


This material contain a bunch of terminal screenshots.
It does not mean that your daily desktop is all about terminal.

How Modular is Linux πŸ€”?

  • Package Manager:
    APT, ALPM, DNF, XBPS, Zypper, Portage
  • Init:
    SysV, systemd, openRC, runit, S6.
  • Filesystem:
    ext4, XFX Reiserfs, BTRFS, ZFS.
  • Standard C library in OS:
    glibc or musl.
  • DE (Desktop Environment):
    GTK+ based, QT based, enlightenment.
  • WM (Window Manager):
    Stacking, Tiling, Dynamic, Compositor.

How Modular Linux is🀠

Dive into Linux Subsystem
for Personal Educational Purpose.

[Learning Linux Diversity]
Yet Another Presentation.

What Customization πŸ€”?

  • DE/WM Customization:
    window manager, panel, notification and the most ingredient called wallpaper.
  • Terminal Customization:
    shell, prompt, pixel-art, and multiplexer.

Terminal ricing along with CLI application,
are part of desktop ricing.

The Difference: DE or WM πŸ€”?

  • Desktop Environment:
    Full Experience: Panel, File Manager, Application.
  • Stacking Window Manager:
    Stripped Down Version of Desktop Environment
  • Tiling Window Manager:
    Non-overlapping screen real estate.

When you customize a Window Manager,
you are basically making your own Desktop Environment.

Desktop Environment Example 🀠

The good Cinnamon (GTK+3) based.

DE Example: Cinnamon 3D Switcher

DE/WM Categorization 🀠

  • GTK+ based Desktop Environment:
    XFCE4, Gnome shell, Cinnamon, Mate, Budgie
  • QT based Desktop Environment:
    KDE Plasma, LXQT, Deepin
  • DE with Other Library:
    Enlightenment, Lumina, or such.
  • Stacking Window Manager:
    Openbox, Fluxbox.
  • Tiling Window Manager:
    AwesomeWM, XMonad, i3wm (gaps), BSPWM, HerbsluftWM, DWM, or many others.
  • Compositor:
    KWin, Compiz.

The separation is not very clear, sometimes overlapped.

[The Difference Between DE, Shell, WM and Compositor]

Desktop Customization Step by Step?:

  • Install Linux Distribution:
    Pick your favorite distribution.
    Debian Based, Arch Family, Void, or others.
  • Desktop Environment:
    Plasma, Gnome, XFCE4, and such.
    Explore Theming.
  • Terminal Customization:
    Terminal, shell, prompt, multiplexer (tmux), pixel art,
    compositor (picom), CLI app (neofetch), editor (ViM).
  • Stacking Window Manager:
    Configuration: Openbox, Fluxbox.
    Explore Panel (task bar), and Tools.
  • Tiling Window Manager:
    i3wm, AwesomeWM, BSPWM,
    DWM, XMonad, HerbstluftWM.

Learn how to google, make a screenshot (scrot),
read documentation, and english.

DE Customization 🀠

LXQT with Windowish Looks, No Kidding

Example of DE Customization: LXQT with Windowish Looks

[LXQT with Windowish Looks]

You can switch to any looks with parts from internet.

DE Customization 🀠

What can I do with my DE πŸ€”?

  • Theming: Taskbar and Border
  • Color Scheme
  • Window Animation
  • Cursor and Icon Collection
  • Context Menu in File Manager
  • Wallpaper:
    The most ingredient for success.
  • Other Stuff: Font, Conky, or such.

DE Customization 🀠

Example: Custom XFCE4 Theme: PNG Gradient over XPM

XFWM4 Fancy Icon: PNG Gradient over XPM

[XFWM4 Theme - Overview]

DE Customization 🀠

Example: Custom XFCE4 Theme: SVG Inkscape Source

XFWM4 Fancy Icon: SVG Inkscape Source

The previous window icon was designed easily using inskcape.
UI/UGM (User Interface/ Unified Graphic Material)

Window Layout πŸ€”?

What Layout is Available with Your DE/WM?

  • Stacking:
    Suitable for ricing.
  • Tiling:
    For masochist desktoper.
    Avoid n00b.
  • Floating:
    Enable stacking in tiling.

Window Layout 🀠

Stacking Layout Example: LXQT

Stacking Layout Example

[LXQT with Windowish Looks, No Kidding]

Window Layout 🀠

Tiling Layout Example: HerbstluftWM

Tiling Layout Example

Window Layout 🀠

Floating Layout Example: AwesomeWM

Floating Layout Example

Ricing Guidance πŸ€”?

  • Aesthetic is First class:
    It is a work of art.
  • Technical Difficulty is Appreciated:
    Basic knowledge is a must.
  • Everyone has their own personal character:
    Yes, there is culture.
    Many factions blended in, such as dark mode, or weebs, or flat color vs transparency.
  • Ricing people prefer WM over DE:
    More customization to avoid hardcoded looks.
  • Be creative, be different:

Tips: Find your own style!

Ricing 🀠

Is it worth it ?

  • Socially: you need to show of, and get some votes.
  • Technically: You need a good screenshot
    while communicating your issue on social media,
    or publishing your work in a blog or other media.
  • Learning: A fun case while studying OS, and also coding.
  • Community: Give a fun direction for n00b
    that showing of ricing screenshot can be a better life,
    instead of just showing of illegal hacking.

Window Manager Customization πŸ€”?

  • Window Manager itself:
    Choose your WM.
  • Panel:
    Polybar, dzen2, Lemonbar, or others.
  • Notification:
    Dunst, or others.
  • Launcher:
    dmenu, rofi, or others.
  • Original Wallpaper:
    Ricing Culture: Mostly Anime.
  • Make your own authentic stuff.

Tips: There is no wrong or right. It is all about choices.

Window Manager Customization 🀠

Example: Custom Standalone Panel

Example WM Customization: Standalone Lemonbar

[Standalone Lemonbar Using Conky]

Window Manager Customization 🀠

Optional tools πŸ€”?

Window Manager Customization 🀠

Example: Custom Material Wallpaper

Example Original Material Wallpaper: Manjaro Logo: Bright on Blue

[More Inkscape Wallpapers]

Why Stacking Window Manager πŸ€”?

  • More on Customization:
    Configuration in Text Editor (suitable for coder),
    Shareable with dotfiles
  • Lightweight:
    Small Memory Footprint.
    Install only what I need.
  • The Looks:
    Avoid hardcoded looks or just be simple.

Stacking Window Manager 🀠

Example: openbox

Example Stacking WM: openbox

Stacking Window Manager 🀠

More Articles about Stacking WM

Stacking Window Manager 🀠

Example: Openbox Theme: Multi Color

Example Stacking WM: Openbox Theme Multi Color Trick

[Openbox Theme - Special Trick]

Stacking Window Manager 🀠

Example: openbox theming with Inkscape

Example Stacking WM: openbox

UI/UGM (User Interface/ Unified Graphic Material)

Stacking Window Manager 🀠

Example: Fluxbox

Example Stacking WM: Fluxbox with Glowing Wallpaper

Why Tiling Window Manager πŸ€”?

  • Efficient:
    Non-overlapping screen real estate.
  • Scaling:
    With Workspace or Tags.
  • Customizable:
    Most parts can be automated.
  • Keyboard-driven workflow:
    For masochist-desktoper.
  • Lightweight:
    Compared to DE.

Tiling Window Manager 🀠

Good Watch: Aline Abler Presentation on Youtube

Explained in systematic fashioned,
easy to follow,
and she is pretty too.

What Tiling Window Manager πŸ€”?

  • i3wm:
    Simple configuration, suitable for beginner.
  • HerbstluftWM:
    Challenging technical difficulties.
    The extra frame almost make me cry for happiness.
  • XMonad:
    I can config, but weird, I still don't understand Haskell.

Tips: do not let the blackscreen intimidate you.

Dynamic Window Manager πŸ€”?

It is a kind of Tiling WM, with presets layouts.

  • Awesome WM:
    Easy to use for beginner, but very long config.
    Built in menu, systray, notification.
  • DWM:
    First install for any minimalist distro.
    You have to compile to change the behaviour.

Dynamic Window Manager 🀠

Example of presets layout: AwesomeWM.

AwesomeWM: Custom Layout Icon

Tiling Window Manager 🀠

Example: i3wm (gaps, bright)

Example Tiling WM: i3wm (gaps, bright)

[Modularized Conky Configuration for i3status]

Tiling Window Manager 🀠

Example: AwesomeWM

Example Tiling WM: AwesomeWM

Tiling Window Manager 🀠

More about AwesomeWM

Tiling Window Manager 🀠

Example: HerbstluftWM

Example Tiling WM: HerbstluftWM

Tiling Window Manager 🀠

Solving HerbstluftWM Technical Difficulties

Tiling Window Manager 🀠

WM customization can be combined with Specific Panel Bar.

Example Tiling WM: Dzen2 in XMonad

Example: Dzen2 in XMonad

Other DE/WM issue 🀠

Xorg and Wayland

Terminal Ricing πŸ€”?

Main Parts.

  • Terminal:
    urxvt, xfce4-terminal, termite.
  • Shell:
    bash, zsh, fish.
    Prompt: powerline, oh-my-bash, oh-my-zsh, oh-my-fish.
  • Multiplexer:
    tmux, gnu screen.
    wrapper: teamocil, byobu.
  • Background Decoration:

[Terminal Ricing]

Terminal Customization 🀠

Terminal Ricing: tmux + vim + gcc + C + Assembler

[Linux - Terminal Customization]

Terminal Ricing πŸ€”?

Additional Parts.

  • Compositor Decoration:
    Picom or Compton.
  • Padding Decoration:
  • Example CLI application:
    neofetch, htop, cava.
  • Special CLI application:
    ViM Text Editor.
  • Pixel Art

[Terminal Ricing]

Terminal Customization 🀠

Example: Pixel Art: [ANSI color]

Terminal Ricing: Pixel Art: ANSI Color

Terminal Customization 🀠

Example: [Standalone CLI System Monitoring Using Conky]

Terminal Ricing: Standalone CLI System Monitoring

Terminal Customization 🀠

Example: Shell Prompt.

Terminal Ricing: Shell Prompt

[Customizing Shell Prompt with Powerline]

[Iterate Oh My BASH Theme]

Where to find resources πŸ€”?

Dotfiles πŸ€”?

Configuration files on linux can be shared between hobbyist.

Configuration mostly lies under .config directory.
Or single files with name started with dot.

Dotfiles 🀠

Sharing Resources require good folder management.

Example of typical dotfiles directory

Dotfiles 🀠

I share mine:

Would you do the same with each other?


What is Next πŸ€”?

  • Make your own custom Statusbar Panel!
  • Make your own custom Window Manager!
  • Port old tools to a better programming language!


Leverage Coding Skills!

Questions πŸ€”?

Don't be shy πŸ™‹πŸ»β€β™‚οΈ!

The End


Thank You for Your Time.