← Index

CyberQueer Theme System

The CyberQueer theme is a single-source colour system: every config file that needs colours references a small set of hex values that can be changed in one place and propagated everywhere with a single command.


The Palette

Defined in ~/Dotfiles/colors.conf (bare 6-digit hex, no # prefix):

COLOR_TEXT=D6ABAB       # Rose-white — foreground text, labels
COLOR_BG=1A1A1A         # Near-black — base surface, backgrounds
COLOR_HIGHLIGHT=E40046  # Hot pink   — primary accent, active borders
COLOR_DARK=5018DD       # Violet     — secondary accent, inactive borders
COLOR_RED=F50505        # Red        — danger indicators, alerts

Applying the Theme

# Apply using the default colors.conf
bash ~/Dotfiles/apply-theme.sh

# Apply from a custom palette file
bash ~/Dotfiles/apply-theme.sh /path/to/custom-colors.conf

apply-theme.sh will:

  1. Read colors.conf (or the file you pass)
  2. Compare against the last-applied state in ~/.config/colors.state
  3. Replace only changed colour values across all tracked files
  4. Save the new state to colors.state

If nothing changed it exits immediately — safe to call repeatedly.

First-Run Bootstrap

On a fresh install where configs have been copied but no state file exists yet, apply-theme.sh bootstraps ~/.config/colors.state with the repository defaults so the diff works correctly from the start.


What Gets Themed

User Configs (~/.config/…)

File What it styles
starship.toml Shell prompt segment colours
yazi/theme.toml File manager UI colours
hypr/hyprland.conf Active/inactive window border gradients
hypr/hyprtoolkit.conf Additional Hyprland colours
hypr/hyprlock.conf Lock screen colours
kitty/current-theme.conf Terminal colour palette
kitty/kitty.conf Terminal background & accents
kitty/themes/cyberqueer.conf Kitty colour scheme definition
waybar/style.css Top bar widget colours
wofi/style.css App launcher colours
walker/themes/cyberqueer.css Walker launcher theme
nwg-dock-hyprland/style.css Application dock
nwg-drawer/drawer.css Application drawer
nwg-panel/menu-start.css Panel start menu
vicinae/cyberqueer.toml Gesture launcher
scripts/onscreenkb.sh On-screen keyboard colours
spicetify/Themes/*/color.ini Spotify client theme (×2 variants)
ulauncher/user-themes/cyberqueer/manifest.json uLauncher theme
ulauncher/user-themes/cyberqueer/theme.css uLauncher CSS
ulauncher/user-themes/cyberqueer/generated.css uLauncher generated CSS
Vencord/themes/cyberqueer.theme.css Discord theme
Vencord/themes/system24/…/cyberqueer.theme.css Discord system24 variant

System Files (applied via sudo)

File What it styles
/etc/ly/config.ini TUI login manager colours
/usr/share/themes/cyberqueer/gtk-3.0/gtk.css GTK 3 theme
/usr/share/themes/cyberqueer/gtk-4.0/gtk.css GTK 4 theme

Customising the Palette

Edit ~/Dotfiles/colors.conf, then run apply-theme.sh:

# Example: shift the accent to cyan
nano ~/Dotfiles/colors.conf
# → COLOR_HIGHLIGHT=00B4D8

bash ~/Dotfiles/apply-theme.sh

The tui-install.sh installer also offers a colorway dialog as its final step: enter new hex values in the form; leave them unchanged to skip.


How It Works Internally

apply-theme.sh reads two key–value files and computes the diff:

~/.config/colors.state   (old values — what's currently applied)
colors.conf              (new values — what you want)

For each changed key it runs:

sed -i "s/${OLD_HEX}/${NEW_HEX}/gI" <file>

The case-insensitive (I) flag matches uppercase hex codes that some apps emit. After all replacements succeed, colors.state is updated.

apply-theme.sh refuses to run if any deployed config path resolves back into ~/Dotfiles/ via symlink. This prevents theme changes from being committed directly into the git repository. The new-style install (via tui-install.sh) copies configs instead of symlinking them, so this guard is normally never triggered.


Answerfile Theming

If you generate an answerfile with generate-answerfile.sh, custom colours can be embedded in it:

{
  "colors": {
    "COLOR_TEXT": "D6ABAB",
    "COLOR_BG": "1A1A1A",
    "COLOR_HIGHLIGHT": "E40046",
    "COLOR_DARK": "5018DD",
    "COLOR_RED": "F50505"
  }
}

tui-install.sh will apply these at the end of an automated install.