/Chameleon

🦎 Theme your linux system to match any image

Primary LanguagePython

Chameleon

alt-text

This script acts as an extension to wal, by taking the generated colors and theming anything that can be themed, all in one script.

If the script detects you have certain programs on your system, it will try to generate themes for them.

The current programs are ones that I use, but feel free to add more and send a PR!

Examples

alt-text

Programs that use GTK themes like Thunar and Baobab should just pick up the theme, assuming you have selected the oomox-xresources-reverse theme in lxappearance. Spotify, Discord, Firefox, and gnuplot are shown here rocking their custom generated themes.

Programs that use Qt themes can also be configured to take themes from GTK, meaning we can theme them as well! The programs must be launched with the --style gtk2 flag, and you must install and configure qt5-styleplugins.

Installation

git clone https://github.com/GideonWolfe/Chameleon/
cd Chameleon
make install

Usage

  • chameleon -i [path to picture] [options for wal]
  • chameleon -t [wal theme] [options for wal]

Configuration

Configuration of chameleon is done through the file $HOME/.config/chameleon/config.yaml

Here, one can specify options specific to a single program, or even specify custom commands to be run every time you apply a theme.

Most programs will have a path attribute which may or may not be necessary depending on your setup. For example, if you were using a cloned, local version of wal-discord, one might want to specify a specific path where chameleon can find this specific executable.

If the path attribute is not given for a program, it is assumed that the program is located in your $PATH and will be run as a standalone command.

Programs supported

Planned support

Notes

To get the most complete theme possible, check out my dotfiles. Here you can find the configurations to get these colors on many other programs, such as rofi, polybar, firefox, and more. Since they update automatically, there was no need to include them in this script.

To apply icon themes, you need one of the icon sets supported by oomox. Change the icons section of the config file to look for the folder your desired icons are in, and change the command to the appropriate variant.

To use the new icon themes added to oomox, you have to create a executable file in $HOME/.local/bin with a similar naming schema like the example command used for gnome colors icon theme in config.yaml. The content of the executable should be something like:

#!/bin/bash
cd /opt/oomox
exec ./plugins/{path to change_color.sh file for your respective icon theme under plugins} "$@"

With the above executable created, all you have to do is to give it execute permission by using chmod +x and use the name of the executable as the command for your icon theme in the config.yaml file. Note: Make sure $HOME/.local/bin is added to your PATH.

Upgrade from v1 to v2

Simply delete the old chameleon executable at /usr/local/bin/chameleon. Now use chameleon.py which should be symlinked to $HOME/.local/bin/chameleon.py.

$HOME/.local/bin/ must be on your $PATH