Skip to content
Graphical application for generating different color variations of a Arc, Materia and Oomox themes (GTK2, GTK3 and others), Archdroid, Gnome-Colors, Numix, Papirus, Suru++ icons, and terminal palette.
Python Shell Makefile Dockerfile
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
colors chore(colors): Add Fluent theme (#263) Sep 27, 2019
dockerfiles hotfix(dockerfile): install mypy from pip Sep 9, 2019
maintenance_scripts style(maintenance_scripts): nicer output Sep 21, 2019
oomox_gui refactor: update for a newer pylint Oct 11, 2019
packaging chore(packaging: ubuntu): add make to deps Oct 11, 2019
plugins refactor: update for a newer pylint Oct 11, 2019
po chore(locale): Updated and correct Dutch translatiom (#228) Feb 23, 2019
screenshots chore(screenshots): update roundness Mar 3, 2019
scripted_colors chore({scripted_,}-colors: xresources): first attempt at universal re… Aug 12, 2019
terminal_templates chore(terminal_templates): add swapped version of `basic` template Nov 25, 2018
.dockerignore chore(docker): exclude git file from docker build context Jan 10, 2019
.editorconfig chore(pkgbuild): remove .git from gtk-theme Aug 19, 2017
.flake8 fix(gui: preview): reuse css providers Sep 28, 2017
.gitattributes chore(gitattributes): themes moved to ./plugins/ dir Jan 29, 2018
.gitignore chore: bump version to 1.12.1 Mar 21, 2019
.gitmodules Suru++ Asprómauros plugin (#232) (#233) Mar 10, 2019
.pylintrc chore(terminal, color): remove some unused functions Jan 18, 2019
.travis.yml fix(dockerfiles: centos): add gcc May 31, 2019
CREDITS chore(credits): sync before release Mar 10, 2019
LICENSE * Removed run attribute. (#515) Aug 23, 2016
Makefile fix(makefile): use make -C instead of cd Feb 22, 2019 doc(readme: ubuntu/debian): simplify installation instructions Oct 11, 2019 style: shellcheck all .sh files Dec 31, 2018 chore( include default plugins into localization Nov 19, 2018

oomox theme designer

Graphical application for generating different color variations of Oomox (Numix-based), Materia (ex-Flat-Plat) and Arc themes (GTK2, GTK3, Cinnamon, GNOME, Openbox, Xfwm), Archdroid, Gnome-Color, Numix, Papirus and Suru++ icon themes. Have a hack for HiDPI in gtk2.

Table of contents:

Screenshot image import

Screenshot GUI

Big screenshot with number of generated themes 🔗

Latest Oomox GTK theme screenshots 🔗


Arch Linux


pikaur -S oomox-git

AUR helpers are not officialy supported, so you can also install it manually from either rolling-release or stable PKGBUILD.

Open the GUI


CentOS, Fedora, Mageia

Oomox can be installed by using a third party COPR repository:

sudo dnf copr enable tcg/themes
sudo dnf install oomox

Debian, Ubuntu, Linux Mint

For Debian 9+, Ubuntu 17.04+ or Linux Mint 19+ you can download oomox.deb package here: Make sure what universe repository is enabled.

sudo apt install ./oomox_VERSION_17.04+.deb  # or ./oomox_VERSION_18.10+.deb for Ubuntu 18.10+

Or, if you don't want to install third-party binary package you can build it on your own:

# with docker:
sudo systemctl start docker
sudo ./packaging/ubuntu/  # sudo is not needed if your user is in docker group

# or directly from ubuntu host if you don't like docker:
./packaging/ubuntu/ control
# or ./packaging/ubuntu/ control_1810

For older releases install the dependencies manually and next follow general installation instructions below.

Other distributions


For GUI app itself:

  • python3-gobject
  • gtk3>=3.18
  • gdk-pixbuf2
  • xorg-xrdb - optional, for xresources themes
For plugins:

Oomox theme:

  • sassc>=3.4
  • rsvg-convert from librsvg
  • glib-compile-schemas from glib2
  • gdk-pixbuf2
  • bc
  • sed
  • find
  • grep

Materia and Arc themes:

  • sassc>=3.4
  • glib-compile-schemas from glib2
  • gdk-pixbuf2
  • bc
  • sed
  • find
  • grep
  • optipng
  • gtk2-engine-murrine
  • resvg or inkscape
  • parallel (Materia only)

Gnome-Colors icons:

  • bc
  • sed
  • find
  • grep
  • rsvg-convert from librsvg
  • imagemagick
  • breeze-icons - optional, to provide more fallbacks

Archdroid, Papirus and Suru++ icons:

  • sed
  • find
  • breeze-icons - optional for Archdroid, to provide more fallbacks

Spotify theme:

  • polkit or gksu
  • zip
  • bc
  • grep

Import colors from images:

  • python3 PIL or Pillow

Base16 format support:

  • python3 pystache
  • python3 yaml


git clone --recursive
cd oomox
# if you need to generate locales:
make -f install



After exporting a theme select the generated theme (oomox-YOUR-THEME-NAME) in your appearance config tool (for example, lxappearance or gnome-tweak-tool).


If your prefer CLI interface, refer to scripts inside ./plugins/. For xresources and random themes in CLI use palettes from /opt/oomox/scripted_colors/ directory. Using scripted palettes enables you to use bash to write simple generators for dynamic themes (as alternative to plugins in oomox-gui). GUI is not attempting to execute any scripted palettes with bash because downloading such scripted themes from random places could lead to unexpected result so you can use them only with CLI, when you really know what you're doing.


Spotify theme can be also exported from GUI, but if you prefer commandline interface:

./plugins/oomoxify/ ./colors/gnome-colors/shiki-noble

Also you can normalize font weight with -w argument, see -h for usage.

Spotify theme settings are backed up to ~/.config/oomox/spotify_backup. To undo the changes made by oomoxify, these files can be copied back to their original location /usr/share/spotify/Apps. Spotify can also be reinstalled, which will reset these files as well.

Users running Spotify under Flatpak should set their "Spotify path" in oomox to /var/lib/flatpak/app/com.spotify.Client/current/active/files/extra/share/spotify/Apps in order to apply the theme.

Using with tiling WMs:

Create/append to ~/.config/gtk-3.0/gtk.css:

// remove window title from Client-Side Decorations
.solid-csd headerbar .title {
    font-size: 0;

Review articles and videos

To learn more about using the application you can check these sources:

You can’t perform that action at this time.