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:
- Read
colors.conf(or the file you pass) - Compare against the last-applied state in
~/.config/colors.state - Replace only changed colour values across all tracked files
- 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.
Symlink Guard¶
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.