refactor(themes): move theme assets under omarchy-themes

This commit is contained in:
2026-10-08 11:10:51 -04:00
parent 7902fe531e
commit ecf01dad51
465 changed files with 72 additions and 59 deletions
@@ -0,0 +1,47 @@
[colors.primary]
background = "{{ background }}"
foreground = "{{ foreground }}"
[colors.cursor]
text = "{{ background }}"
cursor = "{{ bright_foreground }}"
[colors.vi_mode_cursor]
text = "{{ background }}"
cursor = "{{ bright_foreground }}"
[colors.search.matches]
foreground = "{{ background }}"
background = "{{ yellow }}"
[colors.search.focused_match]
foreground = "{{ background }}"
background = "{{ red }}"
[colors.footer_bar]
foreground = "{{ background }}"
background = "{{ foreground }}"
[colors.selection]
text = "{{ selection_foreground }}"
background = "{{ selection_background }}"
[colors.normal]
black = "{{ background }}"
red = "{{ red }}"
green = "{{ green }}"
yellow = "{{ yellow }}"
blue = "{{ blue }}"
magenta = "{{ magenta }}"
cyan = "{{ cyan }}"
white = "{{ foreground }}"
[colors.bright]
black = "{{ muted }}"
red = "{{ bright_red }}"
green = "{{ bright_green }}"
yellow = "{{ bright_yellow }}"
blue = "{{ bright_blue }}"
magenta = "{{ bright_magenta }}"
cyan = "{{ bright_cyan }}"
white = "{{ bright_foreground }}"
@@ -0,0 +1,93 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="{{ background }}"
# Main text color
theme[main_fg]="{{ foreground }}"
# Title color for boxes
theme[title]="{{ foreground }}"
# Highlight color for keyboard shortcuts
theme[hi_fg]="{{ accent }}"
# Background color of selected item in processes box
theme[selected_bg]="{{ selection }}"
# Foreground color of selected item in processes box
theme[selected_fg]="{{ accent }}"
# Color of inactive/disabled text
theme[inactive_fg]="{{ muted }}"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="{{ light_foreground }}"
# Background color of the percentage meters
theme[meter_bg]="{{ selection }}"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="{{ light_foreground }}"
# CPU, Memory, Network, Proc box outline colors
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]="{{ muted }}"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="{{ green }}"
theme[temp_mid]="{{ yellow }}"
theme[temp_end]="{{ red }}"
# CPU graph colors (Teal -> Blue -> Magenta)
theme[cpu_start]="{{ cyan }}"
theme[cpu_mid]="{{ blue }}"
theme[cpu_end]="{{ magenta }}"
# Mem/Disk free meter
theme[free_start]="{{ magenta }}"
theme[free_mid]="{{ blue }}"
theme[free_end]="{{ cyan }}"
# Mem/Disk cached meter
theme[cached_start]="{{ blue }}"
theme[cached_mid]="{{ cyan }}"
theme[cached_end]="{{ magenta }}"
# Mem/Disk available meter
theme[available_start]="{{ yellow }}"
theme[available_mid]="{{ red }}"
theme[available_end]="{{ red }}"
# Mem/Disk used meter (Green -> Teal -> Blue)
theme[used_start]="{{ green }}"
theme[used_mid]="{{ cyan }}"
theme[used_end]="{{ blue }}"
# Download graph colors
theme[download_start]="{{ yellow }}"
theme[download_mid]="{{ red }}"
theme[download_end]="{{ red }}"
# 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
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 }}"
@@ -0,0 +1 @@
{{ background_rgb }}
@@ -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 }}"
}
}
@@ -0,0 +1,25 @@
[colors-dark]
foreground={{ foreground_strip }}
background={{ background_strip }}
selection-foreground={{ selection_foreground_strip }}
selection-background={{ selection_background_strip }}
cursor={{ background_strip }} {{ bright_foreground_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={{ 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 }}
@@ -0,0 +1,22 @@
background = {{ background }}
foreground = {{ foreground }}
cursor-color = {{ bright_foreground }}
selection-background = {{ selection_background }}
selection-foreground = {{ selection_foreground }}
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 }}
@@ -0,0 +1,137 @@
# Gum Style (generic) Variables
env = FOREGROUND,#{{ foreground }}
env = BACKGROUND,#{{ background }}
env = BORDER_FOREGROUND,#{{ accent }}
env = BORDER_BACKGROUND,#{{ background }}
# Gum Confirm Style Variables
env = GUM_CONFIRM_PROMPT_FOREGROUND,#{{ accent }}
env = GUM_CONFIRM_PROMPT_BACKGROUND,#{{ background }}
env = GUM_CONFIRM_SELECTED_FOREGROUND,#{{ selection_foreground }}
env = GUM_CONFIRM_SELECTED_BACKGROUND,#{{ selection_background }}
env = GUM_CONFIRM_UNSELECTED_FOREGROUND,#{{ foreground }}
env = GUM_CONFIRM_UNSELECTED_BACKGROUND,#{{ background }}
# Gum Input Style Variables
env = GUM_INPUT_PROMPT_FOREGROUND,#{{ accent }}
env = GUM_INPUT_PROMPT_BACKGROUND,#{{ background }}
env = GUM_INPUT_PLACEHOLDER_FOREGROUND,#{{ color8 }}
env = GUM_INPUT_PLACEHOLDER_BACKGROUND,#{{ background }}
env = GUM_INPUT_CURSOR_FOREGROUND,#{{ cursor }}
env = GUM_INPUT_CURSOR_BACKGROUND,#{{ background }}
env = GUM_INPUT_HEADER_FOREGROUND,#{{ foreground }}
env = GUM_INPUT_HEADER_BACKGROUND,#{{ background }}
# Gum Choose Style Variables
env = GUM_CHOOSE_CURSOR_FOREGROUND,#{{ accent }}
env = GUM_CHOOSE_CURSOR_BACKGROUND,#{{ background }}
env = GUM_CHOOSE_HEADER_FOREGROUND,#{{ foreground }}
env = GUM_CHOOSE_HEADER_BACKGROUND,#{{ background }}
env = GUM_CHOOSE_ITEM_FOREGROUND,#{{ foreground }}
env = GUM_CHOOSE_ITEM_BACKGROUND,#{{ background }}
env = GUM_CHOOSE_SELECTED_FOREGROUND,#{{ selection_foreground }}
env = GUM_CHOOSE_SELECTED_BACKGROUND,#{{ selection_background }}
# Gum Filter Style Variables
env = GUM_FILTER_PROMPT_FOREGROUND,#{{ accent }}
env = GUM_FILTER_PROMPT_BACKGROUND,#{{ background }}
env = GUM_FILTER_TEXT_FOREGROUND,#{{ foreground }}
env = GUM_FILTER_TEXT_BACKGROUND,#{{ background }}
env = GUM_FILTER_MATCH_FOREGROUND,#{{ accent }}
env = GUM_FILTER_CURSOR_TEXT_FOREGROUND,#{{ cursor }}
env = GUM_FILTER_CURSOR_TEXT_BACKGROUND,#{{ background }}
env = GUM_FILTER_SELECTED_FOREGROUND,#{{ selection_foreground }}
env = GUM_FILTER_SELECTED_BACKGROUND,#{{ selection_background }}
env = GUM_FILTER_INDICATOR_FOREGROUND,#{{ accent }}
env = GUM_FILTER_HEADER_FOREGROUND,#{{ foreground }}
env = GUM_FILTER_MATCH_BACKGROUND,#{{ background }}
env = GUM_FILTER_HEADER_BACKGROUND,#{{ background }}
env = GUM_FILTER_PLACEHOLDER_FOREGROUND,#{{ color8 }}
env = GUM_FILTER_PLACEHOLDER_BACKGROUND,#{{ background }}
env = GUM_FILTER_INDICATOR_BACKGROUND,#{{ background }}
env = GUM_FILTER_SELECTED_PREFIX_FOREGROUND,#{{ selection_foreground }}
env = GUM_FILTER_SELECTED_PREFIX_BACKGROUND,#{{ selection_background }}
env = GUM_FILTER_UNSELECTED_PREFIX_FOREGROUND,#{{ color8 }}
env = GUM_FILTER_UNSELECTED_PREFIX_BACKGROUND,#{{ background }}
# Gum Table Style Variables
env = GUM_TABLE_HEADER_FOREGROUND,#{{ foreground }}
env = GUM_TABLE_HEADER_BACKGROUND,#{{ background }}
env = GUM_TABLE_CELL_FOREGROUND,#{{ foreground }}
env = GUM_TABLE_CELL_BACKGROUND,#{{ background }}
env = GUM_TABLE_BORDER_FOREGROUND,#{{ color8 }}
env = GUM_TABLE_BORDER_BACKGROUND,#{{ background }}
env = GUM_TABLE_SELECTED_FOREGROUND,#{{ selection_foreground }}
env = GUM_TABLE_SELECTED_BACKGROUND,#{{ selection_background }}
# Gum Spin Style Variables
env = GUM_SPIN_SPINNER_FOREGROUND,#{{ accent }}
env = GUM_SPIN_SPINNER_BACKGROUND,#{{ background }}
env = GUM_SPIN_TITLE_FOREGROUND,#{{ foreground }}
env = GUM_SPIN_TITLE_BACKGROUND,#{{ background }}
# Gum File Style Variables
env = GUM_FILE_CURSOR_FOREGROUND,#{{ cursor }}
env = GUM_FILE_CURSOR_BACKGROUND,#{{ background }}
env = GUM_FILE_SYMLINK_FOREGROUND,#{{ foreground }}
env = GUM_FILE_SYMLINK_BACKGROUND,#{{ background }}
env = GUM_FILE_DIRECTORY_FOREGROUND,#{{ foreground }}
env = GUM_FILE_DIRECTORY_BACKGROUND,#{{ background }}
env = GUM_FILE_FILE_FOREGROUND,#{{ foreground }}
env = GUM_FILE_FILE_BACKGROUND,#{{ background }}
env = GUM_FILE_PERMISSIONS_FOREGROUND,#{{ color8 }}
env = GUM_FILE_PERMISSIONS_BACKGROUND,#{{ background }}
env = GUM_FILE_SELECTED_FOREGROUND,#{{ selection_foreground }}
env = GUM_FILE_SELECTED_BACKGROUND,#{{ selection_background }}
env = GUM_FILE_FILE_SIZE_FOREGROUND,#{{ color8 }}
env = GUM_FILE_FILE_SIZE_BACKGROUND,#{{ background }}
env = GUM_FILE_HEADER_FOREGROUND,#{{ foreground }}
env = GUM_FILE_HEADER_BACKGROUND,#{{ background }}
# Gum Pager Style Variables
env = GUM_PAGER_FOREGROUND,#{{ foreground }}
env = GUM_PAGER_BACKGROUND,#{{ background }}
env = GUM_PAGER_LINE_NUMBER_FOREGROUND,#{{ color8 }}
env = GUM_PAGER_LINE_NUMBER_BACKGROUND,#{{ background }}
env = GUM_PAGER_MATCH_FOREGROUND,#{{ accent }}
env = GUM_PAGER_MATCH_BACKGROUND,#{{ background }}
env = GUM_PAGER_MATCH_HIGH_FOREGROUND,#{{ accent }}
env = GUM_PAGER_MATCH_HIGH_BACKGROUND,#{{ background }}
env = GUM_PAGER_HELP_FOREGROUND,#{{ color8 }}
env = GUM_PAGER_HELP_BACKGROUND,#{{ background }}
# Gum Write Style Variables
env = GUM_WRITE_BASE_FOREGROUND,#{{ foreground }}
env = GUM_WRITE_BASE_BACKGROUND,#{{ background }}
env = GUM_WRITE_CURSOR_LINE_NUMBER_FOREGROUND,#{{ color8 }}
env = GUM_WRITE_CURSOR_LINE_NUMBER_BACKGROUND,#{{ background }}
env = GUM_WRITE_CURSOR_LINE_FOREGROUND,#{{ foreground }}
env = GUM_WRITE_CURSOR_LINE_BACKGROUND,#{{ selection_background }}
env = GUM_WRITE_CURSOR_FOREGROUND,#{{ cursor }}
env = GUM_WRITE_CURSOR_BACKGROUND,#{{ background }}
env = GUM_WRITE_END_OF_BUFFER_FOREGROUND,#{{ color8 }}
env = GUM_WRITE_END_OF_BUFFER_BACKGROUND,#{{ background }}
env = GUM_WRITE_LINE_NUMBER_FOREGROUND,#{{ color8 }}
env = GUM_WRITE_LINE_NUMBER_BACKGROUND,#{{ background }}
env = GUM_WRITE_HEADER_FOREGROUND,#{{ foreground }}
env = GUM_WRITE_HEADER_BACKGROUND,#{{ background }}
env = GUM_WRITE_PLACEHOLDER_FOREGROUND,#{{ color8 }}
env = GUM_WRITE_PLACEHOLDER_BACKGROUND,#{{ background }}
env = GUM_WRITE_PROMPT_FOREGROUND,#{{ foreground }}
env = GUM_WRITE_PROMPT_BACKGROUND,#{{ background }}
# Gum Log Style Variables
env = GUM_LOG_LEVEL_FOREGROUND,#{{ accent }}
env = GUM_LOG_LEVEL_BACKGROUND,#{{ background }}
env = GUM_LOG_TIME_FOREGROUND,#{{ color8 }}
env = GUM_LOG_TIME_BACKGROUND,#{{ background }}
env = GUM_LOG_PREFIX_FOREGROUND,#{{ foreground }}
env = GUM_LOG_PREFIX_BACKGROUND,#{{ background }}
env = GUM_LOG_MESSAGE_FOREGROUND,#{{ foreground }}
env = GUM_LOG_MESSAGE_BACKGROUND,#{{ background }}
env = GUM_LOG_KEY_FOREGROUND,#{{ foreground }}
env = GUM_LOG_KEY_BACKGROUND,#{{ background }}
env = GUM_LOG_VALUE_FOREGROUND,#{{ foreground }}
env = GUM_LOG_VALUE_BACKGROUND,#{{ background }}
env = GUM_LOG_SEPARATOR_FOREGROUND,#{{ color8 }}
env = GUM_LOG_SEPARATOR_BACKGROUND,#{{ background }}
@@ -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 }}")
@@ -0,0 +1,133 @@
# Syntax
"keyword" = "color5"
"keyword.control" = { fg = "color5", modifiers = ["italic"] }
"function" = "color4"
"function.builtin" = "color4"
"function.macro" = "color5"
"type" = "color3"
"type.builtin" = "color5"
"type.enum.variant" = "color6"
"constructor" = "color4"
"constant" = "color3"
"constant.builtin" = "color3"
"constant.numeric" = "color3"
"constant.character" = "color6"
"constant.character.escape" = "color5"
"string" = "color2"
"string.regexp" = "color5"
"string.special" = "color4"
"comment" = { fg = "color8", modifiers = ["italic"] }
"variable" = "foreground"
"variable.parameter" = { fg = "color5", modifiers = ["italic"] }
"variable.builtin" = "color1"
"variable.other.member" = "color4"
"label" = "color4"
"punctuation" = "color8"
"punctuation.special" = "color6"
"operator" = "color6"
"tag" = "color4"
"namespace" = { fg = "color3", modifiers = ["italic"] }
"special" = "color5"
"attribute" = "color3"
# Markup
"markup.heading.1" = "color1"
"markup.heading.2" = "color3"
"markup.heading.3" = "color3"
"markup.heading.4" = "color2"
"markup.heading.5" = "color4"
"markup.heading.6" = "color5"
"markup.list" = "color6"
"markup.list.unchecked" = "color8"
"markup.list.checked" = "color2"
"markup.bold" = { fg = "color1", modifiers = ["bold"] }
"markup.italic" = { fg = "color1", modifiers = ["italic"] }
"markup.strikethrough" = { modifiers = ["crossed_out"] }
"markup.link.url" = { fg = "color4", modifiers = ["italic", "underlined"] }
"markup.link.text" = "color5"
"markup.link.label" = "color4"
"markup.raw" = "color2"
"markup.quote" = "color5"
# Diff
"diff.plus" = "color2"
"diff.minus" = "color1"
"diff.delta" = "color4"
# Leave the editor background transparent so the terminal background shows through
"ui.background" = { }
"ui.linenr" = { fg = "color8" }
"ui.linenr.selected" = { fg = "foreground" }
# Statusline uses an inverted band (background-color text on foreground-color
# background) to guarantee contrast across both light and dark Omarchy themes.
"ui.statusline" = { fg = "background", bg = "foreground" }
"ui.statusline.inactive" = { fg = "background", bg = "color8" }
"ui.statusline.normal" = { fg = "background", bg = "color4", modifiers = ["bold"] }
"ui.statusline.insert" = { fg = "background", bg = "color2", modifiers = ["bold"] }
"ui.statusline.select" = { fg = "background", bg = "color5", modifiers = ["bold"] }
"ui.popup" = { fg = "foreground", bg = "background" }
"ui.window" = { fg = "color8" }
"ui.help" = { fg = "foreground", bg = "background" }
"ui.bufferline" = { fg = "color8", bg = "background" }
"ui.bufferline.active" = { fg = "foreground", bg = "background", underline = { color = "color5", style = "line" } }
"ui.text" = "foreground"
"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 = "lighter_background" }
"ui.virtual.indent-guide" = "color8"
"ui.virtual.inlay-hint" = { fg = "color8" }
"ui.virtual.jump-label" = { fg = "color1", modifiers = ["bold"] }
"ui.virtual.whitespace" = "color8"
"ui.selection" = { bg = "selection_background", fg = "selection_foreground" }
"ui.cursor" = { fg = "background", bg = "cursor" }
"ui.cursor.primary" = { fg = "background", bg = "cursor" }
"ui.cursor.match" = { fg = "color3", modifiers = ["bold"] }
"ui.cursor.primary.normal" = { fg = "background", bg = "cursor" }
"ui.cursor.primary.insert" = { fg = "background", bg = "color2" }
"ui.cursor.primary.select" = { fg = "background", bg = "color5" }
"ui.cursorline.primary" = { bg = "lighter_background" }
"ui.highlight" = { bg = "lighter_background", modifiers = ["bold"] }
"ui.menu" = { fg = "foreground", bg = "background" }
"ui.menu.selected" = { fg = "background", bg = "foreground", modifiers = ["bold"] }
"diagnostic.error" = { underline = { color = "color1", style = "curl" } }
"diagnostic.warning" = { underline = { color = "color3", style = "curl" } }
"diagnostic.info" = { underline = { color = "color4", style = "curl" } }
"diagnostic.hint" = { underline = { color = "color6", style = "curl" } }
"diagnostic.unnecessary" = { modifiers = ["dim"] }
"diagnostic.deprecated" = { modifiers = ["crossed_out"] }
error = "color1"
warning = "color3"
info = "color4"
hint = "color6"
[palette]
background = "{{ background }}"
foreground = "{{ foreground }}"
lighter_background = "{{ lighter_background }}"
cursor = "{{ bright_foreground }}"
selection_background = "{{ selection_background }}"
selection_foreground = "{{ selection_foreground }}"
color0 = "{{ background }}"
color1 = "{{ red }}"
color2 = "{{ green }}"
color3 = "{{ yellow }}"
color4 = "{{ blue }}"
color5 = "{{ magenta }}"
color6 = "{{ cyan }}"
color7 = "{{ foreground }}"
color8 = "{{ muted }}"
@@ -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 }}"
@@ -0,0 +1,94 @@
@define-color foreground {{ foreground }};
@define-color background {{ background }};
@define-color accent {{ accent }};
@define-color muted {{ muted }};
@define-color card_bg {{ lighter_background }};
@define-color text_dark {{ background }};
@define-color accent_hover {{ bright_blue }};
@define-color selected_tab {{ accent }};
@define-color text {{ foreground }};
* {
all: unset;
font-family: JetBrains Mono NF;
color: @foreground;
font-weight: bold;
font-size: 16px;
}
.window {
background: alpha(@background, 0.95);
border: solid 2px @accent;
margin: 4px;
padding: 18px;
}
tabs {
padding: 0.5rem 1rem;
}
tabs > tab {
margin-right: 1rem;
}
.tab-label {
color: @text;
transition: all 0.2s ease;
}
tabs > tab:checked > .tab-label, tabs > tab:active > .tab-label {
text-decoration: underline currentColor;
color: @selected_tab;
}
tabs > tab:focus > .tab-label {
color: @foreground;
}
.page {
padding: 1rem;
}
.image-label {
font-size: 12px;
padding: 0.25rem;
}
flowboxchild > .card, button > .card {
transition: all 0.2s ease;
border: solid 2px transparent;
border-color: @background;
border-radius: 5px;
background-color: @card_bg;
padding: 5px;
}
flowboxchild:hover > .card, button:hover > .card, flowboxchild:active > .card, flowboxchild:selected > .card, button:active > .card, button:selected > .card, button:focus > .card {
border: solid 2px @accent;
}
.image {
border-radius: 5px;
}
.region-button {
padding: 0.5rem 1rem;
border-radius: 5px;
background-color: @accent;
color: @text_dark;
transition: all 0.2s ease;
}
.region-button > label {
color: @text_dark;
}
.region-button:not(:disabled):hover, .region-button:not(:disabled):focus {
background-color: @accent_hover;
color: @text_dark;
}
.region-button:disabled {
background-color: @muted;
color: @background;
}
@@ -0,0 +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 = active_border_color,
inactive_border = inactive_border_color,
},
},
group = {
col = {
border_active = active_border_color,
border_inactive = inactive_border_color,
},
},
})
@@ -0,0 +1,5 @@
$color = rgba({{ background_rgb }}, 1.0)
$inner_color = rgba({{ background_rgb }}, 0.8)
$outer_color = rgba({{ foreground_rgb }}, 1.0)
$font_color = rgba({{ foreground_rgb }}, 1.0)
$check_color = rgba({{ accent_rgb }}, 1.0)
@@ -0,0 +1 @@
{{ accent }}
@@ -0,0 +1,27 @@
foreground {{ foreground }}
background {{ background }}
selection_foreground {{ selection_foreground }}
selection_background {{ selection_background }}
cursor {{ bright_foreground }}
cursor_text_color {{ background }}
active_border_color {{ accent }}
active_tab_background {{ accent }}
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 }}
@@ -0,0 +1,40 @@
text-color={{ foreground }}
border-color={{ accent }}
background-color={{ background }}
anchor=top-right
group-by=app-name,summary,body
default-timeout=5000
width=420
outer-margin=20
padding=10,15
border-size=2
max-icon-size=32
font=sans-serif 14px
[app-name=Spotify]
invisible=1
[mode=do-not-disturb]
invisible=true
[mode=do-not-disturb app-name=notify-send]
invisible=false
[urgency=critical]
default-timeout=0
layer=overlay
[summary~="Setup Wi-Fi"]
on-button-left=exec sh -c 'omarchy-notification-dismiss "Setup Wi-Fi"; omarchy-launch-wifi'
[summary~="Update System"]
on-button-left=exec sh -c 'omarchy-notification-dismiss "Update System"; omarchy-launch-floating-terminal-with-presentation omarchy-update'
[summary~="Install Dictation with Voxtype"]
on-button-left=exec sh -c 'omarchy-notification-dismiss "Install Dictation with Voxtype"; omarchy-launch-floating-terminal-with-presentation omarchy-voxtype-install'
[summary~="Screenshot copied & saved"]
max-icon-size=80
format=<b>%s</b>\n%b
@@ -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",
},
},
}
@@ -0,0 +1,99 @@
/* Omarchy Theme for Obsidian */
.theme-dark, .theme-light {
/* Core colors */
--background-primary: {{ background }};
--background-primary-alt: {{ background }};
--background-secondary: {{ background }};
--background-secondary-alt: {{ background }};
--text-normal: {{ foreground }};
/* Selection colors */
--text-selection: {{ selection_background }};
/* Border color */
--background-modifier-border: {{ muted }};
/* Semantic heading colors */
--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: {{ blue }};
--text-accent: {{ accent }};
--text-accent-hover: {{ accent }};
--interactive-accent: {{ accent }};
--interactive-accent-hover: {{ accent }};
/* Muted text */
--text-muted: color-mix(in srgb, {{ foreground }} 70%, transparent);
--text-faint: color-mix(in srgb, {{ foreground }} 55%, transparent);
/* Code */
--code-normal: {{ cyan }};
/* Errors and success */
--text-error: {{ red }};
--text-error-hover: {{ red }};
--text-success: {{ green }};
/* Tags */
--tag-color: {{ cyan }};
--tag-background: {{ muted }};
/* Graph */
--graph-line: {{ muted }};
--graph-node: {{ accent }};
--graph-node-focused: {{ blue }};
--graph-node-tag: {{ cyan }};
--graph-node-attachment: {{ green }};
}
/* Headers */
.cm-header-1, .markdown-rendered h1 { color: var(--text-title-h1); }
.cm-header-2, .markdown-rendered h2 { color: var(--text-title-h2); }
.cm-header-3, .markdown-rendered h3 { color: var(--text-title-h3); }
.cm-header-4, .markdown-rendered h4 { color: var(--text-title-h4); }
.cm-header-5, .markdown-rendered h5 { color: var(--text-title-h5); }
.cm-header-6, .markdown-rendered h6 { color: var(--text-title-h6); }
/* Code blocks */
.markdown-rendered code {
color: {{ cyan }};
}
/* Syntax highlighting */
.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 {
color: var(--text-link);
}
/* Blockquotes */
.markdown-rendered blockquote {
border-left-color: {{ accent }};
}
/* Active elements */
.workspace-leaf.mod-active .workspace-leaf-header-title {
color: var(--interactive-accent);
}
.nav-file-title.is-active {
color: var(--interactive-accent);
}
/* Search results */
.search-result-file-title {
color: var(--interactive-accent);
}
+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% }}"
}
}
@@ -0,0 +1,56 @@
[colors]
# Regular colors
background = '{{ background }}'
black = '{{ background }}'
blue = '{{ blue }}'
cyan = '{{ cyan }}'
foreground = '{{ foreground }}'
green = '{{ green }}'
magenta = '{{ magenta }}'
red = '{{ red }}'
white = '{{ foreground }}'
yellow = '{{ yellow }}'
# 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 = '{{ muted }}'
tabs-active = '{{ selection }}'
split = '{{ muted }}'
split-active = '{{ selection }}'
# Search
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 = '{{ background }}'
dim-blue = '{{ blue }}'
dim-cyan = '{{ cyan }}'
dim-foreground = '{{ foreground }}'
dim-green = '{{ green }}'
dim-magenta = '{{ magenta }}'
dim-red = '{{ red }}'
dim-white = '{{ foreground }}'
dim-yellow = '{{ yellow }}'
# Light colors
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 }}'
@@ -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
@@ -0,0 +1,5 @@
@define-color background-color {{ background }};
@define-color border-color {{ foreground }};
@define-color label {{ foreground }};
@define-color image {{ foreground }};
@define-color progress {{ accent }};
@@ -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 }}"
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,6 @@
@define-color selected-text {{ accent }};
@define-color text {{ foreground }};
@define-color base {{ background }};
@define-color border {{ foreground }};
@define-color foreground {{ foreground }};
@define-color background {{ background }};
@@ -0,0 +1,2 @@
@define-color foreground {{ foreground }};
@define-color background {{ background }};
+63
View File
@@ -0,0 +1,63 @@
[vars]
THEMES_STATE_DIR = ".local/state/omarchy/current/theme"
OMARCHY_PATH = "{{config_root}}"
[dotfiles]
"~/.config/environment.d/omarchy.conf" = { source = "templates/environment-omarchy.tmpl", mode = "template", template = "tera" }
"~/.local/bin/omarchy-cmd-missing" = { source = "script/omarchy-cmd-missing", mode = "symlink" }
"~/.local/bin/omarchy-cmd-present" = { source = "script/omarchy-cmd-present", mode = "symlink" }
"~/.local/bin/omarchy-hook" = { source = "script/omarchy-hook", mode = "symlink" }
"~/.local/bin/omarchy-restart-btop" = { source = "script/omarchy-restart-btop", mode = "symlink" }
"~/.local/bin/omarchy-restart-hyprctl" = { source = "script/omarchy-restart-hyprctl", mode = "symlink" }
"~/.local/bin/omarchy-restart-hypridle" = { source = "script/omarchy-restart-hypridle", mode = "symlink" }
"~/.local/bin/omarchy-restart-mako" = { source = "script/omarchy-restart-mako", mode = "symlink" }
"~/.local/bin/omarchy-restart-tmux" = { source = "script/omarchy-restart-tmux", mode = "symlink" }
"~/.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" }
"~/.local/bin/omarchy-theme-refresh" = { source = "script/omarchy-theme-refresh", mode = "symlink" }
"~/.local/bin/omarchy-theme-remove" = { source = "script/omarchy-theme-remove", mode = "symlink" }
"~/.local/bin/omarchy-theme-set" = { source = "script/omarchy-theme-set", mode = "symlink" }
"~/.local/bin/omarchy-theme-set-browser" = { source = "script/omarchy-theme-set-browser", mode = "symlink" }
"~/.local/bin/omarchy-theme-set-foot" = { source = "script/omarchy-theme-set-foot", mode = "symlink" }
"~/.local/bin/omarchy-theme-set-gnome" = { source = "script/omarchy-theme-set-gnome", mode = "symlink" }
"~/.local/bin/omarchy-theme-set-keyboard" = { source = "script/omarchy-theme-set-keyboard", mode = "symlink" }
"~/.local/bin/omarchy-theme-set-keyboard-asus-rog" = { source = "script/omarchy-theme-set-keyboard-asus-rog", mode = "symlink" }
"~/.local/bin/omarchy-theme-set-keyboard-f16" = { source = "script/omarchy-theme-set-keyboard-f16", mode = "symlink" }
"~/.local/bin/omarchy-theme-set-obsidian" = { source = "script/omarchy-theme-set-obsidian", mode = "symlink" }
"~/.local/bin/omarchy-theme-set-templates" = { source = "script/omarchy-theme-set-templates", mode = "symlink" }
"~/.local/bin/omarchy-theme-set-vscode" = { source = "script/omarchy-theme-set-vscode", mode = "symlink" }
"~/.local/bin/omarchy-theme-update" = { source = "script/omarchy-theme-update", mode = "symlink" }
"~/.local/share/themes/available" = { source = "themes", mode = "symlink" }
[tasks.setup_theme]
run = [
'mkdir -p ~/.config/strata/themes && ln -snf ~/.local/state/omarchy/current/theme/strata.toml ~/.config/strata/themes/omarchy.toml',
'mkdir -p ~/.config/btop/themes && ln -snf ~/.local/state/omarchy/current/theme/btop.theme ~/.config/btop/themes/current.theme',
'mkdir -p ~/.config/ghostty && ln -snf ~/.local/state/omarchy/current/theme/ghostty.conf ~/.config/ghostty/theme',
'mkdir -p ~/.config/hypr && ln -snf ~/.local/state/omarchy/current/theme/hyprland.lua ~/.config/hypr/theme.lua',
'mkdir -p ~/.config/nvim/plugin && ln -snf ~/.local/state/omarchy/current/theme/neovim-vimpack.lua ~/.config/nvim/plugin/theme.lua',
'mkdir -p ~/.config/mako && ln -snf ~/.local/state/omarchy/current/theme/mako.ini ~/.config/mako/config',
'mkdir -p ~/.config/rofi && ln -snf ~/.local/state/omarchy/current/theme/rofi.rasi ~/.config/rofi/theme.rasi',
'mkdir -p ~/.config/rio/themes && ln -snf ~/.local/state/omarchy/current/theme/rio.toml ~/.config/rio/themes/omarchy.toml',
'mkdir -p ~/.config/tmux && ln -snf ~/.local/state/omarchy/current/theme/tmux ~/.config/tmux/theme',
]
[bootstrap.hooks.pre-packages]
run = "test -d ~/.local/state/omarchy/current/theme || rsync -av config/omarchy/default/ ~/.local/state/omarchy/current/theme/ --mkpath"
[tasks.theme]
description = 'configure theme'
run = [
'gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"',
'gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"',
'gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"',
'omarchy-theme-set "tokyo-night"',
]
[tasks.bootstrap]
depends = ["theme"]
+11
View File
@@ -0,0 +1,11 @@
#!/bin/bash
# omarchy:summary=Check whether any required commands are missing
for cmd in "$@"; do
if ! command -v "$cmd" &>/dev/null; then
exit 0
fi
done
exit 1
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
# omarchy:summary=Check whether all required commands are available
for cmd in "$@"; do
command -v "$cmd" &>/dev/null || exit 1
done
exit 0
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
# omarchy:summary=Run a named hook from ~/.config/omarchy/hooks/<name> and ~/.config/omarchy/hooks/<name>.d/.
# omarchy:args=[name] [args...]
set -e
if (( $# < 1 )); then
echo "Usage: omarchy-hook [name] [args...]"
exit 1
fi
HOOK=$1
HOOK_PATH="$HOME/.config/omarchy/hooks/$1"
HOOK_DIR="$HOOK_PATH.d"
shift
if [[ -f $HOOK_PATH ]]; then
bash "$HOOK_PATH" "$@" || echo "Hook failed: $HOOK_PATH"
fi
if [[ -d $HOOK_DIR ]]; then
for hook in "$HOOK_DIR"/*; do
[[ -f $hook ]] || continue
[[ $hook == *.sample ]] && continue
bash "$hook" "$@" || echo "Hook failed: $hook"
done
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
# omarchy:summary=Reload btop configuration (used by the Omarchy theme switching).
pkill -SIGUSR2 btop
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
# omarchy:summary=Reload hyprland configuration (used by the Omarchy theme switching).
hyprctl reload >/dev/null
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
# omarchy:summary=Restart the hypridle service (used for idle detection and auto-lock).
omarchy-restart-app hypridle
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
# omarchy:summary=Reload mako configuration (used by the Omarchy theme switching).
makoctl reload
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
# omarchy:summary=Restart tmux if running with the latest configuration
if pgrep --quiet tmux; then
tmux source-file ~/.config/tmux/tmux.conf
fi
+48
View File
@@ -0,0 +1,48 @@
#!/bin/bash
# omarchy:summary=Cycle to the next background for the current theme
# omarchy:examples=omarchy theme bg next
THEME_NAME=$(cat "$HOME/.local/state/omarchy/current/theme.name" 2>/dev/null)
THEME_BACKGROUNDS_PATH="$HOME/.local/state/omarchy/current/theme/backgrounds/"
USER_BACKGROUNDS_PATH="$HOME/.config/omarchy/backgrounds/$THEME_NAME/"
CURRENT_BACKGROUND_LINK="$HOME/.local/state/omarchy/current/background"
mapfile -d '' -t BACKGROUNDS < <(find -L "$USER_BACKGROUNDS_PATH" "$THEME_BACKGROUNDS_PATH" -maxdepth 1 -type f -print0 2>/dev/null | sort -z)
TOTAL=${#BACKGROUNDS[@]}
if (( TOTAL == 0 )); then
notify-send "No background was found for theme" -t 2000
setsid uwsm app -- awww clear >/dev/null 2>&1 &
else
# Get current background from symlink
if [[ -L $CURRENT_BACKGROUND_LINK ]]; then
CURRENT_BACKGROUND=$(readlink "$CURRENT_BACKGROUND_LINK")
else
# Default to first background if no symlink exists
CURRENT_BACKGROUND=""
fi
# Find current background index
INDEX=-1
for i in "${!BACKGROUNDS[@]}"; do
if [[ ${BACKGROUNDS[$i]} == $CURRENT_BACKGROUND ]]; then
INDEX=$i
break
fi
done
# Get next background (wrap around)
if (( INDEX == -1 )); then
# Use the first background when no match was found
NEW_BACKGROUND="${BACKGROUNDS[0]}"
else
NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_BACKGROUND="${BACKGROUNDS[$NEXT_INDEX]}"
fi
# Set new background symlink
ln -nsf "$NEW_BACKGROUND" "$CURRENT_BACKGROUND_LINK"
setsid uwsm app -- awww img "$CURRENT_BACKGROUND_LINK" >/dev/null 2>&1 &
fi
+25
View File
@@ -0,0 +1,25 @@
#!/bin/bash
# omarchy:summary=Set the current background image
# omarchy:args=<path-to-image>
# omarchy:examples=omarchy theme bg set ~/Pictures/wallpaper.png
if [[ -z $1 ]]; then
echo "Usage: omarchy-theme-bg-set <path-to-image>" >&2
exit 1
fi
BACKGROUND="$(realpath "$1")"
CURRENT_BACKGROUND_LINK="$HOME/.local/state/omarchy/current/background"
if [[ ! -f "$BACKGROUND" ]]; then
echo "File does not exist: $BACKGROUND" >&2
exit 1
fi
# Create symlink to the new background
ln -nsf "$BACKGROUND" "$CURRENT_BACKGROUND_LINK"
# Kill existing swaybg and start new one
pkill -x swaybg
setsid uwsm-app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 &
+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"
+211
View File
@@ -0,0 +1,211 @@
#!/bin/bash
# omarchy:summary=Generate a theme's colors.toml from its alacritty.toml palette
# omarchy:args=<theme-dir>
# omarchy:hidden=true
set -e
THEME_SOURCE="${1:-}"
COLORS_OUTPUT="$THEME_SOURCE/colors.toml"
ALACRITTY_FILE="$THEME_SOURCE/alacritty.toml"
if [[ -z $THEME_SOURCE ]]; then
echo "Usage: omarchy-theme-colors-from-alacritty <theme-dir>" >&2
exit 1
fi
# Skip if colors.toml already exists in source theme
if [[ -f $COLORS_OUTPUT ]]; then
exit 0
fi
# Skip if no alacritty.toml to extract from
if [[ ! -f $ALACRITTY_FILE ]]; then
exit 0
fi
normalize_hex() {
local color="$1"
[[ -z $color ]] && return
color="${color#0x}"
color="${color#\#}"
if [[ $color =~ ^[0-9a-fA-F]{6}$ ]]; then
printf "#%s\n" "${color,,}"
fi
}
extract_color_in_section() {
local section="$1"
local key="$2"
local color_hex=""
color_hex=$(awk -v section="$section" -v key="$key" '
function trim(value) {
gsub(/^[ \t]+|[ \t]+$/, "", value)
return value
}
function strip_comment(value, i, ch, out, in_single, in_double, prev) {
out = ""
in_single = 0
in_double = 0
prev = ""
for (i = 1; i <= length(value); i++) {
ch = substr(value, i, 1)
if (ch == "\"" && !in_single && prev != "\\") {
in_double = !in_double
} else if (ch == "'\''" && !in_double) {
in_single = !in_single
}
if (ch == "#" && !in_single && !in_double) {
break
}
out = out ch
prev = ch
}
gsub(/[ \t]+$/, "", out)
return out
}
/^[ \t]*\[/ {
in_section = ($0 ~ "^[ \\t]*\\[" section "\\][ \\t]*$")
next
}
in_section {
line = $0
line = strip_comment(line)
split_pos = index(line, "=")
if (split_pos == 0) {
next
}
current_key = trim(substr(line, 1, split_pos - 1))
current_value = trim(substr(line, split_pos + 1))
if (current_key == key) {
gsub(/["'\''#]/, "", current_value)
sub(/^0[xX]/, "", current_value)
if (current_value ~ /^[0-9A-Fa-f]{6}$/) {
print current_value
exit
}
}
}
' "$ALACRITTY_FILE")
if [[ -n $color_hex && $color_hex =~ ^[0-9a-fA-F]{6}$ ]]; then
normalize_hex "$color_hex"
fi
return 0
}
names=(black red green yellow blue magenta cyan white)
# Extract normal colors (color0-7)
for i in {0..7}; do
name="${names[$i]}"
val=$(extract_color_in_section "colors.normal" "$name")
if [[ -z $val ]]; then
val=$(extract_color_in_section "colors" "normal.$name")
fi
printf -v "color$i" "%s" "$val"
done
# Validate we have all normal colors (required)
for c in color0 color1 color2 color3 color4 color5 color6 color7; do
if [[ -z ${!c} ]]; then
echo "Warning: Cannot extract all normal colors from $ALACRITTY_FILE, skipping generation" >&2
exit 0
fi
done
# Extract bright colors (color8-15)
for i in {0..7}; do
normal="color$i"
bright="color$((i + 8))"
name="${names[$i]}"
val=$(extract_color_in_section "colors.bright" "$name")
if [[ -z $val ]]; then
val=$(extract_color_in_section "colors" "bright.$name")
fi
printf -v "$bright" "%s" "${val:-${!normal}}"
done
# Extract primary colors
background=$(extract_color_in_section "colors.primary" "background")
foreground=$(extract_color_in_section "colors.primary" "foreground")
if [[ -z $background ]]; then
background=$(extract_color_in_section "colors" "primary.background")
fi
if [[ -z $foreground ]]; then
foreground=$(extract_color_in_section "colors" "primary.foreground")
fi
# Extract cursor color (from [colors.cursor] section)
cursor=$(extract_color_in_section "colors.cursor" "cursor")
if [[ -z $cursor ]]; then
cursor=$(extract_color_in_section "colors" "cursor.cursor")
fi
# Extract selection colors
selection_background=$(extract_color_in_section "colors.selection" "background")
if [[ -z $selection_background ]]; then
selection_background=$(extract_color_in_section "colors" "selection.background")
fi
selection_foreground=$(extract_color_in_section "colors.selection" "text")
if [[ -z $selection_foreground ]]; then
selection_foreground=$(extract_color_in_section "colors" "selection.text")
fi
# Apply defaults
background=${background:-$color0}
foreground=${foreground:-$color7}
cursor=${cursor:-$foreground}
selection_background=${selection_background:-$foreground}
selection_foreground=${selection_foreground:-$background}
accent=$color4
mkdir -p "$THEME_SOURCE"
cat > "$COLORS_OUTPUT" <<EOF
accent = "$accent"
cursor = "$cursor"
foreground = "$foreground"
background = "$background"
selection_foreground = "$selection_foreground"
selection_background = "$selection_background"
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"
EOF
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# omarchy:summary=Show current theme
# omarchy:examples=omarchy theme current
THEME_NAME_PATH="$HOME/.local/state/omarchy/current/theme.name"
if [[ -f $THEME_NAME_PATH ]]; then
cat $THEME_NAME_PATH | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g'
else
echo "Unknown"
fi
+39
View File
@@ -0,0 +1,39 @@
#!/bin/bash
# omarchy:summary=Install a theme from a git repository
# omarchy:args=[git-repo-url]
# omarchy:examples=omarchy theme install https://github.com/example/omarchy-example-theme.git
# omarchy:examples=omarchy theme install git@github.com:example/omarchy-example-theme.git
if [[ -z $1 ]]; then
echo -e "\e[32mSee https://manuals.omamix.org/2/the-omarchy-manual/90/extra-themes\n\e[0m"
REPO_URL=$(gum input --placeholder="Git repo URL (https or git@host:org/repo.git)" --header="")
else
REPO_URL="$1"
fi
if [[ -z $REPO_URL ]]; then
exit 1
fi
THEMES_DIR="$HOME/.config/omarchy/themes"
# Strip user@host: prefix from scp-style SSH URLs so basename sees just the path
REPO_PATH="$REPO_URL"
[[ $REPO_PATH != *"://"* && $REPO_PATH == *:*/* ]] && REPO_PATH="${REPO_PATH#*:}"
THEME_NAME=$(basename "$REPO_PATH" .git | sed -E 's/^omarchy-//; s/-theme$//' | tr '[:upper:]' '[:lower:]')
THEME_PATH="$THEMES_DIR/$THEME_NAME"
# Remove existing theme if present
if [[ -d $THEME_PATH ]]; then
rm -rf "$THEME_PATH"
fi
# Clone the repo directly to ~/.config/omarchy/themes
if ! git clone "$REPO_URL" "$THEME_PATH"; then
echo "Error: Failed to clone theme repo."
exit 1
fi
# Apply the new theme with omarchy-theme-set
omarchy-theme-set $THEME_NAME
+11
View File
@@ -0,0 +1,11 @@
#!/bin/bash
# omarchy:summary=List available themes
# omarchy:examples=omarchy theme list | omarchy theme set "Tokyo Night"
{
find ~/.config/omarchy/themes/ -mindepth 1 -maxdepth 1 \( -type d -o -type l \) -printf '%f\n'
find "${OMARCHY_PATH}/themes/" -mindepth 1 -maxdepth 1 -type d -printf '%f\n'
} | sort -u | while read -r name; do
echo "$name" | sed -E 's/(^|-)([a-z])/\1\u\2/g; s/-/ /g'
done
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
# omarchy:summary=Refresh the current theme from its templates.
THEME_NAME_PATH="$HOME/.local/state/omarchy/current/theme.name"
if [[ -f $THEME_NAME_PATH ]]; then
OMARCHY_THEME_SKIP_BACKGROUND=1 omarchy-theme-set "$(cat $THEME_NAME_PATH)"
fi
+36
View File
@@ -0,0 +1,36 @@
#!/bin/bash
# omarchy:summary=Remove a user-installed theme
# omarchy:args=[theme-name]
# omarchy:examples=omarchy theme remove "Tokyo Night"
if [[ -z $1 ]]; then
mapfile -t extra_themes < <(find ~/.config/omarchy/themes -mindepth 1 -maxdepth 1 -type d ! -xtype l -printf '%f\n')
if (( ${#extra_themes[@]} > 0 )); then
THEME_NAME=$(printf '%s\n' "${extra_themes[@]}" | sort | gum choose --header="Remove extra theme")
else
echo "No extra themes installed."
exit 1
fi
else
THEME_NAME="$1"
fi
THEMES_DIR="$HOME/.config/omarchy/themes"
CURRENT_DIR="$HOME/.local/state/omarchy/current"
THEME_PATH="$THEMES_DIR/$THEME_NAME"
# Ensure a theme was set
if [[ -z $THEME_NAME ]]; then
exit 1
fi
# Check if theme exists before attempting removal
if [[ ! -d $THEME_PATH ]]; then
echo "Error: Theme '$THEME_NAME' not found."
exit 1
fi
# Now remove the theme directory for THEME_NAME
rm -rf "$THEME_PATH"
+74
View File
@@ -0,0 +1,74 @@
#!/bin/bash
# omarchy:summary=Apply an Omarchy theme
# omarchy:args=<theme-name>
# omarchy:examples=omarchy theme list | omarchy theme set "Tokyo Night"
if [[ -z $1 ]]; then
echo "Usage: omarchy-theme-set <theme-name>"
exit 1
fi
CURRENT_THEME_PATH="$HOME/.local/state/omarchy/current/theme"
NEXT_THEME_PATH="$HOME/.local/state/omarchy/current/next-theme"
USER_THEMES_PATH="$HOME/.config/omarchy/themes"
OMARCHY_THEMES_PATH="${OMARCHY_PATH}/themes"
THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
if [[ ! -d $OMARCHY_THEMES_PATH/$THEME_NAME ]] && [[ ! -d $USER_THEMES_PATH/$THEME_NAME ]]; then
echo "Theme '$THEME_NAME' does not exist"
exit 1
fi
# Setup clean next theme directory (for atomic theme config swapping)
rm -rf "$NEXT_THEME_PATH"
mkdir -p "$NEXT_THEME_PATH"
# Copy official theme first, then overlay user customizations on top
cp -r "$OMARCHY_THEMES_PATH/$THEME_NAME/"* "$NEXT_THEME_PATH/" 2>/dev/null
cp -r "$USER_THEMES_PATH/$THEME_NAME/"* "$NEXT_THEME_PATH/" 2>/dev/null
# Generate colors.toml from alacritty.toml if theme is missing colors.toml
if [[ ! -f $NEXT_THEME_PATH/colors.toml && -f $NEXT_THEME_PATH/alacritty.toml ]]; then
omarchy-theme-colors-from-alacritty "$NEXT_THEME_PATH"
fi
# Generate dynamic configs
omarchy-theme-set-templates
# Swap next theme in as current
rm -rf "$CURRENT_THEME_PATH"
mv "$NEXT_THEME_PATH" "$CURRENT_THEME_PATH"
# Store theme name for reference
echo "$THEME_NAME" >"$HOME/.local/state/omarchy/current/theme.name"
# Change background with theme
if [[ $OMARCHY_THEME_SKIP_BACKGROUND != "1" ]]; then
omarchy-theme-bg-next
fi
# # Restart components to apply new theme
# if pgrep -x waybar >/dev/null; then
# omarchy-restart-waybar
# fi
# omarchy-restart-swayosd
# omarchy-restart-terminal
omarchy-restart-hyprctl
omarchy-restart-btop
# omarchy-restart-opencode
omarchy-restart-mako
omarchy-restart-tmux
# omarchy-restart-helix
# Change app-specific themes
omarchy-theme-set-foot
omarchy-theme-set-gnome
omarchy-theme-set-browser
#omarchy-theme-set-vscode
omarchy-theme-set-obsidian
#omarchy-theme-set-keyboard
# Call hook on theme set
omarchy-hook theme-set "$THEME_NAME" >/dev/null
+44
View File
@@ -0,0 +1,44 @@
#!/bin/bash
# omarchy:summary=Apply the current theme color to Chromium, Chrome, Edge, and Brave
# omarchy:hidden=true
CHROMIUM_THEME=~/.local/state/omarchy/current/theme/chromium.theme
if [[ -f $CHROMIUM_THEME ]]; then
THEME_RGB_COLOR=$(<$CHROMIUM_THEME)
THEME_HEX_COLOR=$(printf '#%02x%02x%02x' ${THEME_RGB_COLOR//,/ })
else
# Use a default, neutral grey if theme doesn't have a color
THEME_HEX_COLOR="#1c2027"
fi
set_browser_policy() {
local policy_dir="$1"
[[ -d $policy_dir ]] || return
echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\", \"BrowserColorScheme\": \"device\"}" | tee "$policy_dir/color.json" >/dev/null
}
refresh_running_browser() {
local process="$1"
local command="$2"
local pgrep_args="${3:--x}"
if omarchy-cmd-present "$command" && pgrep $pgrep_args "$process" >/dev/null; then
"$command" --refresh-platform-policy --no-startup-window &>/dev/null
fi
}
set_browser_policy /etc/chromium/policies/managed
refresh_running_browser chromium chromium
set_browser_policy /etc/opt/chrome/policies/managed
refresh_running_browser chrome google-chrome-stable || refresh_running_browser chrome google-chrome
set_browser_policy /etc/opt/edge/policies/managed
refresh_running_browser msedge microsoft-edge-stable
set_browser_policy /etc/brave/policies/managed
refresh_running_browser brave brave
refresh_running_browser brave-origin-beta brave-origin-beta -f
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
# omarchy:summary=Apply current Omarchy theme colors to running Foot terminals
# omarchy:hidden=true
foot_theme=~/.local/state/omarchy/current/theme/foot.ini
if [[ ! -f $foot_theme ]] || ! pgrep -x foot >/dev/null; then
exit 0
fi
foot_osc=$(awk -F= '
function color(value) { return "#" value }
/^foreground=/ { printf "\033]10;%s\007", color($2) }
/^background=/ { printf "\033]11;%s\007", color($2) }
/^cursor=/ { split($2, parts, " "); printf "\033]12;%s\007", color(parts[2]) }
/^selection-background=/ { printf "\033]17;%s\007", color($2) }
/^selection-foreground=/ { printf "\033]19;%s\007", color($2) }
/^regular[0-7]=/ { split($1, parts, "regular"); printf "\033]4;%d;%s\007", parts[2], color($2) }
/^bright[0-7]=/ { split($1, parts, "bright"); printf "\033]4;%d;%s\007", parts[2] + 8, color($2) }
' "$foot_theme")
for foot_pid in $(pgrep -x foot); do
for child_pid in $(pgrep -P "$foot_pid"); do
tty=$(readlink "/proc/$child_pid/fd/1" 2>/dev/null)
[[ $tty == /dev/pts/* ]] && printf '%b' "$foot_osc" >"$tty"
done
done
+20
View File
@@ -0,0 +1,20 @@
#!/bin/bash
# omarchy:summary=Apply the current theme to GNOME color mode and icon settings
# omarchy:hidden=true
if [[ -f ~/.local/state/omarchy/current/theme/light.mode ]]; then
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
else
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
fi
# Change gnome icon theme color
GNOME_ICONS_THEME=~/.local/state/omarchy/current/theme/icons.theme
if [[ -f $GNOME_ICONS_THEME ]]; then
gsettings set org.gnome.desktop.interface icon-theme "$(<$GNOME_ICONS_THEME)"
else
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
fi
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
# omarchy:summary=Apply the current theme keyboard color to supported keyboards
# omarchy:hidden=true
omarchy-theme-set-keyboard-asus-rog
omarchy-theme-set-keyboard-f16
+10
View File
@@ -0,0 +1,10 @@
#!/bin/bash
# omarchy:summary=Apply the current theme keyboard color to ASUS ROG keyboards
# omarchy:hidden=true
ASUSCTL_THEME=~/.local/state/omarchy/current/theme/keyboard.rgb
if omarchy-cmd-present asusctl; then
asusctl aura effect static -c $(sed 's/^#//' $ASUSCTL_THEME)
fi
+25
View File
@@ -0,0 +1,25 @@
#!/bin/bash
# omarchy:summary=Apply the current theme keyboard color to Framework Laptop 16 keyboards
# omarchy:hidden=true
FRAMEWORK16_THEME=~/.local/state/omarchy/current/theme/keyboard.rgb
if omarchy-cmd-present qmk_hid && [[ -f $FRAMEWORK16_THEME ]]; then
hex=$(cat "$FRAMEWORK16_THEME")
hex="${hex#\#}"
# Convert hex to QMK HSV (0-255 scale) using Python's colorsys
read -r h s <<< $(python3 -c "
import colorsys
r, g, b = int('$hex'[:2],16)/255, int('$hex'[2:4],16)/255, int('$hex'[4:6],16)/255
h, s, v = colorsys.rgb_to_hsv(r, g, b)
print(int(h * 255), int(s * 255))
")
qmk_hid via --rgb-effect 1 2>/dev/null
qmk_hid via --rgb-hue "$h" 2>/dev/null
qmk_hid via --rgb-saturation "$s" 2>/dev/null
qmk_hid via --rgb-brightness 100 2>/dev/null
qmk_hid via --save 2>/dev/null
fi
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
# omarchy:summary=Sync Omarchy theme to all Obsidian vaults
# omarchy:hidden=true
CURRENT_THEME_DIR="$HOME/.local/state/omarchy/current/theme"
[[ -f $CURRENT_THEME_DIR/obsidian.css ]] || exit 0
jq -r '.vaults | values[].path' ~/.config/obsidian/obsidian.json 2>/dev/null | while read -r vault_path; do
[[ -d $vault_path/.obsidian ]] || continue
theme_dir="$vault_path/.obsidian/themes/Omarchy"
mkdir -p "$theme_dir"
[[ -f $theme_dir/manifest.json ]] || cat >"$theme_dir/manifest.json" <<'EOF'
{
"name": "Omarchy",
"version": "1.0.0",
"minAppVersion": "0.16.0",
"description": "Automatically syncs with your current Omarchy system theme colors and fonts",
"author": "Omarchy",
"authorUrl": "https://omarchy.org"
}
EOF
cp "$CURRENT_THEME_DIR/obsidian.css" "$theme_dir/theme.css"
done
+404
View File
@@ -0,0 +1,404 @@
#!/bin/bash
# omarchy:summary=Generate themed config files from Omarchy templates
# omarchy:hidden=true
TEMPLATES_DIR="$OMARCHY_PATH/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"
declare -A THEME_COLORS
# Convert hex color to decimal RGB (e.g., "#1e1e2e" -> "30,30,46")
hex_to_rgb() {
local hex="${1#\#}"
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)
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 "${template_files[@]}"; do
filename=$(basename "$tpl" .tpl)
output_path="$NEXT_THEME_DIR/$filename"
# Don't overwrite configs already exists in the output directory (copied from theme specific folder)
if [[ ! -f $output_path ]]; then
sed -f "$sed_script" "$tpl" >"$output_path"
fi
done
rm "$sed_script"
fi
apply_shell_section_overrides
+40
View File
@@ -0,0 +1,40 @@
#!/bin/bash
# omarchy:summary=Sync Omarchy theme to VS Code, VSCodium, and Cursor
# omarchy:hidden=true
VS_CODE_THEME="$HOME/.local/state/omarchy/current/theme/vscode.json"
set_theme() {
local editor_cmd="$1"
local settings_path="$2"
omarchy-cmd-present "$editor_cmd" || return 0
if [[ -f $VS_CODE_THEME ]]; then
theme_name=$(jq -r '.name' "$VS_CODE_THEME")
extension=$(jq -r '.extension' "$VS_CODE_THEME")
if [[ -n $extension ]] && ! "$editor_cmd" --list-extensions 2>/dev/null | grep -Fxq "$extension"; then
"$editor_cmd" --install-extension "$extension" >/dev/null 2>&1
fi
mkdir -p "$(dirname "$settings_path")"
[[ -f $settings_path ]] || printf '{\n}\n' >"$settings_path"
if ! grep -q '"workbench.colorTheme"' "$settings_path"; then
sed -i --follow-symlinks -E '0,/\{/{s/\{/{\ "workbench.colorTheme": "",/}' "$settings_path"
fi
sed -i --follow-symlinks -E \
"s/(\"workbench.colorTheme\"[[:space:]]*:[[:space:]]*\")[^\"]*(\")/\1$theme_name\2/" \
"$settings_path"
elif [[ -f $settings_path ]]; then
sed -i --follow-symlinks -E 's/\"workbench\.colorTheme\"[[:space:]]*:[^,}]*,?//' "$settings_path"
fi
}
! omarchy-toggle-enabled skip-vscode-theme-changes && set_theme "code" "$HOME/.config/Code/User/settings.json"
! omarchy-toggle-enabled skip-vscode-insiders-theme-changes && set_theme "code-insiders" "$HOME/.config/Code - Insiders/User/settings.json"
! omarchy-toggle-enabled skip-codium-theme-changes && set_theme "codium" "$HOME/.config/VSCodium/User/settings.json"
! omarchy-toggle-enabled skip-cursor-theme-changes && set_theme "cursor" "$HOME/.config/Cursor/User/settings.json"
+10
View File
@@ -0,0 +1,10 @@
#!/bin/bash
# omarchy:summary=Update user-installed git themes
for dir in ~/.config/omarchy/themes/*/; do
if [[ -d $dir ]] && [[ ! -L ${dir%/} ]] && [[ -d $dir/.git ]]; then
echo "Updating: $(basename "$dir")"
git -C "$dir" pull
fi
done
@@ -0,0 +1,3 @@
THEMES_STATE_DIR = "{{ vars.THEMES_STATE_DIR }}"
OMARCHY_PATH = "{{ vars.OMARCHY_PATH }}"
Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

@@ -0,0 +1,84 @@
# https://github.com/catppuccin/btop/blob/main/themes/catppuccin_latte.theme
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#eff1f5"
# Main text color
theme[main_fg]="#4c4f69"
# Title color for boxes
theme[title]="#4c4f69"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#1e66f5"
# Background color of selected item in processes box
theme[selected_bg]="#bcc0cc"
# Foreground color of selected item in processes box
theme[selected_fg]="#1e66f5"
# Color of inactive/disabled text
theme[inactive_fg]="#8c8fa1"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#dc8a78"
# Background color of the percentage meters
theme[meter_bg]="#bcc0cc"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#dc8a78"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="#8839ef" #Mauve
theme[mem_box]="#40a02b" #Green
theme[net_box]="#e64553" #Maroon
theme[proc_box]="#1e66f5" #Blue
# Box divider line and small boxes line color
theme[div_line]="#9ca0b0"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="#40a02b"
theme[temp_mid]="#df8e1d"
theme[temp_end]="#d20f39"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="#179299"
theme[cpu_mid]="#209fb5"
theme[cpu_end]="#7287fd"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="#8839ef"
theme[free_mid]="#7287fd"
theme[free_end]="#1e66f5"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="#209fb5"
theme[cached_mid]="#1e66f5"
theme[cached_end]="#7287fd"
# Mem/Disk available meter (Peach -> Red)
theme[available_start]="#fe640b"
theme[available_mid]="#e64553"
theme[available_end]="#d20f39"
# Mem/Disk used meter (Green -> Sky)
theme[used_start]="#40a02b"
theme[used_mid]="#179299"
theme[used_end]="#04a5e5"
# Download graph colors (Peach -> Red)
theme[download_start]="#fe640b"
theme[download_mid]="#e64553"
theme[download_end]="#d20f39"
# Upload graph colors (Green -> Sky)
theme[upload_start]="#40a02b"
theme[upload_mid]="#179299"
theme[upload_end]="#04a5e5"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="#209fb5"
theme[process_mid]="#7287fd"
theme[process_end]="#8839ef"
@@ -0,0 +1,31 @@
mode = "light"
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"
@@ -0,0 +1 @@
Yaru-blue
@@ -0,0 +1 @@
# This will set "prefer-light" and use "Adwaita" as the theme
@@ -0,0 +1,2 @@
vim.opt.background = 'light'
vim.cmd("colorscheme catppuccin")
@@ -0,0 +1,16 @@
return {
{
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
opts = {
flavour = "latte",
},
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "catppuccin-latte",
},
},
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,4 @@
{
"name": "Catppuccin Latte",
"extension": "catppuccin.catppuccin-vsc"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

@@ -0,0 +1,83 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#1E1E2E"
# Main text color
theme[main_fg]="#c6d0f5"
# Title color for boxes
theme[title]="#c6d0f5"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#8caaee"
# Background color of selected item in processes box
theme[selected_bg]="#51576d"
# Foreground color of selected item in processes box
theme[selected_fg]="#8caaee"
# Color of inactive/disabled text
theme[inactive_fg]="#838ba7"
# Color of text appearing on top of graphs, i.e uptime and current network graph scaling
theme[graph_text]="#f2d5cf"
# Background color of the percentage meters
theme[meter_bg]="#51576d"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#f2d5cf"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="#ca9ee6" #Mauve
theme[mem_box]="#a6d189" #Green
theme[net_box]="#ea999c" #Maroon
theme[proc_box]="#8caaee" #Blue
# Box divider line and small boxes line color
theme[div_line]="#737994"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="#a6d189"
theme[temp_mid]="#e5c890"
theme[temp_end]="#e78284"
# CPU graph colors (Teal -> Lavender)
theme[cpu_start]="#81c8be"
theme[cpu_mid]="#85c1dc"
theme[cpu_end]="#babbf1"
# Mem/Disk free meter (Mauve -> Lavender -> Blue)
theme[free_start]="#ca9ee6"
theme[free_mid]="#babbf1"
theme[free_end]="#8caaee"
# Mem/Disk cached meter (Sapphire -> Lavender)
theme[cached_start]="#85c1dc"
theme[cached_mid]="#8caaee"
theme[cached_end]="#babbf1"
# Mem/Disk available meter (Peach -> Red)
theme[available_start]="#ef9f76"
theme[available_mid]="#ea999c"
theme[available_end]="#e78284"
# Mem/Disk used meter (Green -> Sky)
theme[used_start]="#a6d189"
theme[used_mid]="#81c8be"
theme[used_end]="#99d1db"
# Download graph colors (Peach -> Red)
theme[download_start]="#ef9f76"
theme[download_mid]="#ea999c"
theme[download_end]="#e78284"
# Upload graph colors (Green -> Sky)
theme[upload_start]="#a6d189"
theme[upload_mid]="#81c8be"
theme[upload_end]="#99d1db"
# Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve)
theme[process_start]="#85c1dc"
theme[process_mid]="#babbf1"
theme[process_end]="#ca9ee6"
@@ -0,0 +1,31 @@
mode = "dark"
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"
@@ -0,0 +1 @@
Yaru-purple
@@ -0,0 +1,2 @@
vim.opt.background = 'dark'
vim.cmd("colorscheme catppuccin")
@@ -0,0 +1,13 @@
return {
{
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "catppuccin-nvim",
},
},
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,4 @@
{
"name": "Catppuccin Mocha",
"extension": "catppuccin.catppuccin-vsc"
}
@@ -0,0 +1,2 @@
@define-color foreground #cdd6f4;
@define-color background #181824;
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 844 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 B

+70
View File
@@ -0,0 +1,70 @@
# Main background, empty for terminal default, need to be empty if you want transparent background
theme[main_bg]="#060B1E"
# Main text color
theme[main_fg]="#ffcead"
# Title color for boxes
theme[title]="#c89dc1"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#a3bfd1"
# Background color of selected item in processes box
theme[selected_bg]="#6d7db6"
# Foreground color of selected item in processes box
theme[selected_fg]="#ffcead"
# Color of inactive/disabled text
theme[inactive_fg]="#6d7db6"
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
theme[proc_misc]="#c89dc1"
# Box outline and divider line color
theme[cpu_box]="#92a593"
theme[mem_box]="#92a593"
theme[net_box]="#92a593"
theme[proc_box]="#92a593"
theme[div_line]="#6d7db6"
# Gradient for all meters and graphs
theme[temp_start]="#a3bfd1"
theme[temp_mid]="#7d82d9"
theme[temp_end]="#92a593"
theme[cpu_start]="#a3bfd1"
theme[cpu_mid]="#7d82d9"
theme[cpu_end]="#92a593"
theme[free_start]="#7d82d9"
theme[free_mid]="#E9BB4F"
theme[free_end]="#E9BB4F"
theme[cached_start]="#E9BB4F"
theme[cached_mid]="#E9BB4F"
theme[cached_end]="#E9BB4F"
theme[available_start]="#a3bfd1"
theme[available_mid]="#a3bfd1"
theme[available_end]="#a3bfd1"
theme[used_start]="#92a593"
theme[used_mid]="#92a593"
theme[used_end]="#92a593"
theme[download_start]="#E9BB4F"
theme[download_mid]="#a3bfd1"
theme[download_end]="#7d82d9"
theme[upload_start]="#E9BB4F"
theme[upload_mid]="#a3bfd1"
theme[upload_end]="#7d82d9"
@@ -0,0 +1,31 @@
mode = "dark"
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"

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