Making Themes
This guide walks through creating a custom Tsumiki theme from scratch.
Where Themes Live
Section titled “Where Themes Live”Create your theme file in themes/ with a .toml extension.
Example:
touch themes/my-theme.tomlMinimum Theme Template
Section titled “Minimum Theme Template”Copy this starter and adjust values:
[dark.background]main = "#121212" # Main background (dark, almost black with a slight grayish tint)alt = "#1a1a1a" # Secondary background (dark, industrial gray)dark = "#0a0a0a" # Darkest background (deep black, ultra-dark)
[dark.text]main = "#e0e0e0" # Primary text color (light, almost white gray)secondary = "#c5c5c5" # Secondary text color (soft light gray)muted = "#8e8e8e" # Tertiary text, muted (dark gray)disabled = "#666666" # Disabled text (muted gray)muted-light = "#999999" # Light-muted text for hints (light gray)muted-dark = "#444444" # Dark-muted text (gray with a slight purplish tint)
[dark.surface]disabled = "#444444" # Disabled items (dark gray)neutral = "#333333" # Neutral surface for cards, panels (dark gray with slight blue undertones)highlight = "#00f0f0" # Selection and highlights (neon cyan)
[dark.accent]light = "#ff007f" # Light accent (neon pink)pink = "#ff007f" # Pink accent (neon pink)purple = "#9c00ff" # Purple accent (electric purple)red = "#ff1744" # Red for errors and warnings (bright neon red)orange = "#ff6d00" # Orange for alerts (vibrant neon orange)yellow = "#ffea00" # Yellow for highlights (electric yellow)green = "#00ff00" # Green for success (neon green)teal = "#00b3b3" # Teal for information (bright cyan)blue = "#00d0ff" # Blue for links and actions (electric blue)light-blue = "#00d0ff" # Sky blue accent (electric blue)lavender = "#b084ff" # Lavender for subtle highlights (neon lavender)
[dark.general]bar-background = "rgba(18, 18, 18, 0.8)" # Panel background (semi-transparent dark background)shadow-color = "rgba(0, 0, 0, 0.6)" # Shadow color (deep shadows with high contrast)
[light.background]main = "#ededed" # Main background (dark, almost black with a slight grayish tint)alt = "#e5e5e5" # Secondary background (dark, industrial gray)dark = "#f5f5f5" # Darkest background (deep black, ultra-dark)
[light.text]main = "#1f1f1f" # Primary text color (light, almost white gray)secondary = "#3a3a3a" # Secondary text color (soft light gray)muted = "#717171" # Tertiary text, muted (dark gray)disabled = "#999999" # Disabled text (muted gray)muted-light = "#666666" # Light-muted text for hints (light gray)muted-dark = "#bbbbbb" # Dark-muted text (gray with a slight purplish tint)
[light.surface]disabled = "#bbbbbb" # Disabled items (dark gray)neutral = "#cccccc" # Neutral surface for cards, panels (dark gray with slight blue undertones)highlight = "#ff0f0f" # Selection and highlights (neon cyan)
[light.accent]light = "#00ff80" # Light accent (neon pink)pink = "#00ff80" # Pink accent (neon pink)purple = "#63ff00" # Purple accent (electric purple)red = "#00e8bb" # Red for errors and warnings (bright neon red)orange = "#0092ff" # Orange for alerts (vibrant neon orange)yellow = "#0015ff" # Yellow for highlights (electric yellow)green = "#ff00ff" # Green for success (neon green)teal = "#ff4c4c" # Teal for information (bright cyan)blue = "#ff2f00" # Blue for links and actions (electric blue)light-blue = "#ff2f00" # Sky blue accent (electric blue)lavender = "#4f7b00" # Lavender for subtle highlights (neon lavender)
[light.general]bar-background = "rgba(237, 237, 237, 0.8)" # Panel background (semi-transparent dark background)shadow-color = "rgba(255, 255, 255, 0.6)" # Shadow color (deep shadows with high contrast)Enable Your Theme
Section titled “Enable Your Theme”Set the theme name in config.toml under styling:
[styling]theme_name = "my-theme"Then restart Tsumiki or reload your setup.
Variable Groups
Section titled “Variable Groups”Use these groups as your mental model while editing:
background*: panel and popup backgrounds.text*: content readability and emphasis.surface*: cards, buttons, and hover states.accent*: semantic colors for actions and status.bar-background,shadow-color,ws-*: bar-specific polish.
Good Theme Practices
Section titled “Good Theme Practices”- Keep text contrast high against background colors.
- Reserve strong accent colors for important states.
- Keep similar saturation across related colors.
- Test common surfaces: bar, quick settings, notifications, popups.
Example: Ocean Theme
Section titled “Example: Ocean Theme”[dark.background]main = "#1e1e2e" # Main backgroundalt = "#181825" # Secondary backgrounddark = "#11111b" # Darkest background
[dark.text]main = "#cdd6f4" # Primary text colorsecondary = "#bac2de" # Secondary text colormuted = "#a6adc8" # Tertiary text, muteddisabled = "#6c7086" # Text for disabled elementsmuted-light = "#7f849c" # Light-muted text for hintsmuted-dark = "#9399b2" # Dark-muted text
[dark.surface]disabled = "#313244" # Background for disabled itemsneutral = "#45475a" # Neutral surface for cards, panelshighlight = "#585b70" # Selection and highlights
[dark.accent]light = "#f5e0dc" # Lightest accent (Rosewater)pink = "#f5c2e7" # Pink accentpurple = "#cba6f7" # Mauve accentred = "#f38ba8" # Red for errors and warningsorange = "#fab387" # Orange for warnings and alertsyellow = "#f9e2af" # Yellow for highlightsgreen = "#a6e3a1" # Green for successteal = "#94e2d5" # Teal for informationblue = "#89b4fa" # Blue for links and actionslight-blue = "#89dceb" # Sky blue accentlavender = "#b4befe" # Lavender for subtle highlights
[dark.general]bar-background = "rgb(36, 35, 35)"shadow-color = "rgba(0, 0, 0, 0.6)"
[light.background]main = "#e1e1d1" # Main backgroundalt = "#e7e7da" # Secondary backgrounddark = "#eeeee4" # Darkest background
[light.text]main = "#32290b" # Primary text colorsecondary = "#453d21" # Secondary text colormuted = "#595237" # Tertiary text, muteddisabled = "#938f79" # Text for disabled elementsmuted-light = "#807b63" # Light-muted text for hintsmuted-dark = "#6c664d" # Dark-muted text
[light.surface]disabled = "#cecdbb" # Background for disabled itemsneutral = "#bab8a5" # Neutral surface for cards, panelshighlight = "#a7a48f" # Selection and highlights
[light.accent]light = "#0a1f23" # Lightest accent (Rosewater)pink = "#0a3d18" # Pink accentpurple = "#345908" # Mauve accentred = "#0c7457" # Red for errors and warningsorange = "#054c78" # Orange for warnings and alertsyellow = "#061d50" # Yellow for highlightsgreen = "#591c5e" # Green for successteal = "#6b1d2a" # Teal for informationblue = "#764b05" # Blue for links and actionslight-blue = "#762314" # Sky blue accentlavender = "#4b4101" # Lavender for subtle highlights
[light.general]bar-background = "rgb(36, 35, 35)"shadow-color = "rgba(0, 0, 0, 0.6)"Learn from Existing Themes
Section titled “Learn from Existing Themes”Browse styles/themes/ for references such as nord.scss, dracula.scss, and gruvbox.scss.