Compare commits

...
4 Commits
Author SHA1 Message Date
gitadmin b9997088c8 fix(nvim): correct obsidian picker name to snacks.picker 2026-09-24 21:57:37 -04:00
gitadmin 869991df4b fix(ssh): rename alcazar host to rascar and update ip to 172.25.11.131 2026-09-24 21:53:48 -04:00
gitadmin 788914abdc fix(dotfiles): symlink desktop entries individually
Use mode=symlink-each for ~/.local/share/applications so only the
custom .desktop files are linked instead of replacing the whole dir,
which hid system-installed entries.
2026-09-24 21:53:19 -04:00
gitadmin 9c353f257b feat(themes): add color derivation and themed app templates
Add script/omarchy-theme-color and expand omarchy-theme-set-templates to
derive a full palette from each theme's colors.toml, then render new
themed templates (shell, pi, vscode theme, gum, neovim, claude, hermes,
t3code) from it.

Adds backgrounds and palette updates for existing themes plus new themes
(last-horizon, lupine, solitude, tidewater-*, miasma, ...).
2026-09-24 21:25:12 -04:00
170 changed files with 4044 additions and 700 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ if vim.fn.isdirectory(vim.fn.expand "~" .. "/Documents/sjb-brain/") == 1 then
require("obsidian").setup({
legacy_commands = false,
picker = {
name = "snacks.pick",
name = "snacks.picker",
},
ui = {
enable = true,
+2 -2
View File
@@ -1,6 +1,6 @@
Host alcazar
Host rascar
User sjb
Hostname 172.25.11.135
Hostname 172.25.11.131
ForwardAgent yes
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
StreamLocalBindUnlink yes
+20 -20
View File
@@ -4,19 +4,19 @@ foreground = "{{ foreground }}"
[colors.cursor]
text = "{{ background }}"
cursor = "{{ cursor }}"
cursor = "{{ bright_foreground }}"
[colors.vi_mode_cursor]
text = "{{ background }}"
cursor = "{{ cursor }}"
cursor = "{{ bright_foreground }}"
[colors.search.matches]
foreground = "{{ background }}"
background = "{{ color3 }}"
background = "{{ yellow }}"
[colors.search.focused_match]
foreground = "{{ background }}"
background = "{{ color1 }}"
background = "{{ red }}"
[colors.footer_bar]
foreground = "{{ background }}"
@@ -27,21 +27,21 @@ text = "{{ selection_foreground }}"
background = "{{ selection_background }}"
[colors.normal]
black = "{{ color0 }}"
red = "{{ color1 }}"
green = "{{ color2 }}"
yellow = "{{ color3 }}"
blue = "{{ color4 }}"
magenta = "{{ color5 }}"
cyan = "{{ color6 }}"
white = "{{ color7 }}"
black = "{{ background }}"
red = "{{ red }}"
green = "{{ green }}"
yellow = "{{ yellow }}"
blue = "{{ blue }}"
magenta = "{{ magenta }}"
cyan = "{{ cyan }}"
white = "{{ foreground }}"
[colors.bright]
black = "{{ color8 }}"
red = "{{ color9 }}"
green = "{{ color10 }}"
yellow = "{{ color11 }}"
blue = "{{ color12 }}"
magenta = "{{ color13 }}"
cyan = "{{ color14 }}"
white = "{{ color15 }}"
black = "{{ muted }}"
red = "{{ bright_red }}"
green = "{{ bright_green }}"
yellow = "{{ bright_yellow }}"
blue = "{{ bright_blue }}"
magenta = "{{ bright_magenta }}"
cyan = "{{ bright_cyan }}"
white = "{{ bright_foreground }}"
+54 -44
View File
@@ -11,73 +11,83 @@ theme[title]="{{ foreground }}"
theme[hi_fg]="{{ accent }}"
# Background color of selected item in processes box
theme[selected_bg]="{{ color8 }}"
theme[selected_bg]="{{ selection }}"
# Foreground color of selected item in processes box
theme[selected_fg]="{{ accent }}"
# Color of inactive/disabled text
theme[inactive_fg]="{{ color8 }}"
theme[inactive_fg]="{{ muted }}"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="{{ foreground }}"
theme[graph_text]="{{ light_foreground }}"
# Background color of the percentage meters
theme[meter_bg]="{{ color8 }}"
theme[meter_bg]="{{ selection }}"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="{{ foreground }}"
theme[proc_misc]="{{ light_foreground }}"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="{{ color5 }}"
theme[mem_box]="{{ color2 }}"
theme[net_box]="{{ color1 }}"
theme[cpu_box]="{{ magenta }}"
theme[mem_box]="{{ green }}"
theme[net_box]="{{ red }}"
theme[proc_box]="{{ accent }}"
# Box divider line and small boxes line color
theme[div_line]="{{ color8 }}"
theme[div_line]="{{ muted }}"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="{{ color2 }}"
theme[temp_mid]="{{ color3 }}"
theme[temp_end]="{{ color1 }}"
theme[temp_start]="{{ green }}"
theme[temp_mid]="{{ yellow }}"
theme[temp_end]="{{ red }}"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="{{ color6 }}"
theme[cpu_mid]="{{ color4 }}"
theme[cpu_end]="{{ color5 }}"
# CPU graph colors (Teal -> Blue -> Magenta)
theme[cpu_start]="{{ cyan }}"
theme[cpu_mid]="{{ blue }}"
theme[cpu_end]="{{ magenta }}"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="{{ color5 }}"
theme[free_mid]="{{ color4 }}"
theme[free_end]="{{ color6 }}"
# Mem/Disk free meter
theme[free_start]="{{ magenta }}"
theme[free_mid]="{{ blue }}"
theme[free_end]="{{ cyan }}"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="{{ color4 }}"
theme[cached_mid]="{{ color6 }}"
theme[cached_end]="{{ color5 }}"
# Mem/Disk cached meter
theme[cached_start]="{{ blue }}"
theme[cached_mid]="{{ cyan }}"
theme[cached_end]="{{ magenta }}"
# Mem/Disk available meter (Peach -> Red)
theme[available_start]="{{ color3 }}"
theme[available_mid]="{{ color1 }}"
theme[available_end]="{{ color1 }}"
# Mem/Disk available meter
theme[available_start]="{{ yellow }}"
theme[available_mid]="{{ red }}"
theme[available_end]="{{ red }}"
# Mem/Disk used meter (Green -> Sky)
theme[used_start]="{{ color2 }}"
theme[used_mid]="{{ color6 }}"
theme[used_end]="{{ color4 }}"
# Mem/Disk used meter (Green -> Teal -> Blue)
theme[used_start]="{{ green }}"
theme[used_mid]="{{ cyan }}"
theme[used_end]="{{ blue }}"
# Download graph colors (Peach -> Red)
theme[download_start]="{{ color3 }}"
theme[download_mid]="{{ color1 }}"
theme[download_end]="{{ color1 }}"
# Download graph colors
theme[download_start]="{{ yellow }}"
theme[download_mid]="{{ red }}"
theme[download_end]="{{ red }}"
# Upload graph colors (Green -> Sky)
theme[upload_start]="{{ color2 }}"
theme[upload_mid]="{{ color6 }}"
theme[upload_end]="{{ color4 }}"
# Upload graph colors (Green -> Teal -> Blue)
theme[upload_start]="{{ green }}"
theme[upload_mid]="{{ cyan }}"
theme[upload_end]="{{ blue }}"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="{{ color6 }}"
theme[process_mid]="{{ color4 }}"
theme[process_end]="{{ color5 }}"
# Process box color gradient for threads, mem and cpu usage
theme[process_start]="{{ cyan }}"
theme[process_mid]="{{ blue }}"
theme[process_end]="{{ magenta }}"
# Graph gradient colors (spectrum shades from background to foreground)
theme[gradient_color_0]="{{ background }}"
theme[gradient_color_1]="{{ lighter_background }}"
theme[gradient_color_2]="{{ selection }}"
theme[gradient_color_3]="{{ muted }}"
theme[gradient_color_4]="{{ dark_foreground }}"
theme[gradient_color_5]="{{ foreground }}"
theme[gradient_color_6]="{{ light_foreground }}"
theme[gradient_color_7]="{{ bright_foreground }}"
+43
View File
@@ -0,0 +1,43 @@
{
"name": "Omarchy",
"base": "{{ theme_type }}",
"overrides": {
"claude": "{{ accent }}",
"claudeShimmer": "{{ mix accent foreground 35% }}",
"text": "{{ foreground }}",
"inverseText": "{{ background }}",
"inactive": "{{ mix foreground background 40% }}",
"inactiveShimmer": "{{ mix foreground background 25% }}",
"subtle": "{{ muted }}",
"suggestion": "{{ cyan }}",
"permission": "{{ blue }}",
"permissionShimmer": "{{ mix blue foreground 35% }}",
"remember": "{{ yellow }}",
"success": "{{ green }}",
"error": "{{ red }}",
"warning": "{{ yellow }}",
"warningShimmer": "{{ mix yellow foreground 35% }}",
"merged": "{{ magenta }}",
"promptBorder": "{{ accent }}",
"promptBorderShimmer": "{{ mix accent foreground 35% }}",
"planMode": "{{ cyan }}",
"autoAccept": "{{ yellow }}",
"bashBorder": "{{ bright_yellow }}",
"ide": "{{ bright_cyan }}",
"diffAdded": "{{ mix background green 15% }}",
"diffRemoved": "{{ mix background red 15% }}",
"diffAddedDimmed": "{{ mix background green 8% }}",
"diffRemovedDimmed": "{{ mix background red 8% }}",
"diffAddedWord": "{{ mix background green 32% }}",
"diffRemovedWord": "{{ mix background red 32% }}",
"userMessageBackground": "{{ mix background foreground 6% }}",
"userMessageBackgroundHover": "{{ mix background foreground 10% }}",
"bashMessageBackgroundColor": "{{ mix background foreground 6% }}",
"memoryBackgroundColor": "{{ mix background foreground 6% }}",
"selectionBg": "{{ selection_background }}",
"rate_limit_fill": "{{ accent }}",
"rate_limit_empty": "{{ mix background foreground 20% }}",
"briefLabelYou": "{{ yellow }}",
"briefLabelClaude": "{{ accent }}"
}
}
+17 -17
View File
@@ -4,22 +4,22 @@ background={{ background_strip }}
selection-foreground={{ selection_foreground_strip }}
selection-background={{ selection_background_strip }}
cursor={{ background_strip }} {{ cursor_strip }}
cursor={{ background_strip }} {{ bright_foreground_strip }}
regular0={{ color0_strip }}
regular1={{ color1_strip }}
regular2={{ color2_strip }}
regular3={{ color3_strip }}
regular4={{ color4_strip }}
regular5={{ color5_strip }}
regular6={{ color6_strip }}
regular7={{ color7_strip }}
regular0={{ background_strip }}
regular1={{ red_strip }}
regular2={{ green_strip }}
regular3={{ yellow_strip }}
regular4={{ blue_strip }}
regular5={{ purple_strip }}
regular6={{ cyan_strip }}
regular7={{ foreground_strip }}
bright0={{ color8_strip }}
bright1={{ color9_strip }}
bright2={{ color10_strip }}
bright3={{ color11_strip }}
bright4={{ color12_strip }}
bright5={{ color13_strip }}
bright6={{ color14_strip }}
bright7={{ color15_strip }}
bright0={{ muted_strip }}
bright1={{ bright_red_strip }}
bright2={{ bright_green_strip }}
bright3={{ bright_yellow_strip }}
bright4={{ bright_blue_strip }}
bright5={{ bright_magenta_strip }}
bright6={{ bright_cyan_strip }}
bright7={{ bright_foreground_strip }}
+17 -17
View File
@@ -1,22 +1,22 @@
background = {{ background }}
foreground = {{ foreground }}
cursor-color = {{ cursor }}
cursor-color = {{ bright_foreground }}
selection-background = {{ selection_background }}
selection-foreground = {{ selection_foreground }}
palette = 0={{ color0 }}
palette = 1={{ color1 }}
palette = 2={{ color2 }}
palette = 3={{ color3 }}
palette = 4={{ color4 }}
palette = 5={{ color5 }}
palette = 6={{ color6 }}
palette = 7={{ color7 }}
palette = 8={{ color8 }}
palette = 9={{ color9 }}
palette = 10={{ color10 }}
palette = 11={{ color11 }}
palette = 12={{ color12 }}
palette = 13={{ color13 }}
palette = 14={{ color14 }}
palette = 15={{ color15 }}
palette = 0={{ background }}
palette = 1={{ red }}
palette = 2={{ green }}
palette = 3={{ yellow }}
palette = 4={{ blue }}
palette = 5={{ magenta }}
palette = 6={{ cyan }}
palette = 7={{ foreground }}
palette = 8={{ muted }}
palette = 9={{ bright_red }}
palette = 10={{ bright_green }}
palette = 11={{ bright_yellow }}
palette = 12={{ bright_blue }}
palette = 13={{ bright_magenta }}
palette = 14={{ bright_cyan }}
palette = 15={{ bright_foreground }}
+137
View File
@@ -0,0 +1,137 @@
-- Gum Style (generic) Variables
hl.env("FOREGROUND", "{{ foreground }}")
hl.env("BACKGROUND", "{{ background }}")
hl.env("BORDER_FOREGROUND", "{{ accent }}")
hl.env("BORDER_BACKGROUND", "{{ background }}")
-- Gum Confirm Style Variables
hl.env("GUM_CONFIRM_PROMPT_FOREGROUND", "{{ accent }}")
hl.env("GUM_CONFIRM_PROMPT_BACKGROUND", "{{ background }}")
hl.env("GUM_CONFIRM_SELECTED_FOREGROUND", "{{ selection_foreground }}")
hl.env("GUM_CONFIRM_SELECTED_BACKGROUND", "{{ selection_background }}")
hl.env("GUM_CONFIRM_UNSELECTED_FOREGROUND", "{{ foreground }}")
hl.env("GUM_CONFIRM_UNSELECTED_BACKGROUND", "{{ background }}")
-- Gum Input Style Variables
hl.env("GUM_INPUT_PROMPT_FOREGROUND", "{{ accent }}")
hl.env("GUM_INPUT_PROMPT_BACKGROUND", "{{ background }}")
hl.env("GUM_INPUT_PLACEHOLDER_FOREGROUND", "{{ muted }}")
hl.env("GUM_INPUT_PLACEHOLDER_BACKGROUND", "{{ background }}")
hl.env("GUM_INPUT_CURSOR_FOREGROUND", "{{ bright_foreground }}")
hl.env("GUM_INPUT_CURSOR_BACKGROUND", "{{ background }}")
hl.env("GUM_INPUT_HEADER_FOREGROUND", "{{ foreground }}")
hl.env("GUM_INPUT_HEADER_BACKGROUND", "{{ background }}")
-- Gum Choose Style Variables
hl.env("GUM_CHOOSE_CURSOR_FOREGROUND", "{{ accent }}")
hl.env("GUM_CHOOSE_CURSOR_BACKGROUND", "{{ background }}")
hl.env("GUM_CHOOSE_HEADER_FOREGROUND", "{{ foreground }}")
hl.env("GUM_CHOOSE_HEADER_BACKGROUND", "{{ background }}")
hl.env("GUM_CHOOSE_ITEM_FOREGROUND", "{{ foreground }}")
hl.env("GUM_CHOOSE_ITEM_BACKGROUND", "{{ background }}")
hl.env("GUM_CHOOSE_SELECTED_FOREGROUND", "{{ selection_foreground }}")
hl.env("GUM_CHOOSE_SELECTED_BACKGROUND", "{{ selection_background }}")
-- Gum Filter Style Variables
hl.env("GUM_FILTER_PROMPT_FOREGROUND", "{{ accent }}")
hl.env("GUM_FILTER_PROMPT_BACKGROUND", "{{ background }}")
hl.env("GUM_FILTER_TEXT_FOREGROUND", "{{ foreground }}")
hl.env("GUM_FILTER_TEXT_BACKGROUND", "{{ background }}")
hl.env("GUM_FILTER_MATCH_FOREGROUND", "{{ accent }}")
hl.env("GUM_FILTER_CURSOR_TEXT_FOREGROUND", "{{ bright_foreground }}")
hl.env("GUM_FILTER_CURSOR_TEXT_BACKGROUND", "{{ background }}")
hl.env("GUM_FILTER_SELECTED_FOREGROUND", "{{ selection_foreground }}")
hl.env("GUM_FILTER_SELECTED_BACKGROUND", "{{ selection_background }}")
hl.env("GUM_FILTER_INDICATOR_FOREGROUND", "{{ accent }}")
hl.env("GUM_FILTER_HEADER_FOREGROUND", "{{ foreground }}")
hl.env("GUM_FILTER_MATCH_BACKGROUND", "{{ background }}")
hl.env("GUM_FILTER_HEADER_BACKGROUND", "{{ background }}")
hl.env("GUM_FILTER_PLACEHOLDER_FOREGROUND", "{{ muted }}")
hl.env("GUM_FILTER_PLACEHOLDER_BACKGROUND", "{{ background }}")
hl.env("GUM_FILTER_INDICATOR_BACKGROUND", "{{ background }}")
hl.env("GUM_FILTER_SELECTED_PREFIX_FOREGROUND", "{{ selection_foreground }}")
hl.env("GUM_FILTER_SELECTED_PREFIX_BACKGROUND", "{{ selection_background }}")
hl.env("GUM_FILTER_UNSELECTED_PREFIX_FOREGROUND", "{{ muted }}")
hl.env("GUM_FILTER_UNSELECTED_PREFIX_BACKGROUND", "{{ background }}")
-- Gum Table Style Variables
hl.env("GUM_TABLE_HEADER_FOREGROUND", "{{ foreground }}")
hl.env("GUM_TABLE_HEADER_BACKGROUND", "{{ background }}")
hl.env("GUM_TABLE_CELL_FOREGROUND", "{{ foreground }}")
hl.env("GUM_TABLE_CELL_BACKGROUND", "{{ background }}")
hl.env("GUM_TABLE_BORDER_FOREGROUND", "{{ muted }}")
hl.env("GUM_TABLE_BORDER_BACKGROUND", "{{ background }}")
hl.env("GUM_TABLE_SELECTED_FOREGROUND", "{{ selection_foreground }}")
hl.env("GUM_TABLE_SELECTED_BACKGROUND", "{{ selection_background }}")
-- Gum Spin Style Variables
hl.env("GUM_SPIN_SPINNER_FOREGROUND", "{{ accent }}")
hl.env("GUM_SPIN_SPINNER_BACKGROUND", "{{ background }}")
hl.env("GUM_SPIN_TITLE_FOREGROUND", "{{ foreground }}")
hl.env("GUM_SPIN_TITLE_BACKGROUND", "{{ background }}")
-- Gum File Style Variables
hl.env("GUM_FILE_CURSOR_FOREGROUND", "{{ bright_foreground }}")
hl.env("GUM_FILE_CURSOR_BACKGROUND", "{{ background }}")
hl.env("GUM_FILE_SYMLINK_FOREGROUND", "{{ foreground }}")
hl.env("GUM_FILE_SYMLINK_BACKGROUND", "{{ background }}")
hl.env("GUM_FILE_DIRECTORY_FOREGROUND", "{{ foreground }}")
hl.env("GUM_FILE_DIRECTORY_BACKGROUND", "{{ background }}")
hl.env("GUM_FILE_FILE_FOREGROUND", "{{ foreground }}")
hl.env("GUM_FILE_FILE_BACKGROUND", "{{ background }}")
hl.env("GUM_FILE_PERMISSIONS_FOREGROUND", "{{ muted }}")
hl.env("GUM_FILE_PERMISSIONS_BACKGROUND", "{{ background }}")
hl.env("GUM_FILE_SELECTED_FOREGROUND", "{{ selection_foreground }}")
hl.env("GUM_FILE_SELECTED_BACKGROUND", "{{ selection_background }}")
hl.env("GUM_FILE_FILE_SIZE_FOREGROUND", "{{ muted }}")
hl.env("GUM_FILE_FILE_SIZE_BACKGROUND", "{{ background }}")
hl.env("GUM_FILE_HEADER_FOREGROUND", "{{ foreground }}")
hl.env("GUM_FILE_HEADER_BACKGROUND", "{{ background }}")
-- Gum Pager Style Variables
hl.env("GUM_PAGER_FOREGROUND", "{{ foreground }}")
hl.env("GUM_PAGER_BACKGROUND", "{{ background }}")
hl.env("GUM_PAGER_LINE_NUMBER_FOREGROUND", "{{ muted }}")
hl.env("GUM_PAGER_LINE_NUMBER_BACKGROUND", "{{ background }}")
hl.env("GUM_PAGER_MATCH_FOREGROUND", "{{ accent }}")
hl.env("GUM_PAGER_MATCH_BACKGROUND", "{{ background }}")
hl.env("GUM_PAGER_MATCH_HIGH_FOREGROUND", "{{ accent }}")
hl.env("GUM_PAGER_MATCH_HIGH_BACKGROUND", "{{ background }}")
hl.env("GUM_PAGER_HELP_FOREGROUND", "{{ muted }}")
hl.env("GUM_PAGER_HELP_BACKGROUND", "{{ background }}")
-- Gum Write Style Variables
hl.env("GUM_WRITE_BASE_FOREGROUND", "{{ foreground }}")
hl.env("GUM_WRITE_BASE_BACKGROUND", "{{ background }}")
hl.env("GUM_WRITE_CURSOR_LINE_NUMBER_FOREGROUND", "{{ muted }}")
hl.env("GUM_WRITE_CURSOR_LINE_NUMBER_BACKGROUND", "{{ background }}")
hl.env("GUM_WRITE_CURSOR_LINE_FOREGROUND", "{{ foreground }}")
hl.env("GUM_WRITE_CURSOR_LINE_BACKGROUND", "{{ selection_background }}")
hl.env("GUM_WRITE_CURSOR_FOREGROUND", "{{ bright_foreground }}")
hl.env("GUM_WRITE_CURSOR_BACKGROUND", "{{ background }}")
hl.env("GUM_WRITE_END_OF_BUFFER_FOREGROUND", "{{ muted }}")
hl.env("GUM_WRITE_END_OF_BUFFER_BACKGROUND", "{{ background }}")
hl.env("GUM_WRITE_LINE_NUMBER_FOREGROUND", "{{ muted }}")
hl.env("GUM_WRITE_LINE_NUMBER_BACKGROUND", "{{ background }}")
hl.env("GUM_WRITE_HEADER_FOREGROUND", "{{ foreground }}")
hl.env("GUM_WRITE_HEADER_BACKGROUND", "{{ background }}")
hl.env("GUM_WRITE_PLACEHOLDER_FOREGROUND", "{{ muted }}")
hl.env("GUM_WRITE_PLACEHOLDER_BACKGROUND", "{{ background }}")
hl.env("GUM_WRITE_PROMPT_FOREGROUND", "{{ foreground }}")
hl.env("GUM_WRITE_PROMPT_BACKGROUND", "{{ background }}")
-- Gum Log Style Variables
hl.env("GUM_LOG_LEVEL_FOREGROUND", "{{ accent }}")
hl.env("GUM_LOG_LEVEL_BACKGROUND", "{{ background }}")
hl.env("GUM_LOG_TIME_FOREGROUND", "{{ muted }}")
hl.env("GUM_LOG_TIME_BACKGROUND", "{{ background }}")
hl.env("GUM_LOG_PREFIX_FOREGROUND", "{{ foreground }}")
hl.env("GUM_LOG_PREFIX_BACKGROUND", "{{ background }}")
hl.env("GUM_LOG_MESSAGE_FOREGROUND", "{{ foreground }}")
hl.env("GUM_LOG_MESSAGE_BACKGROUND", "{{ background }}")
hl.env("GUM_LOG_KEY_FOREGROUND", "{{ foreground }}")
hl.env("GUM_LOG_KEY_BACKGROUND", "{{ background }}")
hl.env("GUM_LOG_VALUE_FOREGROUND", "{{ foreground }}")
hl.env("GUM_LOG_VALUE_BACKGROUND", "{{ background }}")
hl.env("GUM_LOG_SEPARATOR_FOREGROUND", "{{ muted }}")
hl.env("GUM_LOG_SEPARATOR_BACKGROUND", "{{ background }}")
+15 -14
View File
@@ -76,12 +76,12 @@
"ui.bufferline.active" = { fg = "foreground", bg = "background", underline = { color = "color5", style = "line" } }
"ui.text" = "foreground"
"ui.text.focus" = { fg = "foreground", bg = "color0", modifiers = ["bold"] }
"ui.text.focus" = { fg = "foreground", bg = "lighter_background", modifiers = ["bold"] }
"ui.text.inactive" = { fg = "color8" }
"ui.text.directory" = { fg = "color4" }
"ui.virtual" = "color8"
"ui.virtual.ruler" = { bg = "color0" }
"ui.virtual.ruler" = { bg = "lighter_background" }
"ui.virtual.indent-guide" = "color8"
"ui.virtual.inlay-hint" = { fg = "color8" }
"ui.virtual.jump-label" = { fg = "color1", modifiers = ["bold"] }
@@ -96,9 +96,9 @@
"ui.cursor.primary.insert" = { fg = "background", bg = "color2" }
"ui.cursor.primary.select" = { fg = "background", bg = "color5" }
"ui.cursorline.primary" = { bg = "color0" }
"ui.cursorline.primary" = { bg = "lighter_background" }
"ui.highlight" = { bg = "color0", modifiers = ["bold"] }
"ui.highlight" = { bg = "lighter_background", modifiers = ["bold"] }
"ui.menu" = { fg = "foreground", bg = "background" }
"ui.menu.selected" = { fg = "background", bg = "foreground", modifiers = ["bold"] }
@@ -118,15 +118,16 @@ hint = "color6"
[palette]
background = "{{ background }}"
foreground = "{{ foreground }}"
cursor = "{{ cursor }}"
lighter_background = "{{ lighter_background }}"
cursor = "{{ bright_foreground }}"
selection_background = "{{ selection_background }}"
selection_foreground = "{{ selection_foreground }}"
color0 = "{{ color0 }}"
color1 = "{{ color1 }}"
color2 = "{{ color2 }}"
color3 = "{{ color3 }}"
color4 = "{{ color4 }}"
color5 = "{{ color5 }}"
color6 = "{{ color6 }}"
color7 = "{{ color7 }}"
color8 = "{{ color8 }}"
color0 = "{{ background }}"
color1 = "{{ red }}"
color2 = "{{ green }}"
color3 = "{{ yellow }}"
color4 = "{{ blue }}"
color5 = "{{ magenta }}"
color6 = "{{ cyan }}"
color7 = "{{ foreground }}"
color8 = "{{ muted }}"
+47
View File
@@ -0,0 +1,47 @@
name: omarchy
description: Omarchy system theme
colors:
background: "{{ background }}"
ui_text: "{{ foreground }}"
ui_primary: "{{ accent }}"
ui_accent: "{{ accent }}"
ui_border: "{{ muted }}"
ui_label: "{{ accent }}"
ui_ok: "{{ green }}"
ui_warn: "{{ yellow }}"
ui_error: "{{ red }}"
ui_tool: "{{ cyan }}"
ui_thinking: "{{ dark_foreground }}"
banner_border: "{{ muted }}"
banner_title: "{{ accent }}"
banner_accent: "{{ accent }}"
banner_dim: "{{ dark_foreground }}"
banner_text: "{{ foreground }}"
prompt: "{{ bright_foreground }}"
input_rule: "{{ muted }}"
response_border: "{{ accent }}"
shell_dollar: "{{ blue }}"
selection_bg: "{{ selection }}"
session_label: "{{ accent }}"
session_border: "{{ muted }}"
status_bar_bg: "{{ dark_background }}"
status_bar_text: "{{ foreground }}"
status_bar_strong: "{{ accent }}"
status_bar_dim: "{{ dark_foreground }}"
status_bar_good: "{{ green }}"
status_bar_warn: "{{ yellow }}"
status_bar_bad: "{{ red }}"
status_bar_critical: "{{ bright_red }}"
voice_status_bg: "{{ dark_background }}"
completion_menu_bg: "{{ lighter_background }}"
completion_menu_current_bg: "{{ selection }}"
completion_menu_meta_bg: "{{ lighter_background }}"
completion_menu_meta_current_bg: "{{ selection }}"
diff_added: "{{ mix background green 15% }}"
diff_removed: "{{ mix background red 15% }}"
diff_added_word: "{{ green }}"
diff_removed_word: "{{ red }}"
syntax_string: "{{ green }}"
syntax_number: "{{ yellow }}"
syntax_keyword: "{{ magenta }}"
syntax_comment: "{{ muted }}"
@@ -1,10 +1,10 @@
@define-color foreground {{ foreground }};
@define-color background {{ background }};
@define-color accent {{ accent }};
@define-color muted {{ color8 }};
@define-color card_bg {{ color0 }};
@define-color muted {{ muted }};
@define-color card_bg {{ lighter_background }};
@define-color text_dark {{ background }};
@define-color accent_hover {{ color12 }};
@define-color accent_hover {{ bright_blue }};
@define-color selected_tab {{ accent }};
@define-color text {{ foreground }};
-9
View File
@@ -1,9 +0,0 @@
$activeBorderColor = rgb({{ accent_strip }})
general {
col.active_border = $activeBorderColor
}
group {
col.border_active = $activeBorderColor
}
+11 -7
View File
@@ -1,14 +1,18 @@
local active_border_color = {{ hypr_gradient hyprland_active_border accent }}
local inactive_border_color = {{ hypr_gradient hyprland_inactive_border rgba(595959aa) }}
hl.config({
general = {
col = {
active_border = { colors = {"rgb({{ accent_strip }})", "rgb({{ color1_strip }})" }, angle = 45 },
inactive_border = { colors = {"rgb({{ color2_strip }})", "rgb({{ color2_strip }})" }, angle = 45 }
}
active_border = active_border_color,
inactive_border = inactive_border_color,
},
},
group = {
col = {
border_active = { colors = {"rgb({{ accent_strip }})", "rgb({{ color1_strip }})" }, angle = 45 },
border_inactive = { colors = {"rgb({{ color2_strip }})", "rgb({{ color2_strip }})" }, angle = 45 }
}
}
border_active = active_border_color,
border_inactive = inactive_border_color,
},
},
})
+17 -17
View File
@@ -3,25 +3,25 @@ background {{ background }}
selection_foreground {{ selection_foreground }}
selection_background {{ selection_background }}
cursor {{ cursor }}
cursor {{ bright_foreground }}
cursor_text_color {{ background }}
active_border_color {{ accent }}
active_tab_background {{ accent }}
color0 {{ color0 }}
color1 {{ color1 }}
color2 {{ color2 }}
color3 {{ color3 }}
color4 {{ color4 }}
color5 {{ color5 }}
color6 {{ color6 }}
color7 {{ color7 }}
color8 {{ color8 }}
color9 {{ color9 }}
color10 {{ color10 }}
color11 {{ color11 }}
color12 {{ color12 }}
color13 {{ color13 }}
color14 {{ color14 }}
color15 {{ color15 }}
color0 {{ background }}
color1 {{ red }}
color2 {{ green }}
color3 {{ yellow }}
color4 {{ blue }}
color5 {{ magenta }}
color6 {{ cyan }}
color7 {{ foreground }}
color8 {{ muted }}
color9 {{ bright_red }}
color10 {{ bright_green }}
color11 {{ bright_yellow }}
color12 {{ bright_blue }}
color13 {{ bright_magenta }}
color14 {{ bright_cyan }}
color15 {{ bright_foreground }}
+41
View File
@@ -0,0 +1,41 @@
vim.pack.add({{ src = "https://github.com/bjarneo/aether.nvim", branch = "v3" }})
require('aether').setup({
colors = {
bg = "{{ background }}",
dark_bg = "{{ dark_background }}",
darker_bg = "{{ darker_background }}",
lighter_bg = "{{ lighter_background }}",
fg = "{{ foreground }}",
dark_fg = "{{ dark_foreground }}",
light_fg = "{{ light_foreground }}",
bright_fg = "{{ bright_foreground }}",
muted = "{{ muted }}",
red = "{{ red }}",
yellow = "{{ yellow }}",
orange = "{{ orange }}",
green = "{{ green }}",
cyan = "{{ cyan }}",
blue = "{{ blue }}",
magenta = "{{ magenta }}",
brown = "{{ brown }}",
bright_red = "{{ bright_red }}",
bright_yellow = "{{ bright_yellow }}",
bright_green = "{{ bright_green }}",
bright_cyan = "{{ bright_cyan }}",
bright_blue = "{{ bright_blue }}",
bright_magenta = "{{ bright_magenta }}",
accent = "{{ accent }}",
cursor = "{{ bright_foreground }}",
foreground = "{{ foreground }}",
background = "{{ background }}",
selection = "{{ selection }}",
selection_foreground = "{{ selection_foreground }}",
selection_background = "{{ selection_background }}",
},
})
vim.cmd('colorscheme aether')
+52
View File
@@ -0,0 +1,52 @@
return {
{
"bjarneo/aether.nvim",
branch = "v3",
name = "aether",
priority = 1000,
opts = {
colors = {
bg = "{{ background }}",
dark_bg = "{{ dark_background }}",
darker_bg = "{{ darker_background }}",
lighter_bg = "{{ lighter_background }}",
fg = "{{ foreground }}",
dark_fg = "{{ dark_foreground }}",
light_fg = "{{ light_foreground }}",
bright_fg = "{{ bright_foreground }}",
muted = "{{ muted }}",
red = "{{ red }}",
yellow = "{{ yellow }}",
orange = "{{ orange }}",
green = "{{ green }}",
cyan = "{{ cyan }}",
blue = "{{ blue }}",
magenta = "{{ magenta }}",
brown = "{{ brown }}",
bright_red = "{{ bright_red }}",
bright_yellow = "{{ bright_yellow }}",
bright_green = "{{ bright_green }}",
bright_cyan = "{{ bright_cyan }}",
bright_blue = "{{ bright_blue }}",
bright_magenta = "{{ bright_magenta }}",
accent = "{{ accent }}",
cursor = "{{ bright_foreground }}",
foreground = "{{ foreground }}",
background = "{{ background }}",
selection = "{{ selection }}",
selection_foreground = "{{ selection_foreground }}",
selection_background = "{{ selection_background }}",
},
},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "aether",
},
},
}
+25 -25
View File
@@ -12,18 +12,18 @@
--text-selection: {{ selection_background }};
/* Border color */
--background-modifier-border: {{ color8 }};
--background-modifier-border: {{ muted }};
/* Semantic heading colors */
--text-title-h1: {{ color1 }};
--text-title-h2: {{ color2 }};
--text-title-h3: {{ color3 }};
--text-title-h4: {{ color4 }};
--text-title-h5: {{ color5 }};
--text-title-h6: {{ color5 }};
--text-title-h1: {{ red }};
--text-title-h2: {{ green }};
--text-title-h3: {{ yellow }};
--text-title-h4: {{ blue }};
--text-title-h5: {{ magenta }};
--text-title-h6: {{ magenta }};
/* Links and accents */
--text-link: {{ color4 }};
--text-link: {{ blue }};
--text-accent: {{ accent }};
--text-accent-hover: {{ accent }};
--interactive-accent: {{ accent }};
@@ -34,23 +34,23 @@
--text-faint: color-mix(in srgb, {{ foreground }} 55%, transparent);
/* Code */
--code-normal: {{ color6 }};
--code-normal: {{ cyan }};
/* Errors and success */
--text-error: {{ color1 }};
--text-error-hover: {{ color1 }};
--text-success: {{ color2 }};
--text-error: {{ red }};
--text-error-hover: {{ red }};
--text-success: {{ green }};
/* Tags */
--tag-color: {{ color6 }};
--tag-background: {{ color8 }};
--tag-color: {{ cyan }};
--tag-background: {{ muted }};
/* Graph */
--graph-line: {{ color8 }};
--graph-line: {{ muted }};
--graph-node: {{ accent }};
--graph-node-focused: {{ color4 }};
--graph-node-tag: {{ color6 }};
--graph-node-attachment: {{ color2 }};
--graph-node-focused: {{ blue }};
--graph-node-tag: {{ cyan }};
--graph-node-attachment: {{ green }};
}
/* Headers */
@@ -63,16 +63,16 @@
/* Code blocks */
.markdown-rendered code {
color: {{ color6 }};
color: {{ cyan }};
}
/* Syntax highlighting */
.cm-s-obsidian span.cm-keyword { color: {{ color1 }}; }
.cm-s-obsidian span.cm-string { color: {{ color2 }}; }
.cm-s-obsidian span.cm-number { color: {{ color3 }}; }
.cm-s-obsidian span.cm-comment { color: {{ color8 }}; }
.cm-s-obsidian span.cm-operator { color: {{ color4 }}; }
.cm-s-obsidian span.cm-def { color: {{ color4 }}; }
.cm-s-obsidian span.cm-keyword { color: {{ red }}; }
.cm-s-obsidian span.cm-string { color: {{ green }}; }
.cm-s-obsidian span.cm-number { color: {{ yellow }}; }
.cm-s-obsidian span.cm-comment { color: {{ muted }}; }
.cm-s-obsidian span.cm-operator { color: {{ blue }}; }
.cm-s-obsidian span.cm-def { color: {{ blue }}; }
/* Links */
.markdown-rendered a {
+95
View File
@@ -0,0 +1,95 @@
{
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
"name": "omarchy-system",
"vars": {
"background": "{{ background }}",
"foreground": "{{ foreground }}",
"accent": "{{ accent }}",
"selectionBackground": "{{ selection_background }}",
"selectionForeground": "{{ selection_foreground }}",
"selectedBackground": "{{ mix background accent 22% }}",
"color0": "{{ background }}",
"color1": "{{ red }}",
"color2": "{{ green }}",
"color3": "{{ yellow }}",
"color4": "{{ blue }}",
"color5": "{{ magenta }}",
"color6": "{{ cyan }}",
"color7": "{{ foreground }}",
"color8": "{{ muted }}",
"color9": "{{ bright_red }}",
"color10": "{{ bright_green }}",
"color11": "{{ bright_yellow }}",
"color12": "{{ bright_blue }}",
"color13": "{{ bright_magenta }}",
"color14": "{{ bright_cyan }}",
"color15": "{{ bright_foreground }}",
"panel": "{{ mix background foreground 6% }}",
"panelAlt": "{{ mix background foreground 10% }}",
"panelPending": "{{ mix background accent 12% }}",
"panelSuccess": "{{ mix background green 12% }}",
"panelError": "{{ mix background red 12% }}",
"border": "{{ mix background foreground 30% }}",
"borderMuted": "{{ mix background foreground 20% }}",
"mutedText": "{{ mix foreground background 34% }}",
"dimText": "{{ mix foreground background 52% }}"
},
"colors": {
"accent": "accent",
"border": "border",
"borderAccent": "accent",
"borderMuted": "borderMuted",
"success": "color2",
"error": "color1",
"warning": "color3",
"muted": "mutedText",
"dim": "dimText",
"text": "foreground",
"thinkingText": "dimText",
"selectedBg": "selectedBackground",
"userMessageBg": "panel",
"userMessageText": "foreground",
"customMessageBg": "panel",
"customMessageText": "foreground",
"customMessageLabel": "accent",
"toolPendingBg": "panelPending",
"toolSuccessBg": "panelSuccess",
"toolErrorBg": "panelError",
"toolTitle": "accent",
"toolOutput": "foreground",
"mdHeading": "color5",
"mdLink": "accent",
"mdLinkUrl": "color6",
"mdCode": "color6",
"mdCodeBlock": "foreground",
"mdCodeBlockBorder": "borderMuted",
"mdQuote": "mutedText",
"mdQuoteBorder": "borderMuted",
"mdHr": "borderMuted",
"mdListBullet": "color5",
"toolDiffAdded": "color2",
"toolDiffRemoved": "color1",
"toolDiffContext": "mutedText",
"syntaxComment": "dimText",
"syntaxKeyword": "color5",
"syntaxFunction": "color4",
"syntaxVariable": "accent",
"syntaxString": "color2",
"syntaxNumber": "color3",
"syntaxType": "color4",
"syntaxOperator": "color5",
"syntaxPunctuation": "mutedText",
"thinkingOff": "borderMuted",
"thinkingMinimal": "accent",
"thinkingLow": "color4",
"thinkingMedium": "color5",
"thinkingHigh": "color3",
"thinkingXhigh": "color1",
"bashMode": "color3"
},
"export": {
"pageBg": "{{ background }}",
"cardBg": "{{ mix background foreground 6% }}",
"infoBg": "{{ mix background foreground 10% }}"
}
}
+34 -34
View File
@@ -1,56 +1,56 @@
[colors]
# Regular colors
background = '{{ background }}'
black = '{{ color0 }}'
blue = '{{ color4 }}'
cyan = '{{ color6 }}'
black = '{{ background }}'
blue = '{{ blue }}'
cyan = '{{ cyan }}'
foreground = '{{ foreground }}'
green = '{{ color2 }}'
magenta = '{{ color5 }}'
red = '{{ color1 }}'
white = '{{ color15 }}'
yellow = '{{ color11 }}'
green = '{{ green }}'
magenta = '{{ magenta }}'
red = '{{ red }}'
white = '{{ foreground }}'
yellow = '{{ yellow }}'
# Cursor
cursor = '{{ cursor }}'
cursor = '{{ bright_foreground }}'
vi-cursor = '{{ accent }}'
# Navigation
# tabs and tabs-active set the inactive/active tab title colors.
# Tab island backgrounds are derived from the window background color.
tabs = '{{ color8 }}'
tabs-active = '{{ color15 }}'
split = '{{ color8 }}'
split-active = '{{ color15 }}'
tabs = '{{ muted }}'
tabs-active = '{{ selection }}'
split = '{{ muted }}'
split-active = '{{ selection }}'
# Search
search-match-background = '{{ color12 }}'
search-match-foreground = '{{ color15 }}'
search-focused-match-background = '{{ color3 }}'
search-focused-match-foreground = '{{ color15 }}'
search-match-background = '{{ light_background }}'
search-match-foreground = '{{ dark_foreground }}'
search-focused-match-background = '{{ lighter_background }}'
search-focused-match-foreground = '{{ dark_foreground }}'
# Selection
selection-foreground = '{{ selection_foreground }}'
selection-background = '{{ selection_background }}'
# Dim colors
dim-black = '{{ color0 }}'
dim-blue = '{{ color4 }}'
dim-cyan = '{{ color6 }}'
dim-black = '{{ background }}'
dim-blue = '{{ blue }}'
dim-cyan = '{{ cyan }}'
dim-foreground = '{{ foreground }}'
dim-green = '{{ color2 }}'
dim-magenta = '{{ color5 }}'
dim-red = '{{ color1 }}'
dim-white = '{{ color15 }}'
dim-yellow = '{{ color11 }}'
dim-green = '{{ green }}'
dim-magenta = '{{ magenta }}'
dim-red = '{{ red }}'
dim-white = '{{ foreground }}'
dim-yellow = '{{ yellow }}'
# Light colors
light-black = '{{ color8 }}'
light-blue = '{{ color12 }}'
light-cyan = '{{ color14 }}'
light-foreground = '{{ foreground }}'
light-green = '{{ color10 }}'
light-magenta = '{{ color13 }}'
light-red = '{{ color9 }}'
light-white = '{{ color15 }}'
light-yellow = '{{ color11 }}'
light-black = '{{ lighter_background }}'
light-blue = '{{ bright_blue }}'
light-cyan = '{{ bridht_cyan }}'
light-foreground = '{{ bright_foreground }}'
light-green = '{{ bright_green }}'
light-magenta = '{{ bright_magenta }}'
light-red = '{{ bright_red}}'
light-white = '{{ bright_foreground }}'
light-yellow = '{{ bright_yellow }}'
+7 -7
View File
@@ -1,20 +1,20 @@
* {
background: {{ background }};
foreground: {{ foreground }};
active-background: {{ color2 }};
urgent-background: {{ color1 }};
active-background: {{ lighter_background }};
urgent-background: {{ accent }};
normal-foreground: {{ color3 }};
normal-background: {{ background }};
normal-foreground: {{ dark_foreground }};
normal-background: {{ dark_background }};
selected-foreground: {{ selection_foreground }};
selected-background: {{ selection_background }};
seperator-color: {{ background }};
border-color: {{ color0 }};
border-color: {{ accent }};
prompt-color: {{ color4 }};
prompt-background-color: {{ color0 }};
prompt-color: {{ light_foreground }};
prompt-background-color: {{ darker_background }};
window-border-size: 1px;
window-border-radius: 8px;
+237
View File
@@ -0,0 +1,237 @@
# Omarchy shell surfaces. Colors derive from colors.toml; sizes and the
# typographic scale come from the keys below. Themes can ship
# themes/<name>/shell.toml to replace this generated file.
[bar]
# Alpha companions (where present) range from 0 (invisible) to 1 (opaque).
background = "{{ background }}"
background-alpha = 1.0
text = "{{ foreground }}"
# Modules calling attention to themselves (recording, voxtype, alerts, updates)
active = "{{ red }}"
# Cross-axis size at font base-size 12. size-horizontal is the height of
# top/bottom bars; size-vertical is the width of left/right bars. With
# scale-with-font enabled, these grow/shrink with [font] base-size.
scale-with-font = true
size-horizontal = 26
size-vertical = 28
[hyprland]
# Shared Hyprland-derived border tokens. Surface sections reference these so
# lock, notifications, popups, and menu-style cards stay aligned with the
# current Hyprland active-border gradient.
active-border = "{{ shell_gradient hyprland_active_border accent }}"
active-border-foreground = "{{ shell_gradient hyprland_active_border foreground }}"
[controls]
# Shared state tokens for interactive control chrome (buttons, dropdowns,
# tab strips, etc).
# Normal: idle control chrome. Border widths accept one CSS-style scalar/list:
# N, "Y X", "T X B", or "T R B L". Per-side keys like
# normal-border-width-left override the list. Each *-border accepts either a
# solid color or a Hyprland-style gradient, e.g. "rgba(...) rgba(...) 45deg".
normal-color = "{{ foreground }}"
normal-fill-alpha = 0.04
normal-border = "{{ foreground }}"
normal-border-width = 1
normal-border-alpha = 0.4
# Hover-cursor: mouse hover and the panel keyboard cursor.
hover-cursor-color = "{{ foreground }}"
hover-cursor-fill-alpha = 0.08
hover-cursor-border = "{{ foreground }}"
hover-cursor-border-width = 1
hover-cursor-border-alpha = 0.25
# Focus: Qt activeFocus. Mirror the hover-cursor values by default so
# mouse hover, keyboard cursor, and tab focus all read as the same state
# — themes that want focus to stand out override these four lines.
focus-color = "{{ foreground }}"
focus-fill-alpha = 0.08
focus-border = "{{ foreground }}"
focus-border-width = 1
focus-border-alpha = 0.25
# Selected: persistent chosen/current state.
selected-color = "{{ foreground }}"
selected-fill-alpha = 0.18
selected-border = "{{ foreground }}"
selected-border-width = 0
selected-border-alpha = 1.0
# Momentary fills.
pressed-fill-alpha = 0.22
selection-fill-alpha = 0.35
[spacing]
# `scale` multiplies shared margins, gaps, padding, controls, and panel
# dimensions; components keep their proportions. With scale-with-font
# enabled, those dimensions grow/shrink with [font] base-size too. Per-token
# overrides (in px) below pin individual values without affecting the rest
# of the scale. Uncomment any to tune a specific surface.
scale = 1.0
scale-with-font = true
# xxs = 2
# xs = 3
# sm = 4
# md = 6
# lg = 8
# xl = 10
# xxl = 12
# xxxl = 14
# huge = 18
# control-gap = 8
# control-padding-x = 10
# control-padding-y = 6
# input-padding-y = 7
# control-height = 28
# popup-row-height = 28
# row-gap = 8
# row-padding-x = 12
# label-gap = 4
# panel-gap = 14
# panel-padding = 18
# popup-padding = 14
# dropdown-width = 240
# searchable-dropdown-width = 260
# number-field-width = 120
# searchable-popup-min-height = 220
[font]
# base-size is the rem root for the type scale. Every Style.font.<token>
# derives from it (e.g. body = base, subtitle ≈ base * 1.083,
# heading ≈ base * 1.333). The shell only floors this at 1px; increase it
# as much as you want.
base-size = 12
# Per-token overrides, in px. Uncomment any to pin a specific size without
# affecting the rest of the scale. Useful for stylistic emphasis (a
# minimalist theme that wants a bigger heading without scaling everything).
# caption = 10
# body-small = 11
# body = 12
# subtitle = 13
# title = 14
# heading = 16
# display = 24
# display-large = 28
# icon-small = 11
# icon = 14
# icon-large = 18
[popups]
# Shared by every bar flyout (dropdowns, OSD, popup cards).
# Border accepts either a solid color or a Hyprland-style gradient. Border
# widths accept one CSS-style scalar/list: N, "Y X", "T X B", or "T R B L";
# individual border-width-top/right/bottom/left keys override the list.
background = "{{ background }}"
background-alpha = 1.0
text = "{{ foreground }}"
border = "hyprland.active-border"
border-alpha = 1.0
# border-width = 2
[tooltip]
# Hover tooltips across the bar, panels, and buttons. background-alpha of
# 0.97 mirrors the legacy hard-coded tooltip opacity.
background = "{{ background }}"
background-alpha = 0.97
text = "{{ foreground }}"
border = "hyprland.active-border-foreground"
border-alpha = 1.0
[notifications]
background = "{{ background }}"
background-alpha = 1.0
text = "{{ foreground }}"
# Conventionally matches the Hyprland active-window border. Border accepts
# either a solid color or the full active-border gradient.
border = "hyprland.active-border"
border-alpha = 1.0
# border-width = 2
countdown = "{{ accent }}"
[launcher]
# Same six tokens as [menu], applied to the launcher overlay. Alpha
# companions go from 0 (invisible) to 1 (opaque). scrim is the full-screen
# dim layer behind the card; background is the card itself. Defaults
# mirror [menu] with the card at 0.95 to preserve the legacy translucency.
background = "{{ background }}"
background-alpha = 0.95
text = "{{ foreground }}"
border = "hyprland.active-border-foreground"
border-alpha = 1.0
scrim = "{{ background }}"
scrim-alpha = 0.5
selected-background = "{{ foreground }}"
selected-background-alpha = 0.08
selected-text = "{{ accent }}"
selected-border = "hyprland.active-border-foreground"
selected-border-alpha = 0.25
[menu]
# Cards, rows, and selected-row treatment. Alpha companions (where present)
# go from 0 (invisible) to 1 (opaque). scrim is the full-screen dim layer
# behind the card. Clipboard and emojis inherit these tokens.
background = "{{ background }}"
background-alpha = 1.0
text = "{{ foreground }}"
border = "hyprland.active-border-foreground"
border-alpha = 1.0
scrim = "{{ background }}"
scrim-alpha = 0.5
selected-background = "{{ foreground }}"
selected-background-alpha = 0.08
selected-text = "{{ accent }}"
selected-border = "hyprland.active-border-foreground"
selected-border-alpha = 0.25
[polkit]
# Polkit authentication prompt (sudo/password dialogs). scrim is the
# darkening layer behind the card; background is the card itself.
# text-error tints the lock icon, password text, and placeholder when
# authentication fails. border-alpha applies to both border and
# border-error (the two states are mutually exclusive in time).
background = "{{ background }}"
background-alpha = 1.0
text = "{{ foreground }}"
text-error = "{{ red }}"
border = "hyprland.active-border"
border-error = "{{ red }}"
border-alpha = 1.0
scrim = "{{ background }}"
scrim-alpha = 0.5
# accent is the lock-icon glyph color + text-selection tint.
accent = "{{ accent }}"
[lock]
# Lock screen password input. background/background-alpha control the
# centered input field card; border/border-active/border-error cycle
# through idle, typing/authenticating, and wrong-password states.
# border-alpha applies to all three border states (they are mutually
# exclusive in time).
background = "{{ background }}"
background-alpha = 0.8
text = "{{ foreground }}"
placeholder = "{{ mix foreground background 34% }}"
text-error = "{{ red }}"
border = "hyprland.active-border"
border-active = "hyprland.active-border"
border-error = "{{ red }}"
border-alpha = 1.0
# selection is the text-selection tint inside the input field.
selection = "{{ accent }}"
selection-alpha = 0.45
[image-picker]
# Carousel-style picker. The picker has no card surface, so `scrim` is
# the full-screen wash. Per-slice dim overlays and text outlines on top
# of the scrim track the foundational background color directly.
# unselected-border-alpha softens carousel slices that aren't selected.
scrim = "{{ background }}"
scrim-alpha = 0.5
text = "{{ foreground }}"
selected-border = "{{ accent }}"
selected-border-alpha = 1.0
unselected-border = "{{ foreground }}"
unselected-border-alpha = 0.28
+7 -7
View File
@@ -1,10 +1,10 @@
name = "omarchy"
background = "{{ background }}"
surface = "{{ color0 }}"
surface = "{{ darker_background }}"
text = "{{ foreground }}"
accent = "{{ color7 }}"
danger = "{{ color1 }}"
muted = "{{ color8 }}"
highlight = "{{ color4 }}"
border = "{{ color2 }}"
dim_text = "{{ color3 }}"
accent = "{{ accent }}"
danger = "{{ red }}"
muted = "{{ muted }}"
highlight = "{{ selection }}"
border = "{{ light_foreground }}"
dim_text = "{{ dark_foreground }}"
+36
View File
@@ -0,0 +1,36 @@
{
"name": "Omarchy",
"appearance": "{{ mode }}",
"canvas": "{{ background }}",
"accent": "{{ accent }}",
"colors": {
"chrome": "{{ background }}",
"toolbar": "{{ background }}",
"toolbarForeground": "{{ foreground }}",
"toolbarBorder": "{{ muted }}",
"text": "{{ foreground }}",
"border": "{{ muted }}",
"focus": "{{ accent }}",
"sidebar": "{{ dark_background }}",
"sidebarForeground": "{{ foreground }}",
"sidebarBorder": "{{ muted }}",
"sidebarRowHover": "{{ mix dark_background foreground 6% }}",
"sidebarRowActive": "{{ mix dark_background accent 18% }}",
"sidebarRowSelected": "{{ selection }}",
"error": "{{ mix red foreground 35% }}",
"warning": "{{ mix yellow foreground 35% }}",
"codeBackground": "{{ dark_background }}",
"codeForeground": "{{ foreground }}",
"terminalBackground": "{{ background }}",
"terminalForeground": "{{ foreground }}",
"terminalCursor": "{{ bright_foreground }}",
"terminalSelection": "{{ selection }}",
"terminalScrollbar": "{{ muted }}",
"terminalScrollbarHover": "{{ dark_foreground }}"
}
}
+9 -9
View File
@@ -1,25 +1,25 @@
color_bg0="{{ background }}"
color_bg1="{{ color0 }}"
color_bg2="{{ color7 }}"
color_bg1="{{ dark_background }}"
color_bg2="{{ darker_background }}"
color_fg0="{{ foreground }}"
color_fg1="{{ color3 }}"
color_fg1="{{ light_foreground }}"
color_status_fg="{{ color4 }}"
color_status_bg="{{ color0 }}"
color_status_fg="{{ light_foreground }}"
color_status_bg="{{ muted }}"
color_selected_fg="{{ selection_foreground }}"
color_selected_bg="{{ selection_background }}"
color_highlight_fg="{{ color2 }}"
color_highlight_fg="{{ yellow }}"
color_highlight_bg="{{ background }}"
color_current_fg="{{ color1 }}"
color_current_fg="{{ orange }}"
color_current_bg="{{ background }}"
color_check_fg="{{ color5 }}"
color_check_fg="{{ green }}"
pane_border_fg="{{ foreground }}"
pane_border_selected_fg="{{ color2 }}"
pane_border_selected_fg="{{ bright_foreground }}"
set -g @prefix_highlight_fg "${color_highlight_fg}"
set -g @prefix_highlight_bg "${color_highlight_bg}"
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -63,7 +63,7 @@ dotfiles.default_mode = "symlink-each"
"~/.local/share/fonts/" = { source = "fonts", mode = "copy" }
# Desktop files
"~/.local/share/applications" = "desktop"
"~/.local/share/applications" = { source = "desktop", mode = "symlink-each" }
# scripts.
"~/.local/bin/hyprland-activeworkspace" = { source = "script/hyprland-activeworkspace", mode = "symlink" }
@@ -115,6 +115,7 @@ dotfiles.default_mode = "symlink-each"
"~/.local/bin/omarchy-theme-bg-next" = { source = "script/omarchy-theme-bg-next", mode = "symlink" }
"~/.local/bin/omarchy-theme-bg-set" = { source = "script/omarchy-theme-bg-set", mode = "symlink" }
"~/.local/bin/omarchy-theme-colors-from-alacritty" = { source = "script/omarchy-theme-colors-from-alacritty", mode = "symlink" }
"~/.local/bin/omarchy-theme-color" = { source = "script/omarchy-theme-color", mode = "symlink" }
"~/.local/bin/omarchy-theme-current" = { source = "script/omarchy-theme-current", mode = "symlink" }
"~/.local/bin/omarchy-theme-install" = { source = "script/omarchy-theme-install", mode = "symlink" }
"~/.local/bin/omarchy-theme-list" = { source = "script/omarchy-theme-list", mode = "symlink" }
+304
View File
@@ -0,0 +1,304 @@
#!/bin/bash
# omarchy:summary=Resolve semantic colors from an Omarchy theme colors.toml
# omarchy:args=[--file <colors.toml>] (--all | --raw | <key> [fallback])
# omarchy:hidden=true
# Shared colors.toml parser/resolver. The alias/fallback cascade mirrors what
# omarchy-theme-set-templates bakes into the generated configs at theme-set
# time, so every consumer (templates, OSC sequences, tmux, GNOME, previews)
# resolves the exact same palette.
#
# --all print every resolved key<TAB>value pair (sorted by key)
# --raw print only the key<TAB>value pairs defined in the file
# <key> [fallback] print one resolved value; the fallback is tried as
# another palette key first, then used verbatim
#
# Theme mode precedence: `mode` key, legacy `theme_type` key, a light.mode
# file beside the colors.toml, background luminance auto-detect, dark.
COLORS_FILE="$HOME/.local/state/omarchy/current/theme/colors.toml"
OUTPUT=""
QUERY_KEY=""
QUERY_FALLBACK=""
usage() {
echo "Usage: omarchy-theme-color [--file <colors.toml>] (--all | --raw | <key> [fallback])"
}
while (( $# > 0 )); do
case "$1" in
--file)
COLORS_FILE="${2:-}"
shift 2
;;
--all)
OUTPUT="all"
shift
;;
--raw)
OUTPUT="raw"
shift
;;
-h | --help)
usage
exit 0
;;
*)
if [[ -z $QUERY_KEY ]]; then
QUERY_KEY="$1"
elif [[ -z $QUERY_FALLBACK ]]; then
QUERY_FALLBACK="$1"
else
usage >&2
exit 1
fi
shift
;;
esac
done
if [[ -z $OUTPUT && -z $QUERY_KEY ]] || [[ -n $OUTPUT && -n $QUERY_KEY ]]; then
usage >&2
exit 1
fi
COLORS_DIR=$(dirname "$COLORS_FILE")
declare -A THEME_COLORS
# Mix two hex colors. Amount may be a fraction (0.30) or percentage (30%).
mix_color() {
local start="${1#\#}"
local end="${2#\#}"
local amount="$3"
awk -v start="$start" -v end="$end" -v amount="$amount" '
function hex_value(char) {
return index("0123456789abcdef", tolower(char)) - 1
}
function hex_pair_to_int(hex, idx) {
return hex_value(substr(hex, idx, 1)) * 16 + hex_value(substr(hex, idx + 1, 1))
}
BEGIN {
if (amount ~ /%$/) {
sub(/%$/, "", amount)
amount = amount / 100
} else {
amount += 0
if (amount > 1) amount = amount / 100
}
if (amount < 0) amount = 0
if (amount > 1) amount = 1
start_r = hex_pair_to_int(start, 1)
start_g = hex_pair_to_int(start, 3)
start_b = hex_pair_to_int(start, 5)
end_r = hex_pair_to_int(end, 1)
end_g = hex_pair_to_int(end, 3)
end_b = hex_pair_to_int(end, 5)
red = int(start_r * (1 - amount) + end_r * amount + 0.5)
green = int(start_g * (1 - amount) + end_g * amount + 0.5)
blue = int(start_b * (1 - amount) + end_b * amount + 0.5)
printf "#%02x%02x%02x\n", red, green, blue
}
'
}
alias_theme_color() {
local key="$1"
local fallback="$2"
[[ ${THEME_COLORS[$key]} ]] || THEME_COLORS[$key]="${THEME_COLORS[$fallback]}"
}
resolve_theme_mode() {
local bg_hex lum
[[ ${THEME_COLORS[mode]} ]] || THEME_COLORS[mode]="${THEME_COLORS[theme_type]}"
[[ ${THEME_COLORS[mode]} ]] && return
if [[ -f $COLORS_DIR/light.mode ]]; then
THEME_COLORS[mode]="light"
elif [[ ${THEME_COLORS[background]} =~ ^#[0-9A-Fa-f]{6}$ ]]; then
bg_hex="${THEME_COLORS[background]#\#}"
lum=$(( $(printf "%d" "0x${bg_hex:0:2}") + $(printf "%d" "0x${bg_hex:2:2}") + $(printf "%d" "0x${bg_hex:4:2}") ))
(( lum > 382 )) && THEME_COLORS[mode]="light" || THEME_COLORS[mode]="dark"
else
THEME_COLORS[mode]="dark"
fi
}
parse_colors_file() {
local key value
[[ -f $COLORS_FILE ]] || return 0
while IFS='=' read -r key value; do
key="${key//[\"\' ]/}" # strip quotes and spaces from key
[[ $key && $key != \#* ]] || continue # skip empty lines and comments
if [[ $value == *[\"\']* ]]; then
value="${value#*[\"\']}"
value="${value%%[\"\']*}" # extract value between quotes (ignores inline comments)
else
value="${value#"${value%%[![:space:]]*}"}"
value="${value%"${value##*[![:space:]]}"}" # trim unquoted values
fi
# Values reach consumers as sed replacement text, so the charset excludes
# the delimiter, backslash, and & while still covering everything a real
# palette holds: hex, rgb()/rgba() lists, gradient angles like -45deg,
# decimals, and bare words. Rejections are announced so a third-party theme
# doesn't lose a key silently and leave a raw {{ placeholder }} behind.
if [[ ! $key =~ ^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-]+$ ]]; then
printf 'omarchy-theme-color: skipping key with unsupported characters\n' >&2
continue
fi
if [[ ! $value =~ ^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#(),._+/%\ -]*$ ]]; then
printf 'omarchy-theme-color: skipping %s: unsupported characters in value\n' "$key" >&2
continue
fi
THEME_COLORS[$key]="$value"
[[ $OUTPUT == "raw" ]] && printf '%s\t%s\n' "$key" "$value"
done <"$COLORS_FILE"
return 0
}
resolve_theme_colors() {
local key
# Accept the complete legacy short-name palette before applying ANSI
# fallbacks or deriving shades. Canonical names take precedence when a theme
# defines both forms.
declare -A legacy_palette_alias=(
[background]=bg
[dark_background]=dark_bg
[darker_background]=darker_bg
[lighter_background]=lighter_bg
[foreground]=fg
[dark_foreground]=dark_fg
[light_foreground]=light_fg
[bright_foreground]=bright_fg
)
for key in "${!legacy_palette_alias[@]}"; do
alias_theme_color "$key" "${legacy_palette_alias[$key]}"
done
# Themes generated before the semantic palette may only define ANSI names.
[[ ${THEME_COLORS[background]} ]] || THEME_COLORS[background]="${THEME_COLORS[color0]}"
[[ ${THEME_COLORS[foreground]} ]] || THEME_COLORS[foreground]="${THEME_COLORS[color7]}"
[[ ${THEME_COLORS[background]} ]] && THEME_COLORS[color0]="${THEME_COLORS[background]}"
[[ ${THEME_COLORS[foreground]} ]] && THEME_COLORS[color7]="${THEME_COLORS[foreground]}"
# Legacy compatibility: map ANSI color0..color15 to semantic names.
declare -A legacy_alias=(
[red]=color1
[green]=color2
[yellow]=color3
[blue]=color4
[magenta]=color5
[cyan]=color6
[bright_red]=color9
[bright_green]=color10
[bright_yellow]=color11
[bright_blue]=color12
[bright_magenta]=color13
[bright_cyan]=color14
)
for key in "${!legacy_alias[@]}"; do
alias_theme_color "$key" "${legacy_alias[$key]}"
done
alias_theme_color magenta purple
alias_theme_color bright_magenta bright_purple
[[ ${THEME_COLORS[light_foreground]} ]] || THEME_COLORS[light_foreground]="${THEME_COLORS[color7]:-${THEME_COLORS[foreground]}}"
[[ ${THEME_COLORS[bright_foreground]} ]] || THEME_COLORS[bright_foreground]="${THEME_COLORS[color15]:-${THEME_COLORS[foreground]}}"
THEME_COLORS[cursor]="${THEME_COLORS[bright_foreground]}"
[[ ${THEME_COLORS[lighter_background]} ]] || THEME_COLORS[lighter_background]="${THEME_COLORS[color0]:-${THEME_COLORS[background]}}"
[[ ${THEME_COLORS[dark_foreground]} ]] || THEME_COLORS[dark_foreground]="${THEME_COLORS[color8]:-${THEME_COLORS[foreground]}}"
[[ ${THEME_COLORS[muted]} ]] || THEME_COLORS[muted]="${THEME_COLORS[color8]:-${THEME_COLORS[dark_foreground]}}"
[[ ${THEME_COLORS[selection]} ]] || THEME_COLORS[selection]="${THEME_COLORS[selection_background]:-${THEME_COLORS[color8]:-${THEME_COLORS[color0]:-${THEME_COLORS[background]}}}}"
[[ ${THEME_COLORS[selection_background]} ]] || THEME_COLORS[selection_background]="${THEME_COLORS[selection]}"
[[ ${THEME_COLORS[selection_foreground]} ]] || THEME_COLORS[selection_foreground]="${THEME_COLORS[bright_foreground]}"
[[ ${THEME_COLORS[orange]} ]] || THEME_COLORS[orange]="${THEME_COLORS[yellow]}"
[[ ${THEME_COLORS[brown]} ]] || THEME_COLORS[brown]=$(mix_color "${THEME_COLORS[orange]}" "#000000" 50%)
# Auto-derive shades from base accents when not defined and not aliased from colorN
[[ ${THEME_COLORS[dark_background]} ]] || THEME_COLORS[dark_background]=$(mix_color "${THEME_COLORS[background]}" "#000000" 25%)
[[ ${THEME_COLORS[darker_background]} ]] || THEME_COLORS[darker_background]=$(mix_color "${THEME_COLORS[background]}" "#000000" 50%)
[[ ${THEME_COLORS[bright_red]} ]] || THEME_COLORS[bright_red]=$(mix_color "${THEME_COLORS[red]}" "#ffffff" 20%)
[[ ${THEME_COLORS[bright_yellow]} ]] || THEME_COLORS[bright_yellow]=$(mix_color "${THEME_COLORS[yellow]}" "#ffffff" 20%)
[[ ${THEME_COLORS[bright_green]} ]] || THEME_COLORS[bright_green]=$(mix_color "${THEME_COLORS[green]}" "#ffffff" 20%)
[[ ${THEME_COLORS[bright_cyan]} ]] || THEME_COLORS[bright_cyan]=$(mix_color "${THEME_COLORS[cyan]}" "#ffffff" 20%)
[[ ${THEME_COLORS[bright_blue]} ]] || THEME_COLORS[bright_blue]=$(mix_color "${THEME_COLORS[blue]}" "#ffffff" 20%)
[[ ${THEME_COLORS[bright_magenta]} ]] || THEME_COLORS[bright_magenta]=$(mix_color "${THEME_COLORS[magenta]}" "#ffffff" 20%)
alias_theme_color purple magenta
alias_theme_color bright_purple bright_magenta
# Keep semantic themes compatible with consumers that still reference the
# legacy ANSI names directly.
declare -A ansi_alias=(
[color0]=background
[color1]=red
[color2]=green
[color3]=yellow
[color4]=blue
[color5]=magenta
[color6]=cyan
[color7]=foreground
[color8]=muted
[color9]=bright_red
[color10]=bright_green
[color11]=bright_yellow
[color12]=bright_blue
[color13]=bright_magenta
[color14]=bright_cyan
[color15]=bright_foreground
)
for key in "${!ansi_alias[@]}"; do
alias_theme_color "$key" "${ansi_alias[$key]}"
done
# Keep canonical themes compatible with old user templates and consumers
# that still query the short palette names directly.
for key in "${!legacy_palette_alias[@]}"; do
if [[ ${THEME_COLORS[$key]} ]]; then
THEME_COLORS["${legacy_palette_alias[$key]}"]="${THEME_COLORS[$key]}"
fi
done
resolve_theme_mode
THEME_COLORS[theme_type]="${THEME_COLORS[mode]}"
}
parse_colors_file
if [[ $OUTPUT == "raw" ]]; then
exit 0
fi
resolve_theme_colors
if [[ $OUTPUT == "all" ]]; then
while IFS= read -r key; do
printf '%s\t%s\n' "$key" "${THEME_COLORS[$key]}"
done < <(printf '%s\n' "${!THEME_COLORS[@]}" | LC_ALL=C sort)
exit 0
fi
value="${THEME_COLORS[$QUERY_KEY]:-}"
if [[ -z $value && -n $QUERY_FALLBACK ]]; then
value="${THEME_COLORS[$QUERY_FALLBACK]:-$QUERY_FALLBACK}"
fi
[[ -n $value ]] || exit 1
printf '%s\n' "$value"
+370 -23
View File
@@ -7,7 +7,8 @@ TEMPLATES_DIR="$DOTFILES_DIR/default/themed"
USER_TEMPLATES_DIR="$HOME/.config/omarchy/themed"
NEXT_THEME_DIR="$HOME/.local/state/omarchy/current/next-theme"
COLORS_FILE="$NEXT_THEME_DIR/colors.toml"
THEME_MODE="$NEXT_THEME_DIR/light.mode"
declare -A THEME_COLORS
# Convert hex color to decimal RGB (e.g., "#1e1e2e" -> "30,30,46")
hex_to_rgb() {
@@ -15,35 +16,379 @@ hex_to_rgb() {
printf "%d,%d,%d" "0x${hex:0:2}" "0x${hex:2:2}" "0x${hex:4:2}"
}
# Mix two hex colors. Amount may be a fraction (0.30) or percentage (30%).
mix_color() {
local start="${1#\#}"
local end="${2#\#}"
local amount="$3"
awk -v start="$start" -v end="$end" -v amount="$amount" '
function hex_value(char) {
return index("0123456789abcdef", tolower(char)) - 1
}
function hex_pair_to_int(hex, idx) {
return hex_value(substr(hex, idx, 1)) * 16 + hex_value(substr(hex, idx + 1, 1))
}
BEGIN {
if (amount ~ /%$/) {
sub(/%$/, "", amount)
amount = amount / 100
} else {
amount += 0
if (amount > 1) amount = amount / 100
}
if (amount < 0) amount = 0
if (amount > 1) amount = 1
start_r = hex_pair_to_int(start, 1)
start_g = hex_pair_to_int(start, 3)
start_b = hex_pair_to_int(start, 5)
end_r = hex_pair_to_int(end, 1)
end_g = hex_pair_to_int(end, 3)
end_b = hex_pair_to_int(end, 5)
red = int(start_r * (1 - amount) + end_r * amount + 0.5)
green = int(start_g * (1 - amount) + end_g * amount + 0.5)
blue = int(start_b * (1 - amount) + end_b * amount + 0.5)
printf "#%02x%02x%02x\n", red, green, blue
}
'
}
trim() {
local value="$1"
value="${value#"${value%%[![:space:]]*}"}"
value="${value%"${value##*[![:space:]]}"}"
printf "%s" "$value"
}
resolve_theme_ref() {
local ref="$1"
local fallback="${2:-}"
if [[ -n ${THEME_COLORS[$ref]+_} ]]; then
printf "%s" "${THEME_COLORS[$ref]}"
elif [[ -n $fallback && -n ${THEME_COLORS[$fallback]+_} ]]; then
printf "%s" "${THEME_COLORS[$fallback]}"
elif [[ -n $fallback ]]; then
printf "%s" "$fallback"
else
printf "%s" "$ref"
fi
}
resolve_gradient_color() {
local color
color=$(trim "$1")
if [[ -n ${THEME_COLORS[$color]+_} ]]; then
color="${THEME_COLORS[$color]}"
fi
printf "%s" "$color"
}
parse_gradient() {
local spec="$1"
local part color
local -a parts
GRADIENT_COLORS=()
GRADIENT_ANGLE=""
read -ra parts <<<"$spec"
for part in "${parts[@]}"; do
[[ -n $part ]] || continue
if [[ $part =~ ^-?[0-9]+([.][0-9]+)?deg$ ]]; then
GRADIENT_ANGLE="${part%deg}"
else
color=$(resolve_gradient_color "$part")
GRADIENT_COLORS+=("$color")
fi
done
}
color_to_shell_hex() {
local color r g b
color=$(resolve_gradient_color "$1")
if [[ $color =~ ^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$ ]]; then
printf "#%s" "${color:1:6}"
elif [[ $color =~ ^[Rr][Gg][Bb][Aa]?\(([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?\)$ ]]; then
printf "#%s" "${BASH_REMATCH[1]}"
elif [[ $color =~ ^[Rr][Gg][Bb][Aa]?\(([0-9]+),([0-9]+),([0-9]+)(,[0-9.]+)?\)$ ]]; then
r=${BASH_REMATCH[1]}
g=${BASH_REMATCH[2]}
b=${BASH_REMATCH[3]}
(( r > 255 )) && r=255
(( g > 255 )) && g=255
(( b > 255 )) && b=255
printf "#%02x%02x%02x" "$r" "$g" "$b"
elif [[ $color =~ ^0x[0-9A-Fa-f]{8}$ ]]; then
printf "#%s" "${color:4:6}"
else
printf "%s" "$color"
fi
}
hypr_gradient_value() {
local spec color index
spec=$(resolve_theme_ref "$1" "${2:-}")
parse_gradient "$spec"
if (( ${#GRADIENT_COLORS[@]} == 0 )); then
printf '"%s"' "$spec"
elif (( ${#GRADIENT_COLORS[@]} == 1 )); then
printf '"%s"' "${GRADIENT_COLORS[0]}"
else
printf '{ colors = {'
for index in "${!GRADIENT_COLORS[@]}"; do
(( index > 0 )) && printf ','
printf ' "%s"' "${GRADIENT_COLORS[$index]}"
done
printf ' }'
[[ -n $GRADIENT_ANGLE ]] && printf ', angle = %s' "$GRADIENT_ANGLE"
printf ' }'
fi
}
gradient_start_value() {
local spec
spec=$(resolve_theme_ref "$1" "${2:-}")
parse_gradient "$spec"
if (( ${#GRADIENT_COLORS[@]} == 0 )); then
color_to_shell_hex "$spec"
else
color_to_shell_hex "${GRADIENT_COLORS[0]}"
fi
}
shell_gradient_value() {
local spec index
spec=$(resolve_theme_ref "$1" "${2:-}")
parse_gradient "$spec"
if (( ${#GRADIENT_COLORS[@]} == 0 )); then
printf "%s" "$spec"
return
fi
for index in "${!GRADIENT_COLORS[@]}"; do
(( index > 0 )) && printf " "
printf "%s" "${GRADIENT_COLORS[$index]}"
done
[[ -n $GRADIENT_ANGLE ]] && printf " %sdeg" "$GRADIENT_ANGLE"
}
add_template_value() {
local key="$1"
local value="$2"
local rgb
printf 's|{{ %s }}|%s|g\n' "$key" "$value" >>"$sed_script"
printf 's|{{ %s_strip }}|%s|g\n' "$key" "${value#\#}" >>"$sed_script"
if [[ $value =~ ^#[0-9A-Fa-f]{6}$ ]]; then
rgb=$(hex_to_rgb "$value")
printf 's|{{ %s_rgb }}|%s|g\n' "$key" "$rgb" >>"$sed_script"
fi
}
add_mix_value() {
local token="$1"
local content fn start_key end_key amount start end value
content="${token#\{\{}"
content="${content%\}\}}"
read -r fn start_key end_key amount <<<"$content"
start="${THEME_COLORS[$start_key]:-}"
end="${THEME_COLORS[$end_key]:-}"
[[ $start =~ ^#[0-9A-Fa-f]{6}$ && $end =~ ^#[0-9A-Fa-f]{6}$ ]] || return
value=$(mix_color "$start" "$end" "$amount")
case "$fn" in
mix)
;;
mix_strip)
value="${value#\#}"
;;
mix_rgb)
value=$(hex_to_rgb "$value")
;;
*)
return
;;
esac
printf 's|%s|%s|g\n' "$token" "$value" >>"$sed_script"
}
add_mix_values() {
local tpl token
local -A seen=()
for tpl in "${template_files[@]}"; do
while IFS= read -r token; do
[[ -n ${seen[$token]:-} ]] && continue
seen[$token]=1
add_mix_value "$token"
done < <(grep -hEo '\{\{[[:space:]]*mix(_strip|_rgb)?[[:space:]]+[A-Za-z0-9_]+[[:space:]]+[A-Za-z0-9_]+[[:space:]]+[0-9]+([.][0-9]+)?%?[[:space:]]*\}\}' "$tpl" 2>/dev/null || true)
done
}
add_gradient_function_value() {
local token="$1"
local content fn key fallback value
content="${token#\{\{}"
content="${content%\}\}}"
read -r fn key fallback <<<"$content"
case "$fn" in
hypr_gradient)
value=$(hypr_gradient_value "$key" "$fallback")
;;
gradient_start)
value=$(gradient_start_value "$key" "$fallback")
;;
shell_gradient)
value=$(shell_gradient_value "$key" "$fallback")
;;
*)
return
;;
esac
printf 's|%s|%s|g\n' "$token" "$value" >>"$sed_script"
}
add_gradient_function_values() {
local tpl token
local -A seen=()
for tpl in "${template_files[@]}"; do
while IFS= read -r token; do
[[ -n ${seen[$token]:-} ]] && continue
seen[$token]=1
add_gradient_function_value "$token"
done < <(grep -hEo '\{\{[[:space:]]*(hypr_gradient|gradient_start|shell_gradient)[[:space:]]+[^}]+[[:space:]]*\}\}' "$tpl" 2>/dev/null || true)
done
}
strip_shell_section_header() {
local section="$1"
local file="$2"
awk -v section="$section" '
BEGIN { skipping_header = 0 }
/^[[:space:]]*\[[^]]+\][[:space:]]*($|#)/ {
if ($0 ~ "^[[:space:]]*\\[" section "\\][[:space:]]*($|#)") {
skipping_header = 1
next
}
}
{ print }
' "$file"
}
apply_shell_section_override() {
local override="$1"
local section tmp body
[[ -f $NEXT_THEME_DIR/shell.toml ]] || return
[[ -f $override ]] || return
section=$(basename "$override")
section="${section#shell.}"
section="${section%.toml}"
[[ $section =~ ^[A-Za-z0-9_-]+$ ]] || return
tmp=$(mktemp)
body=$(mktemp)
strip_shell_section_header "$section" "$override" >"$body"
awk -v section="$section" -v body="$body" '
function emit_override() {
if (emitted) return
print "[" section "]"
while ((getline line < body) > 0) print line
close(body)
emitted = 1
}
/^[[:space:]]*\[[^]]+\][[:space:]]*($|#)/ {
if (in_section) {
emit_override()
in_section = 0
}
if ($0 ~ "^[[:space:]]*\\[" section "\\][[:space:]]*($|#)") {
in_section = 1
next
}
}
!in_section { print }
END {
if (in_section || !emitted) {
if (NR > 0) print ""
emit_override()
}
}
' "$NEXT_THEME_DIR/shell.toml" >"$tmp"
mv "$tmp" "$NEXT_THEME_DIR/shell.toml"
rm "$body"
}
apply_shell_section_overrides() {
local override
shopt -s nullglob
for override in "$NEXT_THEME_DIR"/shell.*.toml; do
[[ $(basename "$override") != "shell.toml" ]] || continue
apply_shell_section_override "$override"
done
}
# Only generate dynamic templates for themes with a colors.toml definition
if [[ -f $COLORS_FILE ]]; then
sed_script=$(mktemp)
key="theme_mode";
if [[ -f $THEME_MODE ]]; then
printf 's|{{ %s }}|%s|g\n' "$key" "light" # {{ key }} -> value
else
printf 's|{{ %s }}|%s|g\n' "$key" "dark" # {{ key }} -> value
fi >"$sed_script"
while IFS='=' read -r key value; do
key="${key//[\"\' ]/}" # strip quotes and spaces from key
[[ $key && $key != \#* ]] || continue # skip empty lines and comments
value="${value#*[\"\']}"
value="${value%%[\"\']*}" # extract value between quotes (ignores inline comments)
printf 's|{{ %s }}|%s|g\n' "$key" "$value" # {{ key }} -> value
printf 's|{{ %s_strip }}|%s|g\n' "$key" "${value#\#}" # {{ key_strip }} -> value without leading #
if [[ $value =~ ^# ]]; then
rgb=$(hex_to_rgb "$value")
echo "s|{{ ${key}_rgb }}|${rgb}|g"
fi
done <"$COLORS_FILE" >>"$sed_script"
shopt -s nullglob
template_files=("$USER_TEMPLATES_DIR"/*.tpl "$TEMPLATES_DIR"/*.tpl)
# Parsing and alias/fallback resolution (legacy colorN names, derived
# shades, mode/theme_type) is shared with every other colors.toml consumer.
while IFS=$'\t' read -r key value; do
THEME_COLORS[$key]="$value"
done < <(omarchy-theme-color --file "$COLORS_FILE" --all)
for key in "${!THEME_COLORS[@]}"; do
add_template_value "$key" "${THEME_COLORS[$key]}"
done
add_mix_values
add_gradient_function_values
# Process user templates first, then built-in templates (user overrides built-in)
for tpl in "$USER_TEMPLATES_DIR"/*.tpl "$TEMPLATES_DIR"/*.tpl; do
for tpl in "${template_files[@]}"; do
filename=$(basename "$tpl" .tpl)
output_path="$NEXT_THEME_DIR/$filename"
@@ -55,3 +400,5 @@ if [[ -f $COLORS_FILE ]]; then
rm "$sed_script"
fi
apply_shell_section_overrides
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#1e66f5"
cursor = "#dc8a78"
foreground = "#4c4f69"
background = "#eff1f5"
selection_foreground = "#eff1f5"
selection_background = "#dc8a78"
mode = "light"
color0 = "#bcc0cc"
color1 = "#d20f39"
color2 = "#40a02b"
color3 = "#df8e1d"
color4 = "#1e66f5"
color5 = "#ea76cb"
color6 = "#179299"
color7 = "#5c5f77"
color8 = "#acb0be"
color9 = "#d20f39"
color10 = "#40a02b"
color11 = "#df8e1d"
color12 = "#1e66f5"
color13 = "#ea76cb"
color14 = "#179299"
color15 = "#6c6f85"
accent = "#1e66f5"
selection = "#ccd0da"
muted = "#acb0be"
background = "#eff1f5"
dark_background = "#e3e4e8"
darker_background = "#d7d8dc"
lighter_background = "#dce0e8"
foreground = "#4c4f69"
dark_foreground = "#9ca0b0"
light_foreground = "#5c5f77"
bright_foreground = "#4c4f69"
red = "#d20f39"
yellow = "#df8e1d"
orange = "#d84e2b"
green = "#40a02b"
cyan = "#179299"
blue = "#1e66f5"
magenta = "#ea76cb"
brown = "#6c2715"
bright_red = "#d20f39"
bright_yellow = "#df8e1d"
bright_green = "#40a02b"
bright_cyan = "#179299"
bright_blue = "#1e66f5"
bright_magenta = "#ea76cb"
Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#89b4fa"
cursor = "#f5e0dc"
foreground = "#cdd6f4"
background = "#1e1e2e"
selection_foreground = "#1e1e2e"
selection_background = "#f5e0dc"
mode = "dark"
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 = "#a6adc8"
accent = "#89b4fa"
selection = "#45475a"
muted = "#585b70"
background = "#1e1e2e"
dark_background = "#161622"
darker_background = "#101019"
lighter_background = "#313244"
foreground = "#cdd6f4"
dark_foreground = "#6c7086"
light_foreground = "#bac2de"
bright_foreground = "#cdd6f4"
red = "#f38ba8"
yellow = "#f9e2af"
orange = "#f6b6ab"
green = "#a6e3a1"
cyan = "#94e2d5"
blue = "#89b4fa"
magenta = "#f5c2e7"
brown = "#7b5b55"
bright_red = "#f38ba8"
bright_yellow = "#f9e2af"
bright_green = "#a6e3a1"
bright_cyan = "#94e2d5"
bright_blue = "#89b4fa"
bright_magenta = "#f5c2e7"
Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#7d82d9"
cursor = "#ffcead"
foreground = "#ffcead"
background = "#060B1E"
selection_foreground = "#060B1E"
selection_background = "#ffcead"
mode = "dark"
color0 = "#3C486D"
color1 = "#ED5B5A"
color2 = "#92a593"
color3 = "#E9BB4F"
color4 = "#7d82d9"
color5 = "#c89dc1"
color6 = "#a3bfd1"
color7 = "#F99957"
color8 = "#6d7db6"
color9 = "#faaaa9"
color10 = "#c4cfc4"
color11 = "#f7dc9c"
color12 = "#c2c4f0"
color13 = "#ead7e7"
color14 = "#dfeaf0"
color15 = "#ffcead"
accent = "#7d82d9"
selection = "#252e56"
muted = "#6d7db6"
background = "#060B1E"
dark_background = "#040816"
darker_background = "#030610"
lighter_background = "#131a3a"
foreground = "#ffcead"
dark_foreground = "#6d7db6"
light_foreground = "#c9b8a6"
bright_foreground = "#ffcead"
red = "#ED5B5A"
yellow = "#E9BB4F"
orange = "#eb8b54"
green = "#92a593"
cyan = "#a3bfd1"
blue = "#7d82d9"
magenta = "#c89dc1"
brown = "#75452a"
bright_red = "#faaaa9"
bright_yellow = "#f7dc9c"
bright_green = "#c4cfc4"
bright_cyan = "#dfeaf0"
bright_blue = "#c2c4f0"
bright_magenta = "#ead7e7"
Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#7fbbb3"
cursor = "#d3c6aa"
foreground = "#d3c6aa"
background = "#2d353b"
selection_foreground = "#2d353b"
selection_background = "#d3c6aa"
mode = "dark"
color0 = "#475258"
color1 = "#e67e80"
color2 = "#a7c080"
color3 = "#dbbc7f"
color4 = "#7fbbb3"
color5 = "#d699b6"
color6 = "#83c092"
color7 = "#d3c6aa"
color8 = "#475258"
color9 = "#e67e80"
color10 = "#a7c080"
color11 = "#dbbc7f"
color12 = "#7fbbb3"
color13 = "#d699b6"
color14 = "#83c092"
color15 = "#d3c6aa"
accent = "#7fbbb3"
selection = "#3d484d"
muted = "#475258"
background = "#2d353b"
dark_background = "#21272c"
darker_background = "#181d20"
lighter_background = "#343f44"
foreground = "#d3c6aa"
dark_foreground = "#4f585e"
light_foreground = "#9da9a0"
bright_foreground = "#d3c6aa"
red = "#e67e80"
yellow = "#dbbc7f"
orange = "#e09d7f"
green = "#a7c080"
cyan = "#83c092"
blue = "#7fbbb3"
magenta = "#d699b6"
brown = "#704e3f"
bright_red = "#e67e80"
bright_yellow = "#dbbc7f"
bright_green = "#a7c080"
bright_cyan = "#83c092"
bright_blue = "#7fbbb3"
bright_magenta = "#d699b6"
Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#205EA6"
cursor = "#100F0F"
foreground = "#100F0F"
background = "#FFFCF0"
selection_foreground = "#100F0F"
selection_background = "#CECDC3"
mode = "light"
color0 = "#DAD8CE"
color1 = "#D14D41"
color2 = "#879A39"
color3 = "#D0A215"
color4 = "#205EA6"
color5 = "#CE5D97"
color6 = "#3AA99F"
color7 = "#B7B5AC"
color8 = "#100F0F"
color9 = "#D14D41"
color10 = "#879A39"
color11 = "#D0A215"
color12 = "#4385BE"
color13 = "#CE5D97"
color14 = "#3AA99F"
color15 = "#CECDC3"
accent = "#205EA6"
selection = "#CECDC3"
muted = "#B7B5AC"
background = "#FFFCF0"
dark_background = "#f2efe4"
darker_background = "#e5e2d8"
lighter_background = "#E6E4D9"
foreground = "#100F0F"
dark_foreground = "#878580"
light_foreground = "#403E3C"
bright_foreground = "#100F0F"
red = "#D14D41"
yellow = "#D0A215"
orange = "#d0772b"
green = "#879A39"
cyan = "#3AA99F"
blue = "#205EA6"
magenta = "#CE5D97"
brown = "#683b15"
bright_red = "#D14D41"
bright_yellow = "#D0A215"
bright_green = "#879A39"
bright_cyan = "#3AA99F"
bright_blue = "#4385BE"
bright_magenta = "#CE5D97"
Binary file not shown.

After

Width:  |  Height:  |  Size: 1014 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#7daea3"
cursor = "#bdae93"
foreground = "#d4be98"
background = "#282828"
selection_foreground = "#ebdbb2"
selection_background = "#d65d0e"
mode = "dark"
color0 = "#3c3836"
color1 = "#ea6962"
color2 = "#a9b665"
color3 = "#d8a657"
color4 = "#7daea3"
color5 = "#d3869b"
color6 = "#89b482"
color7 = "#d4be98"
color8 = "#3c3836"
color9 = "#ea6962"
color10 = "#a9b665"
color11 = "#d8a657"
color12 = "#7daea3"
color13 = "#d3869b"
color14 = "#89b482"
color15 = "#d4be98"
accent = "#7daea3"
selection = "#504945"
muted = "#665c54"
background = "#282828"
dark_background = "#1e1e1e"
darker_background = "#161616"
lighter_background = "#3c3836"
foreground = "#d4be98"
dark_foreground = "#7c6f64"
light_foreground = "#bdae93"
bright_foreground = "#d4be98"
red = "#ea6962"
yellow = "#d8a657"
orange = "#e1875c"
green = "#a9b665"
cyan = "#89b482"
blue = "#7daea3"
magenta = "#d3869b"
brown = "#70432e"
bright_red = "#ea6962"
bright_yellow = "#d8a657"
bright_green = "#a9b665"
bright_cyan = "#89b482"
bright_blue = "#7daea3"
bright_magenta = "#d3869b"
Binary file not shown.

After

Width:  |  Height:  |  Size: 669 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+32 -22
View File
@@ -1,23 +1,33 @@
accent = "#82FB9C"
cursor = "#ddf7ff"
foreground = "#ddf7ff"
background = "#0B0C16"
selection_foreground = "#0B0C16"
selection_background = "#ddf7ff"
mode = "dark"
color0 = "#3E4058"
color1 = "#50f872"
color2 = "#4fe88f"
color3 = "#50f7d4"
color4 = "#829dd4"
color5 = "#86a7df"
color6 = "#7cf8f7"
color7 = "#85E1FB"
color8 = "#6a6e95"
color9 = "#85ff9d"
color10 = "#9cf7c2"
color11 = "#a4ffec"
color12 = "#c4d2ed"
color13 = "#cddbf4"
color14 = "#d1fffe"
color15 = "#ddf7ff"
accent = "#82FB9C"
selection = "#1f253a"
muted = "#2d3450"
background = "#0B0C16"
dark_background = "#080910"
darker_background = "#06060c"
lighter_background = "#151828"
foreground = "#ddf7ff"
dark_foreground = "#6a6e95"
light_foreground = "#b5c5db"
bright_foreground = "#ddf7ff"
hyprland_active_border = "rgba(26a269ee) rgba(2ec27eee) 45deg"
red = "#50f872"
yellow = "#50f7d4"
orange = "#50f7a3"
green = "#4fe88f"
cyan = "#7cf8f7"
blue = "#829dd4"
magenta = "#86a7df"
brown = "#287b51"
bright_red = "#85ff9d"
bright_yellow = "#a4ffec"
bright_green = "#9cf7c2"
bright_cyan = "#d1fffe"
bright_blue = "#c4d2ed"
bright_magenta = "#cddbf4"
Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#7e9cd8"
cursor = "#c8c093"
foreground = "#dcd7ba"
background = "#1f1f28"
selection_foreground = "#c8c093"
selection_background = "#2d4f67"
mode = "dark"
color0 = "#090618"
color1 = "#c34043"
color2 = "#76946a"
color3 = "#c0a36e"
color4 = "#7e9cd8"
color5 = "#957fb8"
color6 = "#6a9589"
color7 = "#c8c093"
color8 = "#727169"
color9 = "#e82424"
color10 = "#98bb6c"
color11 = "#e6c384"
color12 = "#7fb4ca"
color13 = "#938aa9"
color14 = "#7aa89f"
color15 = "#dcd7ba"
accent = "#dcd7ba"
selection = "#363646"
muted = "#54546D"
background = "#1f1f28"
dark_background = "#17171e"
darker_background = "#111116"
lighter_background = "#223249"
foreground = "#dcd7ba"
dark_foreground = "#727169"
light_foreground = "#c8c093"
bright_foreground = "#dcd7ba"
red = "#c34043"
yellow = "#c0a36e"
orange = "#c17158"
green = "#76946a"
cyan = "#6a9589"
blue = "#7e9cd8"
magenta = "#957fb8"
brown = "#60382c"
bright_red = "#e82424"
bright_yellow = "#e6c384"
bright_green = "#98bb6c"
bright_cyan = "#7aa89f"
bright_blue = "#7fb4ca"
bright_magenta = "#938aa9"
+18
View File
@@ -0,0 +1,18 @@
local active_border_color = "rgb(dcd7ba)"
hl.config({
general = {
col = {
active_border = active_border_color,
},
},
group = {
col = {
border_active = active_border_color,
},
},
})
-- Kanagawa backdrop is too strong for default opacity.
o.window({ tag = "terminal" }, { opacity = "0.99 0.985" })
Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

+93
View File
@@ -0,0 +1,93 @@
# Main background
theme[main_bg]="#0c0b0c"
# Main text color
theme[main_fg]="#e2dddc"
# Title color for boxes
theme[title]="#b59790"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#c4d8e2"
# Background color of selected item in processes box
theme[selected_bg]="#e2dddc"
# Foreground color of selected item in processes box
theme[selected_fg]="#0c0b0c"
# Color of inactive/disabled text
theme[inactive_fg]="#584e51"
# Color of text appearing on top of graphs
theme[graph_text]="#e2dddc"
# Background color of the percentage meters
theme[meter_bg]="#1e1d1e"
# Misc colors for processes box
theme[proc_misc]="#e2dddc"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="#584e51"
theme[mem_box]="#584e51"
theme[net_box]="#584e51"
theme[proc_box]="#584e51"
# Box divider line and small boxes line color
theme[div_line]="#6B5E73"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="#87a9b0"
theme[temp_mid]="#6B5E73"
theme[temp_end]="#c38b7b"
# CPU graph colors (Blue -> Cyan -> Magenta)
theme[cpu_start]="#b59790"
theme[cpu_mid]="#a5a0b6"
theme[cpu_end]="#c4d8e2"
# Mem/Disk free meter (Reversed "Available" colors: Cyan -> Blue -> Purple)
theme[free_start]="#c4d8e2"
theme[free_mid]="#b59790"
theme[free_end]="#6B5E73"
# Mem/Disk cached meter
theme[cached_start]="#b59790"
theme[cached_mid]="#c4d8e2"
theme[cached_end]="#e2dddc"
# Mem/Disk available meter (Purple -> Blue -> Cyan)
theme[available_start]="#6B5E73"
theme[available_mid]="#b59790"
theme[available_end]="#a5a0b6"
# Mem/Disk used meter
theme[used_start]="#c38b7b"
theme[used_mid]="#6B5E73"
theme[used_end]="#584e51"
# Download graph colors
theme[download_start]="#87a9b0"
theme[download_mid]="#a5a0b6"
theme[download_end]="#cfd3cd"
# Upload graph colors
theme[upload_start]="#b59790"
theme[upload_mid]="#c4d8e2"
theme[upload_end]="#e2dddc"
# Process box color gradient
theme[process_start]="#c4d8e2"
theme[process_mid]="#a5a0b6"
theme[process_end]="#c38b7b"
# Graph gradient colors
theme[gradient_color_0]="#0c0b0c"
theme[gradient_color_1]="#584e51"
theme[gradient_color_2]="#6B5E73"
theme[gradient_color_3]="#c38b7b"
theme[gradient_color_4]="#87a9b0"
theme[gradient_color_5]="#b59790"
theme[gradient_color_6]="#a5a0b6"
theme[gradient_color_7]="#FAFCFB"
+1
View File
@@ -0,0 +1 @@
12,11,12
+34
View File
@@ -0,0 +1,34 @@
mode = "dark"
accent = "#b59790"
selection = "#584e51"
muted = "#584e51"
background = "#0c0b0c"
dark_background = "#090809"
darker_background = "#060606"
lighter_background = "#0c0b0c"
foreground = "#FAFCFB"
dark_foreground = "#584e51"
light_foreground = "#cfd3cd"
bright_foreground = "#e2dddc"
hyprland_active_border = "rgba(8a8588ee) rgba(e2dddcee)"
hyprland_inactive_border = "rgba(584e51aa)"
active_border_color = "#d6d3de"
active_tab_background = "#a5a0b6"
red = "#c38b7b"
yellow = "#6B5E73"
green = "#87a9b0"
cyan = "#a5a0b6"
blue = "#b59790"
magenta = "#c4d8e2"
bright_red = "#c38b7b"
bright_yellow = "#6B5E73"
bright_green = "#87a9b0"
bright_cyan = "#a5a0b6"
bright_blue = "#b59790"
bright_magenta = "#c4d8e2"
+17
View File
@@ -0,0 +1,17 @@
local active_border_color = { colors = { "rgba(8a8588ee)", "rgba(e2dddcee)" }, angle = 45 }
local inactive_border_color = "rgba(584e51aa)"
hl.config({
general = {
col = {
active_border = active_border_color,
inactive_border = inactive_border_color,
},
},
group = {
col = {
border_active = active_border_color,
border_inactive = inactive_border_color,
},
},
})
+1
View File
@@ -0,0 +1 @@
Yaru-purple
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

+4
View File
@@ -0,0 +1,4 @@
{
"name": "Ship at Sea",
"extension": "rikkarth.ship-at-sea"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+29 -30
View File
@@ -1,35 +1,34 @@
# Accent and UI colors
mode = "dark"
accent = "#8bc9eb"
selection = "#243d56"
muted = "#304860"
background = "#16242d"
dark_background = "#101b21"
darker_background = "#0b1216"
lighter_background = "#1b2d40"
foreground = "#d6e2ee"
dark_foreground = "#4d86b0"
light_foreground = "#d6e2ee"
bright_foreground = "#f2fcff"
active_border_color = "#f2fcff"
active_tab_background = "#6fb8e3"
# Cursor colors
cursor = "#f2fcff"
red = "#4d86b0"
yellow = "#6fa4c9"
orange = "#8bc9eb"
green = "#5e95bc"
cyan = "#b4e4f6"
blue = "#6fb8e3"
magenta = "#8bc9eb"
brown = "#456475"
# Primary colors
foreground = "#d6e2ee"
background = "#16242d"
# Selection colors
selection_foreground = "#1b2d40"
selection_background = "#4d9ed3"
# Normal colors (ANSI 0-7)
color0 = "#1b2d40"
color1 = "#4d86b0"
color2 = "#5e95bc"
color3 = "#6fa4c9"
color4 = "#6fb8e3"
color5 = "#8bc9eb"
color6 = "#b4e4f6"
color7 = "#d6e2ee"
# Bright colors (ANSI 8-15)
color8 = "#304860"
color9 = "#73a6cb"
color10 = "#86b7d8"
color11 = "#9dcae5"
color12 = "#f2fcff"
color13 = "#b1d8ee"
color14 = "#d1eef8"
color15 = "#ffffff"
bright_red = "#73a6cb"
bright_yellow = "#9dcae5"
bright_green = "#86b7d8"
bright_cyan = "#d1eef8"
bright_blue = "#f2fcff"
bright_magenta = "#b1d8ee"
+30
View File
@@ -0,0 +1,30 @@
local active_border_color = "rgb(f2fcff)"
local active_shadow_color = "rgb(6fb8e3)"
local inactive_border_color = "rgba(30486099)"
local inactive_shadow_color = "rgba(30486077)"
hl.config({
general = {
col = {
active_border = active_border_color,
inactive_border = inactive_border_color,
}
},
group = {
col = {
border_active = active_border_color,
border_inactive = inactive_border_color,
},
},
decoration = {
shadow = {
enabled = true,
range = 6,
render_power = 4,
color = active_shadow_color,
color_inactive = inactive_shadow_color,
},
},
})
Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 736 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+31
View File
@@ -0,0 +1,31 @@
mode = "light"
accent = "#3264eb"
selection = "#d0d0d0"
muted = "#9e9e9e"
background = "#fafafa"
dark_background = "#ececec"
darker_background = "#dedede"
lighter_background = "#f5f5f5"
foreground = "#212121"
dark_foreground = "#757575"
light_foreground = "#424242"
bright_foreground = "#000000"
red = "#c900c4"
yellow = "#026fde"
orange = "#026fde"
green = "#4a2fd0"
cyan = "#0c67de"
blue = "#3264eb"
magenta = "#8a4ad7"
brown = "#013a6f"
bright_red = "#f930fb"
bright_yellow = "#358fff"
bright_green = "#9f85e0"
bright_cyan = "#3986ff"
bright_blue = "#5482ff"
bright_magenta = "#b363ff"
+1
View File
@@ -0,0 +1 @@
Yaru-purple
Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#e68e0d"
cursor = "#eaeaea"
foreground = "#bebebe"
background = "#121212"
selection_foreground = "#bebebe"
selection_background = "#515151"
mode = "dark"
color0 = "#333333"
color1 = "#D35F5F"
color2 = "#FFC107"
color3 = "#b91c1c"
color4 = "#e68e0d"
color5 = "#D35F5F"
color6 = "#bebebe"
color7 = "#bebebe"
color8 = "#8a8a8d"
color9 = "#B91C1C"
color10 = "#FFC107"
color11 = "#b90a0a"
color12 = "#f59e0b"
color13 = "#B91C1C"
color14 = "#eaeaea"
color15 = "#ffffff"
accent = "#e68e0d"
selection = "#2a2a2a"
muted = "#333333"
background = "#121212"
dark_background = "#0d0d0d"
darker_background = "#090909"
lighter_background = "#1e1e1e"
foreground = "#bebebe"
dark_foreground = "#555555"
light_foreground = "#8a8a8d"
bright_foreground = "#bebebe"
red = "#D35F5F"
yellow = "#b91c1c"
orange = "#c63d3d"
green = "#FFC107"
cyan = "#bebebe"
blue = "#e68e0d"
magenta = "#D35F5F"
brown = "#631e1e"
bright_red = "#B91C1C"
bright_yellow = "#b90a0a"
bright_green = "#FFC107"
bright_cyan = "#eaeaea"
bright_blue = "#f59e0b"
bright_magenta = "#B91C1C"
Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#78824b"
cursor = "#c7c7c7"
foreground = "#c2c2b0"
background = "#222222"
selection_foreground = "#c2c2b0"
selection_background = "#78824b"
mode = "dark"
color0 = "#000000"
color1 = "#685742"
color2 = "#5f875f"
color3 = "#b36d43"
color4 = "#78824b"
color5 = "#bb7744"
color6 = "#c9a554"
color7 = "#d7c483"
color8 = "#666666"
color9 = "#685742"
color10 = "#5f875f"
color11 = "#b36d43"
color12 = "#78824b"
color13 = "#bb7744"
color14 = "#c9a554"
color15 = "#d7c483"
accent = "#78824b"
selection = "#383838"
muted = "#666666"
background = "#222222"
dark_background = "#191919"
darker_background = "#121212"
lighter_background = "#2c2c2c"
foreground = "#c2c2b0"
dark_foreground = "#555555"
light_foreground = "#8a8a7e"
bright_foreground = "#c2c2b0"
red = "#685742"
yellow = "#b36d43"
orange = "#8d6242"
green = "#5f875f"
cyan = "#c9a554"
blue = "#78824b"
magenta = "#bb7744"
brown = "#463121"
bright_red = "#685742"
bright_yellow = "#b36d43"
bright_green = "#5f875f"
bright_cyan = "#c9a554"
bright_blue = "#78824b"
bright_magenta = "#bb7744"
Binary file not shown.

After

Width:  |  Height:  |  Size: 347 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+30 -22
View File
@@ -1,23 +1,31 @@
accent = "#81a1c1"
cursor = "#d8dee9"
foreground = "#d8dee9"
background = "#2e3440"
selection_foreground = "#d8dee9"
selection_background = "#4c566a"
mode = "dark"
color0 = "#3b4252"
color1 = "#bf616a"
color2 = "#a3be8c"
color3 = "#ebcb8b"
color4 = "#81a1c1"
color5 = "#b48ead"
color6 = "#88c0d0"
color7 = "#e5e9f0"
color8 = "#4c566a"
color9 = "#bf616a"
color10 = "#a3be8c"
color11 = "#ebcb8b"
color12 = "#81a1c1"
color13 = "#b48ead"
color14 = "#8fbcbb"
color15 = "#eceff4"
accent = "#81a1c1"
selection = "#434c5e"
muted = "#4c566a"
background = "#2e3440"
dark_background = "#222730"
darker_background = "#191c23"
lighter_background = "#3b4252"
foreground = "#d8dee9"
dark_foreground = "#667080"
light_foreground = "#adb5c4"
bright_foreground = "#d8dee9"
red = "#bf616a"
yellow = "#ebcb8b"
orange = "#d5967a"
green = "#a3be8c"
cyan = "#88c0d0"
blue = "#81a1c1"
magenta = "#b48ead"
brown = "#6a4b3d"
bright_red = "#bf616a"
bright_yellow = "#ebcb8b"
bright_green = "#a3be8c"
bright_cyan = "#8fbcbb"
bright_blue = "#81a1c1"
bright_magenta = "#b48ead"
Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

Some files were not shown because too many files have changed in this diff Show More