My custom tilling windows manager with a uniform look


2021.03.23

Using base16, I achieved a slick and uniform look across all my desktop environnement, including sway, waybar, vscode and every GUI applications using GTK or QT.

Introduction

I love using tilling windows manager but I failed to found a full desktop environnement using one. I don't care to install each components myself but what I really wanted is a uniform look across everything. Thanks to base16 and oomox, I can easily generate a theme for all my applications.

Preview

Moorio preview

Base16 Builder

Start by installing python and python-pip packages.

pacman -S python python-pip

Then install pybase16-builder in a new directory.

mkdir base16
cd base16
pip install pybase16-builder

To download and use templates/schemes from the community:

pybase16 update
pybase16 build

If pybase16 is not found, use ~/.local/bin/pybase16 instead.

My color scheme

You can choose between all already available color schemes or create your own. You can also use mine, it's a dark theme only based on the oceanic color scheme with orange as a accent color.

cd templates
git clone https://github.com/aflab-dotfr/base16-morio-scheme.git
mv base16-morio-scheme morio
cd ..
pybase16 build -s morio

Morio color scheme

schemes/morio/morio.yaml

scheme: "Morio"
author: "Aflab"
base00: "141414" #Default Background
base01: "1F1F1F" #Lighter Background (Used for status bars, line number and folding marks)
base02: "333333" #Selection Background
base03: "CCCCCC" #Comments, Invisibles, Line Highlighting
base04: "EDEDED" #Dark Foreground (Used for status bars)
base05: "F5F5F5" #Default Foreground, Caret, Delimiters, Operators
base06: "FFFFFF" #Light Foreground (Not often used)
base07: "292929" #Light Background (Not often used)
base08: "AB7967" #Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
base09: "C594C5" #Integers, Boolean, Constants, XML Attributes, Markup Link Url
base0A: "6699CC" #Classes, Markup Bold, Search Text Background
base0B: "5FB3B3" #Strings, Inherited Class, Markup Code, Diff Inserted
base0C: "99C794" #Support, Regular Expressions, Escape Characters, Markup Quotes
base0D: "FAC863" #Functions, Methods, Attribute IDs, Headings
base0E: "F99157" #Keywords, Storage, Selector, Markup Italic, Diff Changed
base0F: "EC5F67" #Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>

Sway

Copy the color scheme file inside your sway config folder.

cp output/sway/themes/base16-morio.config ~/.config/sway/colorscheme

Then, in your sway config, include your colorscheme and set the colors properties.

~/.config/sway/config

include colorscheme

# Basic color configuration using the Base16 variables for windows and borders.
# Property Name         Border  BG      Text    Indicator Child Border
client.focused          $base00 $base02 $base05 $base0E   $base00
client.focused_inactive $base00 $base01 $base05 $base0E   $base00
client.unfocused        $base00 $base01 $base05 $base0E   $base00
client.urgent           $base00 $base0D $base05 $base0E   $base00
client.placeholder      $base00 $base00 $base05 $base0E   $base00
client.background       $base00

Reload your config.

swaymsg reload

Waybar

Copy the color scheme file inside your waybar config folder.

cp output/waybar/colors/base16-morio.css ~/.config/waybar/scheme.css

Import your color scheme inside your stylesheet.

~/.config/waybar/style.css

@import "scheme.css";

* {
    border: none;
    border-radius: 0;
    font-family: Roboto;
    min-height: 0;
}

window#waybar {
    background-color: @base01;
    color: @base04;
}

label {
    padding: 0px 8px
}

Reload your config.

swaymsg reload

GTK+ and QT

Install oomox and download my template from github.

cd templates
git clone https://github.com/aflab-dotfr/base16-oomox.git
mv base16-oomox oomox
cd ..

pybase16 build -t oomox

Generate your theme using oomox shell scripts.

# oomox theme
/opt/oomox/plugins/theme_oomox/gtk-theme/change_color.sh output/oomox/default/base16-morio -o base16

# numix icons
/opt/oomox/plugins/icons_numix/change_color.sh output/oomox/default/base16-morio -o base16

Use the QT configuration tool to install your new QT theme.

pacman -S qt5ct
qt5ct

Add these environnement variables for GTK.

~/.profile

export GTK_THEME=base16
export QT_QPA_PLATFORM=wayland
export QT_QPA_PLATFORMTHEME=qt5ct

If you have GNOME, change your settings.

gsettings set org.gnome.desktop.interface gtk-theme 'base16'
gsettings set org.gnome.desktop.interface icon-theme 'base16'

Visual Studio Code

Download my template from github.

cd templates
git clone https://github.com/aflab-dotfr/base16-vscode.git
mv base16-oomox oomox
cd ..

pybase16 build -t vscode

Copy the extension folder inside the vscode folder.

cp templates/vscode/extension ~/vscode-oss/extensions/base16-theme

Enable the extension inside the extensions tab CTRL+SHIFT+X.

Copy your generated theme json file inside with the name base16-theme.json.

cp output/vscode/themes/base16-morio.json ~/vscode-oss/extensions/base16-theme/base16-theme.json

Restart vscode then activate your theme by pressing CTRL+K CTRL+T and search for "Base16 Theme".