Skip to content

Theme System

omfreebdy includes a powerful theming system that instantly updates all applications with a single command.

Dark Themes (13)

Light Themes (4)

# Apply a specific theme
theme-set tokyo-night
# List all themes
theme-set --list
# Show current theme
theme-set --current
# Interactive picker
theme-set --select

Press + + T to open the interactive theme picker.

The theme system updates all of these simultaneously:

ApplicationConfig Location
Hyprland borders~/.config/hypr/hyprland.conf
Waybar~/.config/waybar/style.css
Foot terminal~/.config/foot/foot.ini
Ghostty terminal~/.config/ghostty/config
Mako notifications~/.config/mako/config
Fuzzel launcher~/.config/fuzzel/fuzzel.ini
Swaylock~/.config/swaylock/config
GTK 3/4 apps~/.config/gtk-{ 3,4 }.0/
NeovimDynamic via SIGUSR1
btop~/.config/btop/themes/
VSCode/Cursor~/.config/Code/User/settings.json

Each theme is a directory in ~/.config/omfreebdy/themes/:

themes/
└── tokyo-night/
├── colors.toml # Color definitions
├── neovim.lua # Neovim colorscheme plugin
├── vscode.json # VSCode theme mapping
├── btop.theme # btop color theme
└── backgrounds/ # Wallpaper images
├── wallpaper1.jpg
└── wallpaper2.png
colors.toml Format

The colors.toml file defines all colors for your theme:

# Core colors
background = "#1a1b26"
foreground = "#c0caf5"
accent = "#7aa2f7"
# Standard 16-color palette (color0-15)
color0 = "#15161e" # black
color1 = "#f7768e" # red
color2 = "#9ece6a" # green
color3 = "#e0af68" # yellow
color4 = "#7aa2f7" # blue
color5 = "#bb9af7" # magenta
color6 = "#7dcfff" # cyan
color7 = "#a9b1d6" # white
color8 = "#414868" # bright black
color9 = "#f7768e" # bright red
color10 = "#9ece6a" # bright green
color11 = "#e0af68" # bright yellow
color12 = "#7aa2f7" # bright blue
color13 = "#bb9af7" # bright magenta
color14 = "#7dcfff" # bright cyan
color15 = "#c0caf5" # bright white
# Optional extended colors
selection_background = "#283457"
selection_foreground = "#c0caf5"
cursor = "#c0caf5"

Themes can include wallpaper images in a backgrounds/ subdirectory.

# Next background for current theme
bg-next

Or use the keybinding: + B

Via the main menu: + D → Style → Background

1

Create a theme directory

Create a new theme directory with a backgrounds folder:

mkdir -p ~/.config/omfreebdy/themes/my-theme/backgrounds
2

Define colors

Create colors.toml with your color scheme:

cat > ~/.config/omfreebdy/themes/my-theme/colors.toml << 'EOF'
background = "#1e1e2e"
foreground = "#cdd6f4"
accent = "#89b4fa"
# Define all color0-15 here
color0 = "#45475a"
color1 = "#f38ba8"
color2 = "#a6e3a1"
color3 = "#f9e2af"
color4 = "#89b4fa"
color5 = "#f5c2e7"
color6 = "#94e2d5"
color7 = "#bac2de"
color8 = "#585b70"
color9 = "#f38ba8"
color10 = "#a6e3a1"
color11 = "#f9e2af"
color12 = "#89b4fa"
color13 = "#f5c2e7"
color14 = "#94e2d5"
color15 = "#cdd6f4"
EOF
3

Add Neovim integration (optional)

Create neovim.lua to specify which Neovim colorscheme to use:

cat > ~/.config/omfreebdy/themes/my-theme/neovim.lua << 'EOF'
return {
{ "catppuccin/nvim", name = "catppuccin" },
{ "LazyVim/LazyVim", opts = { colorscheme = "catppuccin" } },
}
EOF

This tells Neovim which plugin and colorscheme to activate when your theme is applied.

4

Add wallpapers (optional)

Copy wallpaper images to your theme’s backgrounds directory:

cp ~/wallpaper.jpg ~/.config/omfreebdy/themes/my-theme/backgrounds/

You can add multiple images, and they’ll be available for cycling with + B .

5

Apply your theme

Test your new theme:

theme-set my-theme

Most applications reload automatically when the theme changes:

  • Terminals (foot): Sent SIGUSR1 signal
  • Neovim: Sent SIGUSR1 signal (triggers autocmd)
  • Waybar: Sent SIGUSR2 signal
  • Hyprland: Config reloaded via hyprctl reload
  • Mako: Reloaded via makoctl reload