Skip to content

PYWAL CHEATSHEET

Pywal is a tool to generate/change theme colors for your terminal and several supported applications. External applications can tap into the theme generated and apply it to itself.

Here is the demo page for each of the built-in themes

PYWAL INSTALLATION

Pywal can be installed via your package manager (if present) or via pip:

    pip install --user pywal

PYWAL PLUGINS

There are several plugins for pywal. I will detail a few that I currently am using.

WAL.VIM

wal.vim is a vim plugin. Install it via plug:

Firstly setup plug. Then inside your ~/.vimrc, add the line below to your plugs list:

    Plug 'dylanaraps/wal.vim'

Then add/modify the colorscheme line:

    colorscheme wal

Then issue the following command in vim:

    :PlugUpdate

Quit and restart vim and it should not have any errors, and if you have already set a pywal theme, it should apply.

RAZER-CLI

razer-cli is for those that have any Razer devices with configurable color(s), this tool will work with pywal to apply an appropriate color scheme.

This can be installed either via your package manager (if present) or via pip:

    pip install --user razer-cli

Then you can have it apply your pywal scheme via:

    razer-cli -a

To chain this with pywal the following will do the trick:

    wal -i ~/image.png && razer-cli -a

DISCORD

From the Github page, here is the quick start:

git clone https://github.com/guglicap/wal-discord.git
chmod +x ./wal-discord/wal-discord
ln -s "`pwd`/wal-discord/wal-discord" <directory in your $PATH>
wal-discord; beautifuldiscord --css ~/.cache/wal-discord/style.css

QT APPLICATIONS

In ~/.bashrc put

    export QT_QPA_PLATFORMTHEME=qt5ct

Install "qt5ct" and set theme to wal.

    sudo dnf install qt5ct

GTK APPLICATIONS

To match pywal's generated colorscheme to your GTK applications, I found oomox to be the most simple to get this done.

  1. Install oomox

  2. Use pywal to make your theme

  3. Open oomox/gui.sh and in the left "Plugins" section there will be a "Xresources" subsection. Choose either xresources or xresources-reverse (you can check the preview on the right).

  4. Click export theme and export icons.

  5. This step will only be required the first time you use oomox for xresources usage, subsequent uses will take effect immediately. Open up lxappearance (install it if need be) or use gnome-tweaks (install it if need be) and select the appropriate file (xresources or xresources-reverse) and apply it.

  6. Quit any GTK application that doesnt apply the theme correctly and restart it. Nautilus is a big offender here. On the terminal you can do "nautilus -q" to force quit if it insists on staying resident in RAM.

Going forward, you can generate the wal theme, import it into oomox via the xresources file, and have oomox create the GTK files for you.

I3WM CONFIG

Add/change the following lines to have what the pywal team recommends:

    #PYWAL ENABLED THEME
    set_from_resource $fg i3wm.color7 #f0f0f0
    set_from_resource $bg i3wm.color2 #f0f0f0
    # class                 border  backgr. text indicator child_border
    client.focused          $bg     $bg     $fg  $bg       $bg
    client.focused_inactive $bg     $bg     $fg  $bg       $bg
    client.unfocused        $bg     $bg     $fg  $bg       $bg
    client.urgent           $bg     $bg     $fg  $bg       $bg
    client.placeholder      $bg     $bg     $fg  $bg       $bg
    client.background       $bg

I personally modified the client focused text to be so that the title chages to black:

    client.focused          $bg     $bg     #000000

For your bar, you will want to do something similar to the following copy of what I chose to use in your bar section. Just add/modify the colors section:

    bar {
        colors {
                focused_workspace   $bg $bg #000000
                active_workspace    $fg $fg #000000
                inactive_workspace  $fg $fg #000000
        }
    }

ROFI CONFIG

Create or modify your existing ~/.config/rofi/config.rasi to have depending on your taste:

Dark:

    @import "~/.cache/wal/colors-rofi-dark"

Light:

    @import "~/.cache/wal/colors-rofi-light"

And then after that the following code block:

    element-text {
      background-color: inherit;
      text-color: inherit;
    }

So as an example, here is my file, using the pywal rofi dark theme files:

@import "~/.cache/wal/colors-rofi-dark"

element-text {
 background-color: inherit;
 text-color: inherit;
}

USING PYWAL

Firstly, ~/.bashrc needs a few lines to allow for taking pywal's changes:

    # Pywal
    (cat ~/.cache/wal/sequences &)
    source ~/.cache/wal/colors-tty.sh

You will want to have in your DE/WM startup the following to recall your last settings:

    wal -Rq

pywal can be quickly invoked to analyze an image via:

    wal -i /path/to/image.png

Or a directory:

    wal -i /path/to/directory

To apply a theme:

    wal --theme theme-name

To list available themes:

    wal --theme

PUTTING IT ALL TOGETHER

So, simply put there isn't much going on, but there are a few things that need to be done:

  1. Setup your ~/.bashrc
  2. Have your GUI call somehow the restoration command on login
  3. Tie in any plugins or external applications that need to talk with pywal

This works perfectly for me with the restoration in my bashrc and i3-gaps configs. I also created a bash function that invokes pywal then razer-cli to create a simple(r) experience. Modify accordingly for your plugins/external tools that will tie into your pywal generated color scheme.

    function pywal {
            wal -i "$1" ; razer-cli -a ; i3-msg restart ; wal-discord ; beautifuldiscord --css $HOME/.cache/wal-discord/style.css ; wpg -s "$1";
            }
    export -f pywal

In my case I can do a:

    pywal /path/to/Image.png

And I will geta unified theme for GTK, QT, Discord, and Razer devices when using the OpenRazer driver.