theme: template configs and refresh apex assets
- template theme selection in alacritty, btop, fuzzel, ghostty, waybar, swaync, wezterm, zathura, gemini, zsh, and nvim astroui - add apex-aeon assets and refresh apex-neon palettes across terminals, editors, and UI components - switch UI fonts to GeistMono in GTK/Qt, Hyprland/Hyprlock, Kitty, Zed, and Satty - add refresh-apex-themes helper to sync theme outputs
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
[general]
|
||||
import = ["~/.config/alacritty/themes/apex-neon.toml"]
|
||||
import = ["~/.config/alacritty/themes/{{ .chezmoi.config.data.theme }}.toml"]
|
||||
|
||||
live_config_reload = true
|
||||
ipc_socket = true
|
||||
@@ -9,8 +9,8 @@ opacity = 0.7
|
||||
padding = { x = 4, y = 4 }
|
||||
|
||||
[font]
|
||||
normal = { family = "Inconsolata Nerd Font Mono", style = "Regular" }
|
||||
size = 9
|
||||
normal = { family = "GeistMono Nerd Font", style = "Regular" }
|
||||
size = 8
|
||||
|
||||
[mouse]
|
||||
hide_when_typing = true
|
||||
63
dot_config/alacritty/themes/apex-aeon.toml
Normal file
63
dot_config/alacritty/themes/apex-aeon.toml
Normal file
@@ -0,0 +1,63 @@
|
||||
# APEX AEON — Alacritty theme (colors only)
|
||||
|
||||
[colors.primary]
|
||||
background = "#f5f5f5"
|
||||
foreground = "#0a0a0a"
|
||||
dim_foreground = "#737373"
|
||||
bright_foreground = "#ffffff"
|
||||
|
||||
[colors.cursor]
|
||||
text = "#0a0a0a"
|
||||
cursor = "#ff0044"
|
||||
|
||||
[colors.vi_mode_cursor]
|
||||
text = "#0a0a0a"
|
||||
cursor = "#007a88"
|
||||
|
||||
[colors.selection]
|
||||
text = "#0a0a0a"
|
||||
background = "#ff0044"
|
||||
|
||||
[colors.search.matches]
|
||||
foreground = "#0a0a0a"
|
||||
background = "#ff0044"
|
||||
|
||||
[colors.search.focused_match]
|
||||
foreground = "#0a0a0a"
|
||||
background = "#d18f00"
|
||||
|
||||
[colors.hints.start]
|
||||
foreground = "#0a0a0a"
|
||||
background = "#d18f00"
|
||||
|
||||
[colors.hints.end]
|
||||
foreground = "#0a0a0a"
|
||||
background = "#007a88"
|
||||
|
||||
[colors.line_indicator]
|
||||
foreground = "None"
|
||||
background = "None"
|
||||
|
||||
[colors.footer_bar]
|
||||
foreground = "#0a0a0a"
|
||||
background = "#e8e8e8"
|
||||
|
||||
[colors.normal]
|
||||
black = "#0a0a0a"
|
||||
red = "#ff0044"
|
||||
green = "#00b377"
|
||||
yellow = "#d18f00"
|
||||
blue = "#007a88"
|
||||
magenta = "#7a3cff"
|
||||
cyan = "#007a88"
|
||||
white = "#f5f5f5"
|
||||
|
||||
[colors.bright]
|
||||
black = "#737373"
|
||||
red = "#ff4d6d"
|
||||
green = "#33d6a6"
|
||||
yellow = "#ffbf40"
|
||||
blue = "#33bccc"
|
||||
magenta = "#a680ff"
|
||||
cyan = "#33bccc"
|
||||
white = "#ffffff"
|
||||
@@ -43,21 +43,21 @@ foreground = "#ededed"
|
||||
background = "#141414"
|
||||
|
||||
[colors.normal]
|
||||
black = "#050505"
|
||||
red = "#ff0044"
|
||||
green = "#00ff99"
|
||||
yellow = "#ffb700"
|
||||
blue = "#00eaff"
|
||||
black = "#050505"
|
||||
red = "#ff0044"
|
||||
green = "#00ff99"
|
||||
yellow = "#ffb700"
|
||||
blue = "#00eaff"
|
||||
magenta = "#9d00ff"
|
||||
cyan = "#00eaff"
|
||||
white = "#ededed"
|
||||
cyan = "#00eaff"
|
||||
white = "#ededed"
|
||||
|
||||
[colors.bright]
|
||||
black = "#262626"
|
||||
red = "#ff8899"
|
||||
green = "#2bffb2"
|
||||
yellow = "#ffd24d"
|
||||
blue = "#5af3ff"
|
||||
black = "#737373"
|
||||
red = "#ff8899"
|
||||
green = "#2bffb2"
|
||||
yellow = "#ffd24d"
|
||||
blue = "#5af3ff"
|
||||
magenta = "#c84dff"
|
||||
cyan = "#5af3ff"
|
||||
white = "#ffffff"
|
||||
cyan = "#5af3ff"
|
||||
white = "#ffffff"
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||
color_theme = "/home/mpuchstein/.config/btop/themes/apex-neon.theme"
|
||||
color_theme = "{{ .chezmoi.homeDir }}/.config/btop/themes/{{ .chezmoi.config.data.theme }}.theme"
|
||||
|
||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||
theme_background = true
|
||||
89
dot_config/btop/themes/apex-aeon.theme
Normal file
89
dot_config/btop/themes/apex-aeon.theme
Normal file
@@ -0,0 +1,89 @@
|
||||
# Apex Aeon — Btop Theme
|
||||
# DNA: State over Decoration
|
||||
|
||||
# Main background, empty for terminal default, black for dark themes
|
||||
theme[main_bg]="#f5f5f5"
|
||||
|
||||
# Main text color
|
||||
theme[main_fg]="#0a0a0a"
|
||||
|
||||
# Title color for boxes
|
||||
theme[title]="#0a0a0a"
|
||||
|
||||
# Highlight color for keyboard shortcuts
|
||||
theme[hi_fg]="#ff0044"
|
||||
|
||||
# Background color of selected item in processes box
|
||||
theme[selected_bg]="#ff0044"
|
||||
|
||||
# Foreground color of selected item in processes box
|
||||
theme[selected_fg]="#0a0a0a"
|
||||
|
||||
# Color of inactive/disabled text
|
||||
theme[inactive_fg]="#737373"
|
||||
|
||||
# Color of text appearing on top of graphs, i.e. usage percentage
|
||||
theme[graph_text]="#737373"
|
||||
|
||||
# Background color of the percentage meters
|
||||
theme[meter_bg]="#e8e8e8"
|
||||
|
||||
# Misc colors for processes box including mini cpu graphs, used memory percentage, and entries filter
|
||||
theme[proc_misc]="#007a88"
|
||||
|
||||
# Cpu box outline color
|
||||
theme[cpu_box]="#737373"
|
||||
|
||||
# Memory box outline color
|
||||
theme[mem_box]="#737373"
|
||||
|
||||
# Net box outline color
|
||||
theme[net_box]="#737373"
|
||||
|
||||
# Processes box outline color
|
||||
theme[proc_box]="#737373"
|
||||
|
||||
# Box divider line and small boxes line color
|
||||
theme[div_line]="#737373"
|
||||
|
||||
# Temperature graph colors
|
||||
theme[temp_start]="#007a88"
|
||||
theme[temp_mid]="#7a3cff"
|
||||
theme[temp_end]="#ff0044"
|
||||
|
||||
# CPU graph colors
|
||||
theme[cpu_start]="#007a88"
|
||||
theme[cpu_mid]="#7a3cff"
|
||||
theme[cpu_end]="#ff0044"
|
||||
|
||||
# Mem graph colors
|
||||
theme[free_start]="#00b377"
|
||||
theme[free_mid]="#d18f00"
|
||||
theme[free_end]="#ff0044"
|
||||
|
||||
theme[cached_start]="#007a88"
|
||||
theme[cached_mid]="#7a3cff"
|
||||
theme[cached_end]="#ff0044"
|
||||
|
||||
theme[available_start]="#00b377"
|
||||
theme[available_mid]="#d18f00"
|
||||
theme[available_end]="#ff0044"
|
||||
|
||||
theme[used_start]="#007a88"
|
||||
theme[used_mid]="#7a3cff"
|
||||
theme[used_end]="#ff0044"
|
||||
|
||||
# Download graph colors
|
||||
theme[download_start]="#007a88"
|
||||
theme[download_mid]="#7a3cff"
|
||||
theme[download_end]="#ff0044"
|
||||
|
||||
# Upload graph colors
|
||||
theme[upload_start]="#007a88"
|
||||
theme[upload_mid]="#7a3cff"
|
||||
theme[upload_end]="#ff0044"
|
||||
|
||||
# Process path color
|
||||
theme[process_start]="#007a88"
|
||||
theme[process_mid]="#7a3cff"
|
||||
theme[process_end]="#ff0044"
|
||||
89
dot_config/btop/themes/apex-neon.theme
Normal file
89
dot_config/btop/themes/apex-neon.theme
Normal file
@@ -0,0 +1,89 @@
|
||||
# Apex Neon — Btop Theme
|
||||
# DNA: State over Decoration
|
||||
|
||||
# Main background, empty for terminal default, black for dark themes
|
||||
theme[main_bg]="#050505"
|
||||
|
||||
# Main text color
|
||||
theme[main_fg]="#ededed"
|
||||
|
||||
# Title color for boxes
|
||||
theme[title]="#ededed"
|
||||
|
||||
# Highlight color for keyboard shortcuts
|
||||
theme[hi_fg]="#ff0044"
|
||||
|
||||
# Background color of selected item in processes box
|
||||
theme[selected_bg]="#ff0044"
|
||||
|
||||
# Foreground color of selected item in processes box
|
||||
theme[selected_fg]="#050505"
|
||||
|
||||
# Color of inactive/disabled text
|
||||
theme[inactive_fg]="#737373"
|
||||
|
||||
# Color of text appearing on top of graphs, i.e. usage percentage
|
||||
theme[graph_text]="#737373"
|
||||
|
||||
# Background color of the percentage meters
|
||||
theme[meter_bg]="#141414"
|
||||
|
||||
# Misc colors for processes box including mini cpu graphs, used memory percentage, and entries filter
|
||||
theme[proc_misc]="#00eaff"
|
||||
|
||||
# Cpu box outline color
|
||||
theme[cpu_box]="#262626"
|
||||
|
||||
# Memory box outline color
|
||||
theme[mem_box]="#262626"
|
||||
|
||||
# Net box outline color
|
||||
theme[net_box]="#262626"
|
||||
|
||||
# Processes box outline color
|
||||
theme[proc_box]="#262626"
|
||||
|
||||
# Box divider line and small boxes line color
|
||||
theme[div_line]="#262626"
|
||||
|
||||
# Temperature graph colors
|
||||
theme[temp_start]="#00eaff"
|
||||
theme[temp_mid]="#9d00ff"
|
||||
theme[temp_end]="#ff0044"
|
||||
|
||||
# CPU graph colors
|
||||
theme[cpu_start]="#00eaff"
|
||||
theme[cpu_mid]="#9d00ff"
|
||||
theme[cpu_end]="#ff0044"
|
||||
|
||||
# Mem graph colors
|
||||
theme[free_start]="#00ff99"
|
||||
theme[free_mid]="#ffb700"
|
||||
theme[free_end]="#ff0044"
|
||||
|
||||
theme[cached_start]="#00eaff"
|
||||
theme[cached_mid]="#9d00ff"
|
||||
theme[cached_end]="#ff0044"
|
||||
|
||||
theme[available_start]="#00ff99"
|
||||
theme[available_mid]="#ffb700"
|
||||
theme[available_end]="#ff0044"
|
||||
|
||||
theme[used_start]="#00eaff"
|
||||
theme[used_mid]="#9d00ff"
|
||||
theme[used_end]="#ff0044"
|
||||
|
||||
# Download graph colors
|
||||
theme[download_start]="#00eaff"
|
||||
theme[download_mid]="#9d00ff"
|
||||
theme[download_end]="#ff0044"
|
||||
|
||||
# Upload graph colors
|
||||
theme[upload_start]="#00eaff"
|
||||
theme[upload_mid]="#9d00ff"
|
||||
theme[upload_end]="#ff0044"
|
||||
|
||||
# Process path color
|
||||
theme[process_start]="#00eaff"
|
||||
theme[process_mid]="#9d00ff"
|
||||
theme[process_end]="#ff0044"
|
||||
@@ -1,63 +0,0 @@
|
||||
# APEX NEON - BTOP THEME
|
||||
# Bashtop theme with #050505 background and Razor Red accents
|
||||
|
||||
theme[main_bg]="#050505"
|
||||
|
||||
# Main text color
|
||||
theme[main_fg]="#ededed"
|
||||
|
||||
# Title color for boxes
|
||||
theme[title]="#ededed"
|
||||
|
||||
# Highlight color for keyboard shortcuts
|
||||
theme[hi_fg]="#ff0044"
|
||||
|
||||
# Background color of selected item in processes box
|
||||
theme[selected_bg]="#00eaff"
|
||||
|
||||
# Foreground color of selected item in processes box
|
||||
theme[selected_fg]="#050505"
|
||||
|
||||
# Color of inactive/disabled text
|
||||
theme[inactive_fg]="#404040"
|
||||
|
||||
# Color of text appearing on top of graphs (i.e uptime, network graph)
|
||||
theme[graph_text]="#ededed"
|
||||
|
||||
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
|
||||
theme[proc_misc]="#00eaff"
|
||||
|
||||
# Cpu box outline color
|
||||
theme[cpu_box]="#ff0044"
|
||||
|
||||
# Memory box outline color
|
||||
theme[mem_box]="#ff0044"
|
||||
|
||||
# Net box outline color
|
||||
theme[net_box]="#ff0044"
|
||||
|
||||
# Processes box outline color
|
||||
theme[proc_box]="#ff0044"
|
||||
|
||||
# Box divider line and small boxes line color
|
||||
theme[div_line]="#262626"
|
||||
|
||||
# Temperature graph colors (Green -> Yellow -> Red)
|
||||
theme[temp_start]="#00ff99"
|
||||
theme[temp_mid]="#ffb700"
|
||||
theme[temp_end]="#ff0044"
|
||||
|
||||
# CPU graph colors (Teal -> Cyan -> Purple)
|
||||
theme[cpu_start]="#00eaff"
|
||||
theme[cpu_mid]="#0088cc"
|
||||
theme[cpu_end]="#9d00ff"
|
||||
|
||||
# Upload graph colors (start -> mid -> end)
|
||||
theme[upload_start]="#9d00ff"
|
||||
theme[upload_mid]="#ff0044"
|
||||
theme[upload_end]="#ff0044"
|
||||
|
||||
# Download graph colors (start -> mid -> end)
|
||||
theme[download_start]="#00eaff"
|
||||
theme[download_mid]="#0088cc"
|
||||
theme[download_end]="#0088cc"
|
||||
@@ -55,7 +55,7 @@ inner-pad=20
|
||||
|
||||
# enable-mouse=yes
|
||||
|
||||
include=~/.config/fuzzel/themes/apex-neon.ini
|
||||
include=~/.config/fuzzel/themes/{{ .chezmoi.config.data.theme }}.ini
|
||||
# include=~/.config/fuzzel/themes/owl.ini
|
||||
#[colors]
|
||||
# background=fdf6e3ff
|
||||
15
dot_config/fuzzel/themes/apex-aeon.ini
Normal file
15
dot_config/fuzzel/themes/apex-aeon.ini
Normal file
@@ -0,0 +1,15 @@
|
||||
# Apex Aeon — Fuzzel Theme
|
||||
# DNA: State over Decoration
|
||||
|
||||
[colors]
|
||||
background=f5f5f5ff
|
||||
text=0a0a0aff
|
||||
match=007a88ff
|
||||
selection=ff0044ff
|
||||
selection-text=0a0a0aff
|
||||
selection-match=007a88ff
|
||||
border=007a88ff
|
||||
|
||||
[border]
|
||||
width=2
|
||||
radius=0
|
||||
1
dot_config/ghostty/config.tmpl
Normal file
1
dot_config/ghostty/config.tmpl
Normal file
@@ -0,0 +1 @@
|
||||
theme = "{{ .chezmoi.config.data.theme }}"
|
||||
26
dot_config/ghostty/themes/apex-aeon
Normal file
26
dot_config/ghostty/themes/apex-aeon
Normal file
@@ -0,0 +1,26 @@
|
||||
# Apex Aeon - Ghostty theme
|
||||
# DNA: State over Decoration
|
||||
|
||||
background = #f5f5f5
|
||||
foreground = #0a0a0a
|
||||
|
||||
cursor-color = #ff0044
|
||||
selection-background = #ff0044
|
||||
selection-foreground = #0a0a0a
|
||||
|
||||
palette = 0=#0a0a0a
|
||||
palette = 1=#ff0044
|
||||
palette = 2=#00b377
|
||||
palette = 3=#d18f00
|
||||
palette = 4=#007a88
|
||||
palette = 5=#7a3cff
|
||||
palette = 6=#007a88
|
||||
palette = 7=#f5f5f5
|
||||
palette = 8=#737373
|
||||
palette = 9=#ff4d6d
|
||||
palette = 10=#33d6a6
|
||||
palette = 11=#ffbf40
|
||||
palette = 12=#33bccc
|
||||
palette = 13=#a680ff
|
||||
palette = 14=#33bccc
|
||||
palette = 15=#ffffff
|
||||
26
dot_config/ghostty/themes/apex-neon
Normal file
26
dot_config/ghostty/themes/apex-neon
Normal file
@@ -0,0 +1,26 @@
|
||||
# Apex Neon - Ghostty theme
|
||||
# DNA: State over Decoration
|
||||
|
||||
background = #050505
|
||||
foreground = #ededed
|
||||
|
||||
cursor-color = #ff0044
|
||||
selection-background = #ff0044
|
||||
selection-foreground = #050505
|
||||
|
||||
palette = 0=#050505
|
||||
palette = 1=#ff0044
|
||||
palette = 2=#00ff99
|
||||
palette = 3=#ffb700
|
||||
palette = 4=#00eaff
|
||||
palette = 5=#9d00ff
|
||||
palette = 6=#00eaff
|
||||
palette = 7=#ededed
|
||||
palette = 8=#737373
|
||||
palette = 9=#ff8899
|
||||
palette = 10=#2bffb2
|
||||
palette = 11=#ffd24d
|
||||
palette = 12=#5af3ff
|
||||
palette = 13=#c84dff
|
||||
palette = 14=#5af3ff
|
||||
palette = 15=#ffffff
|
||||
@@ -1,7 +1,7 @@
|
||||
[Settings]
|
||||
gtk-theme-name=Adwaita
|
||||
gtk-icon-theme-name=Adwaita
|
||||
gtk-font-name=InconsolataGo Nerd Font Mono 11
|
||||
gtk-font-name=GeistMono Nerd Font 11
|
||||
gtk-cursor-theme-name=volantes
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-toolbar-style=GTK_TOOLBAR_ICONS
|
||||
|
||||
129
dot_config/gtk-4.0/gtk.css
Normal file
129
dot_config/gtk-4.0/gtk.css
Normal file
@@ -0,0 +1,129 @@
|
||||
/* Apex Theme System — GTK4 / Libadwaita */
|
||||
/* Auto-generated from Apex DNA */
|
||||
|
||||
|
||||
/* Scheme: Apex Neon (dark) */
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
|
||||
:root {
|
||||
/* Core Surfaces */
|
||||
@define-color window_bg_color #050505;
|
||||
@define-color window_fg_color #ededed;
|
||||
|
||||
@define-color view_bg_color #050505;
|
||||
@define-color view_fg_color #ededed;
|
||||
|
||||
@define-color headerbar_bg_color #141414;
|
||||
@define-color headerbar_fg_color #ededed;
|
||||
@define-color headerbar_border_color #262626;
|
||||
@define-color headerbar_backdrop_color @window_bg_color;
|
||||
@define-color headerbar_shade_color rgba(0, 0, 0, 0.07);
|
||||
|
||||
@define-color popover_bg_color #141414;
|
||||
@define-color popover_fg_color #ededed;
|
||||
|
||||
@define-color card_bg_color #141414;
|
||||
@define-color card_fg_color #ededed;
|
||||
@define-color card_shade_color rgba(0, 0, 0, 0.07);
|
||||
|
||||
@define-color dialog_bg_color #141414;
|
||||
@define-color dialog_fg_color #ededed;
|
||||
|
||||
/* Accents */
|
||||
@define-color accent_color #00eaff;
|
||||
@define-color accent_bg_color #00eaff;
|
||||
@define-color accent_fg_color #050505;
|
||||
|
||||
@define-color destructive_color #ff0044;
|
||||
@define-color destructive_bg_color #ff0044;
|
||||
@define-color destructive_fg_color #050505;
|
||||
|
||||
@define-color success_color #00ff99;
|
||||
@define-color success_bg_color #00ff99;
|
||||
@define-color success_fg_color #050505;
|
||||
|
||||
@define-color warning_color #ffb700;
|
||||
@define-color warning_bg_color #ffb700;
|
||||
@define-color warning_fg_color #050505;
|
||||
|
||||
@define-color error_color #ff8899;
|
||||
@define-color error_bg_color #ff8899;
|
||||
@define-color error_fg_color #050505;
|
||||
|
||||
/* UI Elements */
|
||||
@define-color borders #262626;
|
||||
@define-color sidebar_bg_color #141414;
|
||||
@define-color sidebar_fg_color #ededed;
|
||||
@define-color sidebar_backdrop_color @window_bg_color;
|
||||
@define-color sidebar_shade_color rgba(0, 0, 0, 0.07);
|
||||
|
||||
/* Custom Apex Palette */
|
||||
@define-color apex_razor #ff0044;
|
||||
@define-color apex_void #050505;
|
||||
@define-color apex_stealth #404040;
|
||||
}
|
||||
}
|
||||
|
||||
/* Scheme: Apex Aeon (light) */
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
|
||||
:root {
|
||||
/* Core Surfaces */
|
||||
@define-color window_bg_color #f5f5f5;
|
||||
@define-color window_fg_color #0a0a0a;
|
||||
|
||||
@define-color view_bg_color #f5f5f5;
|
||||
@define-color view_fg_color #0a0a0a;
|
||||
|
||||
@define-color headerbar_bg_color #e8e8e8;
|
||||
@define-color headerbar_fg_color #0a0a0a;
|
||||
@define-color headerbar_border_color #737373;
|
||||
@define-color headerbar_backdrop_color @window_bg_color;
|
||||
@define-color headerbar_shade_color rgba(0, 0, 0, 0.07);
|
||||
|
||||
@define-color popover_bg_color #e8e8e8;
|
||||
@define-color popover_fg_color #0a0a0a;
|
||||
|
||||
@define-color card_bg_color #e8e8e8;
|
||||
@define-color card_fg_color #0a0a0a;
|
||||
@define-color card_shade_color rgba(0, 0, 0, 0.07);
|
||||
|
||||
@define-color dialog_bg_color #e8e8e8;
|
||||
@define-color dialog_fg_color #0a0a0a;
|
||||
|
||||
/* Accents */
|
||||
@define-color accent_color #007a88;
|
||||
@define-color accent_bg_color #007a88;
|
||||
@define-color accent_fg_color #f5f5f5;
|
||||
|
||||
@define-color destructive_color #ff0044;
|
||||
@define-color destructive_bg_color #ff0044;
|
||||
@define-color destructive_fg_color #f5f5f5;
|
||||
|
||||
@define-color success_color #00b377;
|
||||
@define-color success_bg_color #00b377;
|
||||
@define-color success_fg_color #f5f5f5;
|
||||
|
||||
@define-color warning_color #d18f00;
|
||||
@define-color warning_bg_color #d18f00;
|
||||
@define-color warning_fg_color #f5f5f5;
|
||||
|
||||
@define-color error_color #ff4d6d;
|
||||
@define-color error_bg_color #ff4d6d;
|
||||
@define-color error_fg_color #f5f5f5;
|
||||
|
||||
/* UI Elements */
|
||||
@define-color borders #737373;
|
||||
@define-color sidebar_bg_color #e8e8e8;
|
||||
@define-color sidebar_fg_color #0a0a0a;
|
||||
@define-color sidebar_backdrop_color @window_bg_color;
|
||||
@define-color sidebar_shade_color rgba(0, 0, 0, 0.07);
|
||||
|
||||
/* Custom Apex Palette */
|
||||
@define-color apex_razor #ff0044;
|
||||
@define-color apex_void #f5f5f5;
|
||||
@define-color apex_stealth #a0a0a0;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
[Settings]
|
||||
gtk-theme-name=Adwaita
|
||||
gtk-icon-theme-name=Adwaita
|
||||
gtk-font-name=InconsolataGo Nerd Font Mono 11
|
||||
gtk-font-name=GeistMono Nerd Font 11
|
||||
gtk-cursor-theme-name=volantes
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-application-prefer-dark-theme=1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
source = ~/.config/hypr/hyprland.d/theme-apex-neon.conf
|
||||
1
dot_config/hypr/hyprland.d/00-theme.conf.tmpl
Normal file
1
dot_config/hypr/hyprland.d/00-theme.conf.tmpl
Normal file
@@ -0,0 +1 @@
|
||||
source = ~/.config/hypr/hyprland.d/theme-{{ .chezmoi.config.data.theme }}.conf
|
||||
@@ -29,7 +29,7 @@ group {
|
||||
groupbar{
|
||||
enabled = true
|
||||
height = 12
|
||||
font_family = InconsolataGo Nerd Font Mono
|
||||
font_family = GeistMono Nerd Font
|
||||
font_size = 8
|
||||
font_weight_active = semibold
|
||||
font_weight_inactive = normal
|
||||
|
||||
85
dot_config/hypr/hyprland.d/theme-apex-aeon.conf
Normal file
85
dot_config/hypr/hyprland.d/theme-apex-aeon.conf
Normal file
@@ -0,0 +1,85 @@
|
||||
#############################
|
||||
### APEX AEON THEME ###
|
||||
#############################
|
||||
|
||||
# The Void (Backgrounds)
|
||||
# Pure, unadulterated darkness. None of that "grey-blue" nonsense.
|
||||
$base = rgb(f5f5f5)
|
||||
$baseAlpha = f5f5f5
|
||||
|
||||
$surface = rgb(e8e8e8)
|
||||
$surfaceAlpha = e8e8e8
|
||||
|
||||
$overlay = rgb(737373)
|
||||
$overlayAlpha = 737373
|
||||
|
||||
$muted = rgb(a0a0a0)
|
||||
$mutedAlpha = a0a0a0
|
||||
|
||||
$subtle = rgb(a0a0a0)
|
||||
$subtleAlpha = a0a0a0
|
||||
|
||||
# The Signal (Text)
|
||||
# Stark white for maximum readability.
|
||||
$text = rgb(0a0a0a)
|
||||
$textAlpha = 0a0a0a
|
||||
|
||||
# Accents (Aggressive)
|
||||
# "Razor Red" - For errors or active borders. Blood-like.
|
||||
$love = rgb(ff0044)
|
||||
$loveAlpha = ff0044
|
||||
|
||||
# "Warning Gold"
|
||||
$gold = rgb(d18f00)
|
||||
$goldAlpha = d18f00
|
||||
|
||||
# "Toxic Green" - Because nature isn't always nice.
|
||||
$pine = rgb(00b377)
|
||||
$pineAlpha = 00b377
|
||||
|
||||
# "Electric Cyan" - Cold, digital logic.
|
||||
$foam = rgb(007a88)
|
||||
$foamAlpha = 007a88
|
||||
|
||||
# "Deep Void Purple"
|
||||
$iris = rgb(7a3cff)
|
||||
$irisAlpha = 7a3cff
|
||||
|
||||
# "Pale Rose" (Mapped to alert color)
|
||||
$rose = rgb(ff4d6d)
|
||||
$roseAlpha = ff4d6d
|
||||
|
||||
# Highlight variants
|
||||
$highlight_low = rgb(e8e8e8)
|
||||
$highlight_lowAlpha = e8e8e8
|
||||
|
||||
$highlight_med = rgb(737373)
|
||||
$highlight_medAlpha = 737373
|
||||
|
||||
$highlight_high = rgb(a0a0a0)
|
||||
$highlight_highAlpha = a0a0a0
|
||||
|
||||
# Theme-specific definitions
|
||||
$splash_text = rgba($textAlphaee)
|
||||
$dec_shadow = rgba(000000ee) # Hard shadows
|
||||
|
||||
# Border configurations
|
||||
# Sharp, thin, and aggressive.
|
||||
$border_active = rgba($loveAlphaff) rgba($irisAlphaff) 45deg
|
||||
$border_inactive = rgba($mutedAlpha44) rgba($surfaceAlpha44) 45deg
|
||||
|
||||
$border_nogroup_active = rgba($foamAlphaff) rgba($pineAlphaff) 45deg
|
||||
$border_nogroup_inactive = rgba($mutedAlpha44) rgba($surfaceAlpha44) 45deg
|
||||
|
||||
$border_group_active = rgba($goldAlphaff) rgba($loveAlphaff) 45deg
|
||||
$border_group_inactive = rgba($mutedAlpha66) rgba($surfaceAlpha66) 45deg
|
||||
|
||||
$border_grouplocked_active = rgba($foamAlphaff) rgba($irisAlphaff) 45deg
|
||||
$border_grouplocked_inactive = rgba($foamAlpha66) rgba($irisAlpha66) 45deg
|
||||
|
||||
# Group bar configurations
|
||||
$groupbar_text = rgba($baseAlphaff)
|
||||
$groupbar_active = rgba($loveAlphaff) rgba($irisAlphaaa)
|
||||
$groupbar_inactive = rgba($surfaceAlphaee) rgba($mutedAlphaaa)
|
||||
$groupbar_grouplocked_active = rgba($foamAlphaff) rgba($irisAlphaff)
|
||||
$groupbar_grouplocked_inactive = rgba($foamAlphaaa) rgba($irisAlphaaa)
|
||||
@@ -45,9 +45,9 @@ $foamAlpha = 00eaff
|
||||
$iris = rgb(9d00ff)
|
||||
$irisAlpha = 9d00ff
|
||||
|
||||
# "Pale Rose"
|
||||
$rose = rgb(ff80bf)
|
||||
$roseAlpha = ff80bf
|
||||
# "Pale Rose" (Mapped to alert color)
|
||||
$rose = rgb(ff8899)
|
||||
$roseAlpha = ff8899
|
||||
|
||||
# Highlight variants
|
||||
$highlight_low = rgb(141414)
|
||||
@@ -82,4 +82,4 @@ $groupbar_text = rgba($baseAlphaff)
|
||||
$groupbar_active = rgba($loveAlphaff) rgba($irisAlphaaa)
|
||||
$groupbar_inactive = rgba($surfaceAlphaee) rgba($mutedAlphaaa)
|
||||
$groupbar_grouplocked_active = rgba($foamAlphaff) rgba($irisAlphaff)
|
||||
$groupbar_grouplocked_inactive = rgba($foamAlphaaa) rgba($irisAlphaaa)
|
||||
$groupbar_grouplocked_inactive = rgba($foamAlphaaa) rgba($irisAlphaaa)
|
||||
@@ -56,7 +56,7 @@ label {
|
||||
text = cmd[update:1000] echo "$(date +"%A, %B %d")"
|
||||
color = rgba(242, 243, 244, 0.75)
|
||||
font_size = 22
|
||||
font_family = Inconsolata Nerd Font Mono
|
||||
font_family = GeistMono Nerd Font
|
||||
position = 0, 300
|
||||
halign = center
|
||||
valign = center
|
||||
@@ -70,7 +70,7 @@ label {
|
||||
text = cmd[update:1000] echo "$(date +"%-I:%M")"
|
||||
color = rgba(242, 243, 244, 0.75)
|
||||
font_size = 95
|
||||
font_family = Inconsolata Nerd Font Mono Bold
|
||||
font_family = GeistMono Nerd Font
|
||||
position = 0, 200
|
||||
halign = center
|
||||
valign = center
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# BEGIN_KITTY_FONTS
|
||||
font_family family='InconsolataGo Nerd Font Mono' postscript_name=InconsolataGoNFM
|
||||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
font_family family='GeistMono Nerd Font'
|
||||
bold_font family='GeistMono Nerd Font'
|
||||
italic_font family='GeistMono Nerd Font'
|
||||
bold_italic_font family='GeistMono Nerd Font'
|
||||
# END_KITTY_FONTS
|
||||
|
||||
font_size 9.0
|
||||
font_size 8.0
|
||||
|
||||
symbol_map U+E000-U+F8FF,U+F0000-U+FFFFF GeistMono Nerd Font
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
# Force emoji glyphs to a color emoji font (requires the font to be installed).
|
||||
symbol_map U+2600-U+26FF,U+2700-U+27BF,U+1F000-U+1FAFF Noto Color Emoji
|
||||
symbol_map U+2600-U+26FF,U+1F000-U+1FAFF Noto Color Emoji
|
||||
|
||||
66
dot_config/kitty/themes/apex-aeon.conf
Normal file
66
dot_config/kitty/themes/apex-aeon.conf
Normal file
@@ -0,0 +1,66 @@
|
||||
## APEX AEON - KITTY THEME ##
|
||||
## Spec-accurate: color = state, not decoration
|
||||
|
||||
# --- Core ---
|
||||
foreground #0a0a0a
|
||||
background #f5f5f5
|
||||
|
||||
# Selection: "target locked"
|
||||
selection_background #ff0044
|
||||
selection_foreground #0a0a0a
|
||||
|
||||
# Cursor: Razor Red beam
|
||||
cursor #ff0044
|
||||
cursor_text_color #0a0a0a
|
||||
cursor_shape beam
|
||||
|
||||
# URLs: informational cyan
|
||||
url_color #007a88
|
||||
|
||||
# Borders (optional)
|
||||
active_border_color #ff0044
|
||||
inactive_border_color #737373
|
||||
|
||||
# Optional: subtle UI hint for visual bell
|
||||
visual_bell_color #ff4d6d
|
||||
|
||||
# Spacing
|
||||
window_padding_width 4
|
||||
|
||||
# --- 16-COLOR ANSI TABLE (Apex Aeon spec) ---
|
||||
|
||||
# Normal bank (0–7)
|
||||
# color0: Black (Void)
|
||||
color0 #0a0a0a
|
||||
# color1: Red (Razor)
|
||||
color1 #ff0044
|
||||
# color2: Green (OK)
|
||||
color2 #00b377
|
||||
# color3: Yellow (Gold)
|
||||
color3 #d18f00
|
||||
# color4: Blue (Info)
|
||||
color4 #007a88
|
||||
# color5: Magenta (Purple)
|
||||
color5 #7a3cff
|
||||
# color6: Cyan (Info mapped)
|
||||
color6 #007a88
|
||||
# color7: White (Stark)
|
||||
color7 #f5f5f5
|
||||
|
||||
# Bright bank (8–15)
|
||||
# color8: Bright black (UI separators)
|
||||
color8 #737373
|
||||
# color9: Bright red (Alerts)
|
||||
color9 #ff4d6d
|
||||
# color10: Bright green (Active success)
|
||||
color10 #33d6a6
|
||||
# color11: Bright yellow (Urgent warning)
|
||||
color11 #ffbf40
|
||||
# color12: Bright blue (Active info)
|
||||
color12 #33bccc
|
||||
# color13: Bright magenta (Elevated special)
|
||||
color13 #a680ff
|
||||
# color14: Bright cyan (Active tech signal)
|
||||
color14 #33bccc
|
||||
# color15: Bright white (Extreme highlight)
|
||||
color15 #ffffff
|
||||
@@ -49,7 +49,7 @@ color7 #ededed
|
||||
|
||||
# Bright bank (8–15)
|
||||
# color8: Bright black (UI separators)
|
||||
color8 #262626
|
||||
color8 #737373
|
||||
# color9: Bright red (Alerts)
|
||||
color9 #ff8899
|
||||
# color10: Bright green (Active success)
|
||||
@@ -63,5 +63,4 @@ color13 #c84dff
|
||||
# color14: Bright cyan (Active tech signal)
|
||||
color14 #5af3ff
|
||||
# color15: Bright white (Extreme highlight)
|
||||
color15 #ffffff
|
||||
|
||||
color15 #ffffff
|
||||
164
dot_config/nvim/colors/apex-aeon.lua
Normal file
164
dot_config/nvim/colors/apex-aeon.lua
Normal file
@@ -0,0 +1,164 @@
|
||||
-- Apex Aeon: Standalone Theme Engine
|
||||
-- Philosophy: State over Decoration. Red is Presence. Cyan is Data.
|
||||
|
||||
local M = {}
|
||||
|
||||
M.palette = {
|
||||
-- The Void
|
||||
void = "#f5f5f5", -- Background
|
||||
panel = "#e8e8e8", -- Dark Surface (Statusline/Gutter)
|
||||
border = "#737373", -- Muted Border
|
||||
stealth = "#a0a0a0", -- Comments / Ignored
|
||||
|
||||
-- The Signal
|
||||
text = "#0a0a0a", -- Stark White
|
||||
dim = "#737373", -- Muted Text
|
||||
|
||||
-- The Hunter (Presence)
|
||||
razor = "#ff0044", -- PRIMARY: Cursor, Current Match, Active Border
|
||||
alert = "#ff4d6d", -- ERROR: Readable text on Red
|
||||
|
||||
-- The HUD (Data)
|
||||
tech = "#007a88", -- INFO: Selection, Search Match, Constants
|
||||
toxic = "#00b377", -- SUCCESS: Strings
|
||||
amber = "#d18f00", -- WARNING: Types, Search
|
||||
azure = "#005577", -- STRUCT: Functions (Deep Blue)
|
||||
sacred = "#7a3cff", -- SPECIAL: Keywords, Root
|
||||
}
|
||||
|
||||
function M.load()
|
||||
vim.cmd "hi clear"
|
||||
if vim.fn.exists "syntax_on" then vim.cmd "syntax reset" end
|
||||
vim.o.background = "light"
|
||||
vim.g.colors_name = "apex-aeon"
|
||||
|
||||
local p = M.palette
|
||||
local groups = {
|
||||
-- CANVAS & UI -----------------------------------------------------------
|
||||
Normal = { fg = p.text, bg = p.void },
|
||||
NormalNC = { fg = p.dim, bg = p.void }, -- Non-focused windows
|
||||
SignColumn = { bg = p.void },
|
||||
FoldColumn = { fg = p.stealth, bg = p.void },
|
||||
VertSplit = { fg = p.razor }, -- Deprecated in nvim 0.10, but good fallback
|
||||
WinSeparator = { fg = p.razor }, -- The Cage (Red Borders)
|
||||
EndOfBuffer = { fg = p.void }, -- Hide tildes
|
||||
|
||||
-- CURSOR & NAVIGATION ("The Hunter") ------------------------------------
|
||||
Cursor = { fg = p.void, bg = p.razor }, -- Red Beam
|
||||
TermCursor = { fg = p.void, bg = p.razor },
|
||||
CursorLine = { bg = p.panel },
|
||||
CursorLineNr = { fg = p.razor, bold = true }, -- Red Line Number (You are here)
|
||||
LineNr = { fg = p.stealth }, -- Other lines fade out
|
||||
|
||||
-- SELECTION & SEARCH ("Terminator Vision") ------------------------------
|
||||
Visual = { fg = p.void, bg = p.tech, bold = true }, -- Cyan (Data Lock)
|
||||
VisualNOS = { fg = p.void, bg = p.border },
|
||||
|
||||
Search = { fg = p.void, bg = p.tech }, -- Cyan (Potential Targets)
|
||||
IncSearch = { fg = p.void, bg = p.razor }, -- Red (Acquiring...)
|
||||
CurSearch = { fg = p.void, bg = p.razor, bold = true }, -- Red (Target Locked)
|
||||
|
||||
-- STATUS & MESSAGES -----------------------------------------------------
|
||||
StatusLine = { fg = p.text, bg = p.panel },
|
||||
StatusLineNC = { fg = p.dim, bg = p.void },
|
||||
WildMenu = { fg = p.void, bg = p.tech },
|
||||
Pmenu = { fg = p.text, bg = p.panel },
|
||||
PmenuSel = { fg = p.void, bg = p.razor, bold = true }, -- Red Menu Selection
|
||||
PmenuSbar = { bg = p.panel },
|
||||
PmenuThumb = { bg = p.stealth },
|
||||
|
||||
-- SYNTAX HIGHLIGHTING ---------------------------------------------------
|
||||
Comment = { fg = p.stealth, italic = true },
|
||||
Constant = { fg = p.tech }, -- Cyan (Digital values)
|
||||
String = { fg = p.toxic }, -- Green (Organic strings)
|
||||
Character = { fg = p.toxic },
|
||||
Number = { fg = p.tech },
|
||||
Boolean = { fg = p.tech },
|
||||
Float = { fg = p.tech },
|
||||
|
||||
Identifier = { fg = p.text }, -- Variables (White)
|
||||
Function = { fg = p.azure }, -- Deep Blue (Structure)
|
||||
|
||||
Statement = { fg = p.sacred }, -- Purple (Keywords)
|
||||
Conditional = { fg = p.sacred },
|
||||
Repeat = { fg = p.sacred },
|
||||
Label = { fg = p.sacred },
|
||||
Operator = { fg = p.tech }, -- Cyan (Tech)
|
||||
Keyword = { fg = p.sacred },
|
||||
Exception = { fg = p.razor }, -- Red (Errors)
|
||||
|
||||
PreProc = { fg = p.sacred },
|
||||
Include = { fg = p.sacred },
|
||||
Define = { fg = p.sacred },
|
||||
Macro = { fg = p.sacred },
|
||||
PreCondit = { fg = p.sacred },
|
||||
|
||||
Type = { fg = p.amber }, -- Yellow (Types/Classes)
|
||||
StorageClass = { fg = p.amber },
|
||||
Structure = { fg = p.amber },
|
||||
Typedef = { fg = p.amber },
|
||||
|
||||
Special = { fg = p.tech },
|
||||
SpecialChar = { fg = p.tech },
|
||||
Tag = { fg = p.tech },
|
||||
Delimiter = { fg = p.dim }, -- Subtle delimiters
|
||||
Debug = { fg = p.razor },
|
||||
|
||||
Underlined = { underline = true },
|
||||
Ignore = { fg = p.stealth },
|
||||
Error = { fg = p.razor },
|
||||
Todo = { fg = p.void, bg = p.amber, bold = true },
|
||||
|
||||
-- DIAGNOSTICS -----------------------------------------------------------
|
||||
DiagnosticError = { fg = p.razor },
|
||||
DiagnosticWarn = { fg = p.amber },
|
||||
DiagnosticInfo = { fg = p.tech },
|
||||
DiagnosticHint = { fg = p.dim },
|
||||
|
||||
DiagnosticUnderlineError = { sp = p.razor, underline = true },
|
||||
DiagnosticUnderlineWarn = { sp = p.amber, underline = true },
|
||||
|
||||
-- PLUGINS: TELESCOPE ("The HUD") ----------------------------------------
|
||||
TelescopeNormal = { bg = p.void },
|
||||
TelescopeBorder = { fg = p.razor, bg = p.void }, -- Red Border
|
||||
TelescopePromptNormal = { fg = p.text, bg = p.void },
|
||||
TelescopePromptBorder = { fg = p.tech, bg = p.void }, -- Cyan Input Border
|
||||
TelescopePromptTitle = { fg = p.void, bg = p.tech }, -- Cyan Label
|
||||
TelescopePreviewTitle = { fg = p.void, bg = p.razor }, -- Red Label
|
||||
TelescopeResultsTitle = { fg = p.void, bg = p.panel },
|
||||
TelescopeSelection = { fg = p.void, bg = p.razor }, -- Red Selection
|
||||
|
||||
-- PLUGINS: NEO-TREE ("Stealth") -----------------------------------------
|
||||
NeoTreeNormal = { bg = p.void },
|
||||
NeoTreeNormalNC = { bg = p.void },
|
||||
NeoTreeVertSplit = { fg = p.panel, bg = p.void },
|
||||
NeoTreeWinSeparator = { fg = p.panel, bg = p.void }, -- Fade out tree border
|
||||
NeoTreeRootName = { fg = p.razor, bold = true }, -- Root is Red
|
||||
NeoTreeGitAdded = { fg = p.toxic },
|
||||
NeoTreeGitConflict = { fg = p.amber },
|
||||
NeoTreeGitDeleted = { fg = p.razor },
|
||||
NeoTreeGitModified = { fg = p.tech },
|
||||
|
||||
-- PLUGINS: GITSIGNS -----------------------------------------------------
|
||||
GitSignsAdd = { fg = p.toxic, bg = p.void },
|
||||
GitSignsChange = { fg = p.tech, bg = p.void },
|
||||
GitSignsDelete = { fg = p.razor, bg = p.void },
|
||||
|
||||
-- PLUGINS: CMP (Completion) ---------------------------------------------
|
||||
CmpItemAbbrDeprecated = { fg = p.dim, strikethrough = true },
|
||||
CmpItemAbbrMatch = { fg = p.tech, bold = true },
|
||||
CmpItemAbbrMatchFuzzy = { fg = p.tech, bold = true },
|
||||
CmpItemKindFunction = { fg = p.azure },
|
||||
CmpItemKindMethod = { fg = p.azure },
|
||||
CmpItemKindKeyword = { fg = p.sacred },
|
||||
CmpItemKindVariable = { fg = p.text },
|
||||
}
|
||||
|
||||
for group, highlight in pairs(groups) do
|
||||
vim.api.nvim_set_hl(0, group, highlight)
|
||||
end
|
||||
end
|
||||
|
||||
M.load()
|
||||
|
||||
return M
|
||||
@@ -161,4 +161,4 @@ end
|
||||
|
||||
M.load()
|
||||
|
||||
return M
|
||||
return M
|
||||
@@ -9,7 +9,7 @@ return {
|
||||
---@type AstroUIOpts
|
||||
opts = {
|
||||
-- change colorscheme
|
||||
colorscheme = "apex-neon",
|
||||
colorscheme = "{{ .chezmoi.config.data.theme }}",
|
||||
-- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes
|
||||
highlights = {
|
||||
init = { -- this table overrides highlights in all themes
|
||||
@@ -52,7 +52,7 @@ border_radius = 12
|
||||
# Built-in: owl, catppuccin-mocha, dracula, gruvbox-dark, nord,
|
||||
# one-dark, rose-pine, solarized-dark, tokyo-night
|
||||
# Or leave unset for GTK default
|
||||
theme = "apex-neon"
|
||||
theme = "{{ .chezmoi.config.data.theme }}"
|
||||
|
||||
# Color overrides (applied on top of theme)
|
||||
# [appearance.colors]
|
||||
171
dot_config/owlry/themes/apex-aeon.css
Normal file
171
dot_config/owlry/themes/apex-aeon.css
Normal file
@@ -0,0 +1,171 @@
|
||||
|
||||
|
||||
/*
|
||||
* Owlry - Apex Aeon Theme
|
||||
* "State over Decoration."
|
||||
*
|
||||
* A high-contrast theme built for focus and clinical clarity.
|
||||
* Color exists to signal STATE, not to decorate space.
|
||||
*
|
||||
* Author: S0wlz (Owlibou)
|
||||
*
|
||||
* Usage: Set theme = "apex-aeon" in config.toml
|
||||
*/
|
||||
|
||||
:root {
|
||||
/* Core surfaces */
|
||||
--owlry-bg: #f5f5f5;
|
||||
--owlry-bg-secondary: #e8e8e8;
|
||||
--owlry-border: #737373;
|
||||
--owlry-text: #0a0a0a;
|
||||
--owlry-text-secondary: #737373;
|
||||
|
||||
/* The Predator - primary accent */
|
||||
--owlry-accent: #ff0044;
|
||||
--owlry-accent-bright: #ff4d6d;
|
||||
|
||||
/* Provider badges - mapped to Apex semantics */
|
||||
--owlry-badge-app: #007a88; /* Cyan: apps are informational */
|
||||
--owlry-badge-bookmark: #d18f00; /* Yellow: bookmarks need attention */
|
||||
--owlry-badge-calc: #ffbf40; /* Bright Yellow: calculator results */
|
||||
--owlry-badge-clip: #7a3cff; /* Purple: clipboard is special */
|
||||
--owlry-badge-cmd: #7a3cff; /* Purple: commands are elevated */
|
||||
--owlry-badge-dmenu: #00b377; /* Green: dmenu is success/pipe */
|
||||
--owlry-badge-emoji: #a680ff; /* Bright Purple: emoji is special */
|
||||
--owlry-badge-file: #33bccc; /* Bright Cyan: file search is active info */
|
||||
--owlry-badge-script: #33d6a6; /* Bright Green: scripts execute successfully */
|
||||
--owlry-badge-ssh: #007a88; /* Cyan: SSH is technical/info */
|
||||
--owlry-badge-sys: #ff0044; /* Red: system actions are critical */
|
||||
--owlry-badge-uuctl: #d18f00; /* Yellow: uuctl requires attention */
|
||||
--owlry-badge-web: #007a88; /* Cyan: web is informational */
|
||||
|
||||
/* Widget badges */
|
||||
--owlry-badge-media: #a680ff; /* Bright Purple: media is special */
|
||||
--owlry-badge-weather: #33bccc; /* Bright Cyan: weather is active info */
|
||||
--owlry-badge-pomo: #ff4d6d; /* Alert Red: pomodoro demands attention */
|
||||
}
|
||||
|
||||
.owlry-main {
|
||||
background-color: rgba(245, 245, 245, 0.98);
|
||||
border: 1px solid rgba(115, 115, 115, 0.8);
|
||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.8),
|
||||
0 0 0 1px rgba(255, 0, 68, 0.1);
|
||||
}
|
||||
|
||||
.owlry-search {
|
||||
background-color: rgba(232, 232, 232, 0.9);
|
||||
border: 2px solid rgba(115, 115, 115, 0.8);
|
||||
color: var(--owlry-text);
|
||||
caret-color: var(--owlry-accent);
|
||||
}
|
||||
|
||||
.owlry-search:focus {
|
||||
border-color: var(--owlry-accent);
|
||||
box-shadow: 0 0 0 2px rgba(255, 0, 68, 0.3);
|
||||
}
|
||||
|
||||
.owlry-result-row:hover {
|
||||
background-color: rgba(232, 232, 232, 0.8);
|
||||
}
|
||||
|
||||
.owlry-result-row:selected {
|
||||
background-color: rgba(255, 0, 68, 0.15);
|
||||
border-left: 3px solid var(--owlry-accent);
|
||||
}
|
||||
|
||||
.owlry-result-row:selected .owlry-result-name {
|
||||
color: var(--owlry-accent-bright);
|
||||
}
|
||||
|
||||
.owlry-result-row:selected .owlry-result-icon {
|
||||
color: var(--owlry-accent);
|
||||
}
|
||||
|
||||
/* Provider badges - styled per Apex semantics */
|
||||
.owlry-badge-app {
|
||||
background-color: rgba(0, 122, 136, 0.15);
|
||||
color: var(--owlry-badge-app);
|
||||
}
|
||||
|
||||
.owlry-badge-bookmark {
|
||||
background-color: rgba(209, 143, 0, 0.15);
|
||||
color: var(--owlry-badge-bookmark);
|
||||
}
|
||||
|
||||
.owlry-badge-calc {
|
||||
background-color: rgba(255, 191, 64, 0.15);
|
||||
color: var(--owlry-badge-calc);
|
||||
}
|
||||
|
||||
.owlry-badge-clip {
|
||||
background-color: rgba(122, 60, 255, 0.15);
|
||||
color: var(--owlry-badge-clip);
|
||||
}
|
||||
|
||||
.owlry-badge-cmd {
|
||||
background-color: rgba(122, 60, 255, 0.15);
|
||||
color: var(--owlry-badge-cmd);
|
||||
}
|
||||
|
||||
.owlry-badge-dmenu {
|
||||
background-color: rgba(0, 179, 119, 0.15);
|
||||
color: var(--owlry-badge-dmenu);
|
||||
}
|
||||
|
||||
.owlry-badge-emoji {
|
||||
background-color: rgba(166, 128, 255, 0.15);
|
||||
color: var(--owlry-badge-emoji);
|
||||
}
|
||||
|
||||
.owlry-badge-file {
|
||||
background-color: rgba(51, 188, 204, 0.15);
|
||||
color: var(--owlry-badge-file);
|
||||
}
|
||||
|
||||
.owlry-badge-script {
|
||||
background-color: rgba(51, 214, 166, 0.15);
|
||||
color: var(--owlry-badge-script);
|
||||
}
|
||||
|
||||
.owlry-badge-ssh {
|
||||
background-color: rgba(0, 122, 136, 0.15);
|
||||
color: var(--owlry-badge-ssh);
|
||||
}
|
||||
|
||||
.owlry-badge-sys {
|
||||
background-color: rgba(255, 0, 68, 0.15);
|
||||
color: var(--owlry-badge-sys);
|
||||
}
|
||||
|
||||
.owlry-badge-uuctl {
|
||||
background-color: rgba(209, 143, 0, 0.15);
|
||||
color: var(--owlry-badge-uuctl);
|
||||
}
|
||||
|
||||
.owlry-badge-web {
|
||||
background-color: rgba(0, 122, 136, 0.15);
|
||||
color: var(--owlry-badge-web);
|
||||
}
|
||||
|
||||
/* Widget badges */
|
||||
.owlry-badge-media {
|
||||
background-color: rgba(166, 128, 255, 0.15);
|
||||
color: var(--owlry-badge-media);
|
||||
}
|
||||
|
||||
.owlry-badge-weather {
|
||||
background-color: rgba(51, 188, 204, 0.15);
|
||||
color: var(--owlry-badge-weather);
|
||||
}
|
||||
|
||||
.owlry-badge-pomo {
|
||||
background-color: rgba(255, 77, 109, 0.15);
|
||||
color: var(--owlry-badge-pomo);
|
||||
}
|
||||
|
||||
/* Filter button - default uses The Predator */
|
||||
.owlry-filter-button:checked {
|
||||
background-color: rgba(255, 0, 68, 0.2);
|
||||
color: var(--owlry-accent);
|
||||
border-color: rgba(255, 0, 68, 0.5);
|
||||
}
|
||||
@@ -1,43 +1,14 @@
|
||||
|
||||
|
||||
/*
|
||||
* Owlry - Apex Neon Theme
|
||||
* "State over Decoration."
|
||||
*
|
||||
* A high-contrast dark theme built for focus and clinical clarity.
|
||||
* A high-contrast theme built for focus and clinical clarity.
|
||||
* Color exists to signal STATE, not to decorate space.
|
||||
*
|
||||
* Author: S0wlz (Owlibou)
|
||||
*
|
||||
* ─────────────────────────────────────────────────────────────────
|
||||
* APEX DNA - Semantic Color Roles:
|
||||
*
|
||||
* RED is the Predator: Active intent, cursor, current location, critical errors
|
||||
* CYAN is Informational: Technical data, links, neutral highlights
|
||||
* PURPLE is Sacred: Root access, special modes, exceptional states
|
||||
* GREEN is Success: Completion, OK states, positive feedback
|
||||
* YELLOW is Warning: Caution, load states, attention needed
|
||||
*
|
||||
* Rule: If a UI element is not important, it does not glow.
|
||||
* ─────────────────────────────────────────────────────────────────
|
||||
*
|
||||
* Core Palette:
|
||||
* - Void Black: #050505 (absolute background)
|
||||
* - Dark Surface: #141414 (inputs, inactive elements)
|
||||
* - Light Surface: #262626 (separators, borders)
|
||||
* - Stark White: #ededed (primary text)
|
||||
* - Muted: #737373 (secondary text)
|
||||
* - Razor Red: #ff0044 (THE accent - focus, cursor, selection)
|
||||
* - Electric Cyan: #00eaff (info, links, technical)
|
||||
* - Sacred Purple: #9d00ff (special, root, elevated)
|
||||
* - Neon Green: #00ff99 (success, OK)
|
||||
* - Warning Yellow: #ffb700 (warning, caution)
|
||||
*
|
||||
* Bright Escalations:
|
||||
* - Alert Red: #ff8899 (distinguishable from cursor)
|
||||
* - Active Cyan: #5af3ff (active info)
|
||||
* - Active Green: #2bffb2 (active success)
|
||||
* - Urgent Yellow: #ffd24d (urgent warning)
|
||||
* - Elevated Purple:#c84dff (elevated special)
|
||||
*
|
||||
* Usage: Set theme = "apex-neon" in config.toml
|
||||
*/
|
||||
|
||||
@@ -197,148 +168,4 @@
|
||||
background-color: rgba(255, 0, 68, 0.2);
|
||||
color: var(--owlry-accent);
|
||||
border-color: rgba(255, 0, 68, 0.5);
|
||||
}
|
||||
|
||||
/* Provider-specific filter buttons - follow Apex semantics */
|
||||
.owlry-filter-app:checked {
|
||||
background-color: rgba(0, 234, 255, 0.15);
|
||||
color: var(--owlry-badge-app);
|
||||
border-color: rgba(0, 234, 255, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-bookmark:checked {
|
||||
background-color: rgba(255, 183, 0, 0.15);
|
||||
color: var(--owlry-badge-bookmark);
|
||||
border-color: rgba(255, 183, 0, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-calc:checked {
|
||||
background-color: rgba(255, 210, 77, 0.15);
|
||||
color: var(--owlry-badge-calc);
|
||||
border-color: rgba(255, 210, 77, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-clip:checked {
|
||||
background-color: rgba(157, 0, 255, 0.15);
|
||||
color: var(--owlry-badge-clip);
|
||||
border-color: rgba(157, 0, 255, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-cmd:checked {
|
||||
background-color: rgba(157, 0, 255, 0.15);
|
||||
color: var(--owlry-badge-cmd);
|
||||
border-color: rgba(157, 0, 255, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-dmenu:checked {
|
||||
background-color: rgba(0, 255, 153, 0.15);
|
||||
color: var(--owlry-badge-dmenu);
|
||||
border-color: rgba(0, 255, 153, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-emoji:checked {
|
||||
background-color: rgba(200, 77, 255, 0.15);
|
||||
color: var(--owlry-badge-emoji);
|
||||
border-color: rgba(200, 77, 255, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-file:checked {
|
||||
background-color: rgba(90, 243, 255, 0.15);
|
||||
color: var(--owlry-badge-file);
|
||||
border-color: rgba(90, 243, 255, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-script:checked {
|
||||
background-color: rgba(43, 255, 178, 0.15);
|
||||
color: var(--owlry-badge-script);
|
||||
border-color: rgba(43, 255, 178, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-ssh:checked {
|
||||
background-color: rgba(0, 234, 255, 0.15);
|
||||
color: var(--owlry-badge-ssh);
|
||||
border-color: rgba(0, 234, 255, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-sys:checked {
|
||||
background-color: rgba(255, 0, 68, 0.15);
|
||||
color: var(--owlry-badge-sys);
|
||||
border-color: rgba(255, 0, 68, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-uuctl:checked {
|
||||
background-color: rgba(255, 183, 0, 0.15);
|
||||
color: var(--owlry-badge-uuctl);
|
||||
border-color: rgba(255, 183, 0, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-web:checked {
|
||||
background-color: rgba(0, 234, 255, 0.15);
|
||||
color: var(--owlry-badge-web);
|
||||
border-color: rgba(0, 234, 255, 0.5);
|
||||
}
|
||||
|
||||
/* Widget filter buttons */
|
||||
.owlry-filter-media:checked {
|
||||
background-color: rgba(200, 77, 255, 0.15);
|
||||
color: var(--owlry-badge-media);
|
||||
border-color: rgba(200, 77, 255, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-weather:checked {
|
||||
background-color: rgba(90, 243, 255, 0.15);
|
||||
color: var(--owlry-badge-weather);
|
||||
border-color: rgba(90, 243, 255, 0.5);
|
||||
}
|
||||
|
||||
.owlry-filter-pomodoro:checked {
|
||||
background-color: rgba(255, 136, 153, 0.15);
|
||||
color: var(--owlry-badge-pomo);
|
||||
border-color: rgba(255, 136, 153, 0.5);
|
||||
}
|
||||
|
||||
/* Scrollbar - subtle in Void, The Predator on active */
|
||||
scrollbar slider {
|
||||
background-color: rgba(38, 38, 38, 0.8);
|
||||
}
|
||||
|
||||
scrollbar slider:hover {
|
||||
background-color: rgba(64, 64, 64, 0.9);
|
||||
}
|
||||
|
||||
scrollbar slider:active {
|
||||
background-color: var(--owlry-accent);
|
||||
}
|
||||
|
||||
/* Text selection - Apex Hard Rule: black text on red (target locked) */
|
||||
selection {
|
||||
background-color: var(--owlry-accent);
|
||||
color: #050505;
|
||||
}
|
||||
|
||||
/* Mode indicator - The Predator marks current mode */
|
||||
.owlry-mode-indicator {
|
||||
background-color: rgba(255, 0, 68, 0.2);
|
||||
color: var(--owlry-accent);
|
||||
border: 1px solid rgba(255, 0, 68, 0.3);
|
||||
}
|
||||
|
||||
/* Hints bar */
|
||||
.owlry-hints {
|
||||
border-top: 1px solid rgba(38, 38, 38, 0.8);
|
||||
}
|
||||
|
||||
.owlry-hints-label {
|
||||
color: var(--owlry-text-secondary);
|
||||
}
|
||||
|
||||
/* Tag badges in results */
|
||||
.owlry-tag-badge {
|
||||
background-color: rgba(38, 38, 38, 0.6);
|
||||
color: var(--owlry-text-secondary);
|
||||
}
|
||||
|
||||
.owlry-result-row:selected .owlry-tag-badge {
|
||||
background-color: rgba(255, 136, 153, 0.25);
|
||||
color: var(--owlry-accent-bright);
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,8 @@ standard_dialogs=gtk3
|
||||
style=kvantum
|
||||
|
||||
[Fonts]
|
||||
fixed="InconsolataGo Nerd Font Mono,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
|
||||
general="InconsolataGo Nerd Font Mono,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
|
||||
fixed="GeistMono Nerd Font,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
|
||||
general="GeistMono Nerd Font,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1,Regular"
|
||||
|
||||
[Interface]
|
||||
activate_item_on_single_click=1
|
||||
|
||||
@@ -37,7 +37,7 @@ brush-smooth-history-size = 0
|
||||
|
||||
# Font to use for text annotations
|
||||
[font]
|
||||
family = "InconsolataGo Nerd Font Mono"
|
||||
family = "GeistMono Nerd Font"
|
||||
style = "Regular"
|
||||
|
||||
# Custom colours for the colour palette
|
||||
|
||||
@@ -44,7 +44,7 @@ exec_inplace = "control-return"
|
||||
|
||||
[files]
|
||||
config = "/home/mpuchstein/.config/sherlock/config.toml"
|
||||
css = "/home/mpuchstein/.config/sherlock/themes/apex-neon.css"
|
||||
css = "{{ .chezmoi.homeDir }}/.config/sherlock/themes/{{ .chezmoi.config.data.theme }}.css"
|
||||
# css = "/home/mpuchstein/.config/sherlock/themes/rose-pine_v3.css"
|
||||
fallback = "/home/mpuchstein/.config/sherlock/fallback.json"
|
||||
alias = "/home/mpuchstein/.config/sherlock/sherlock_alias.json"
|
||||
126
dot_config/sherlock/themes/apex-aeon.css
Normal file
126
dot_config/sherlock/themes/apex-aeon.css
Normal file
@@ -0,0 +1,126 @@
|
||||
|
||||
/* Apex Aeon - Sherlock Theme (Parser Compliant) */
|
||||
|
||||
/* 1. PALETTE DEFINITIONS */
|
||||
@define-color apex_base #f5f5f5;
|
||||
@define-color apex_surface #e8e8e8;
|
||||
@define-color apex_overlay #737373;
|
||||
@define-color apex_muted #a0a0a0;
|
||||
@define-color apex_text #0a0a0a;
|
||||
@define-color apex_love #ff0044;
|
||||
@define-color apex_foam #007a88;
|
||||
@define-color apex_gold #d18f00;
|
||||
|
||||
/* 2. WINDOW & INPUT */
|
||||
window {
|
||||
background-color: @apex_base;
|
||||
color: @apex_text;
|
||||
border: 2px solid @apex_love;
|
||||
border-radius: 10px;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
entry {
|
||||
background-color: @apex_surface;
|
||||
color: @apex_text;
|
||||
caret-color: @apex_love;
|
||||
border: 1px solid @apex_overlay;
|
||||
border-radius: 7px;
|
||||
padding: 6px 9px;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
entry:focus {
|
||||
border-color: @apex_love;
|
||||
box-shadow: 0 0 10px rgba(255, 0, 68, 0.2);
|
||||
}
|
||||
|
||||
entry selection {
|
||||
background-color: @apex_foam;
|
||||
color: #0a0a0a;
|
||||
}
|
||||
|
||||
/* 3. LIST & SELECTION */
|
||||
listview {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* The actual row selection - Informational */
|
||||
listview > row:selected {
|
||||
background-color: @apex_foam;
|
||||
color: #0a0a0a;
|
||||
border-radius: 7px;
|
||||
border: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* 4. TILES (The Items) */
|
||||
.tile, .launcher-tile, .launcher-item, .item {
|
||||
background-color: @apex_surface;
|
||||
color: @apex_text;
|
||||
border-radius: 7px;
|
||||
padding: 4px 10px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
/* When the ROW is selected, make the TILE transparent so info shows through */
|
||||
listview > row:selected .tile,
|
||||
listview > row:selected .launcher-tile,
|
||||
listview > row:selected .item {
|
||||
background-color: transparent;
|
||||
color: #0a0a0a;
|
||||
}
|
||||
|
||||
/* Force TEXT on selection */
|
||||
listview > row:selected label,
|
||||
listview > row:selected .title,
|
||||
listview > row:selected .description,
|
||||
listview > row:selected .subtitle {
|
||||
color: #0a0a0a;
|
||||
}
|
||||
|
||||
/* Force ICONS on selection */
|
||||
listview > row:selected image,
|
||||
listview > row:selected .icon {
|
||||
color: #0a0a0a;
|
||||
}
|
||||
|
||||
/* 5. WIDGETS (Weather Fix without !important) */
|
||||
.widget, .weather-widget, .music-widget {
|
||||
background-color: @apex_surface;
|
||||
border: 1px solid @apex_overlay;
|
||||
color: @apex_text;
|
||||
border-radius: 7px;
|
||||
}
|
||||
|
||||
/* Specific overrides for weather internals */
|
||||
.weather-widget box {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.weather-widget label {
|
||||
color: @apex_text;
|
||||
}
|
||||
|
||||
/* Temperature info */
|
||||
.weather-widget .temperature {
|
||||
color: @apex_foam;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.weather-widget .condition {
|
||||
color: @apex_muted;
|
||||
}
|
||||
|
||||
/* 6. SCROLLBARS */
|
||||
scrollbar slider {
|
||||
background-color: @apex_overlay;
|
||||
min-width: 6px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
scrollbar slider:hover { background-color: @apex_love; }
|
||||
|
||||
progressbar progress {
|
||||
background-color: @apex_love;
|
||||
border-radius: 4px;
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
/* * APEX NEON - SHERLOCK THEME (PARSER COMPLIANT) */
|
||||
|
||||
/* Apex Neon - Sherlock Theme (Parser Compliant) */
|
||||
|
||||
/* 1. PALETTE DEFINITIONS */
|
||||
@define-color apex_base #050505;
|
||||
@@ -8,7 +9,7 @@
|
||||
@define-color apex_text #ededed;
|
||||
@define-color apex_love #ff0044;
|
||||
@define-color apex_foam #00eaff;
|
||||
@define-color apex_gold #ffb700;
|
||||
@define-color apex_gold #ffb700;
|
||||
|
||||
/* 2. WINDOW & INPUT */
|
||||
window {
|
||||
@@ -40,11 +41,11 @@ entry selection {
|
||||
}
|
||||
|
||||
/* 3. LIST & SELECTION */
|
||||
listview {
|
||||
background-color: transparent;
|
||||
listview {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* The actual row selection - Electric Cyan */
|
||||
/* The actual row selection - Informational */
|
||||
listview > row:selected {
|
||||
background-color: @apex_foam;
|
||||
color: #050505;
|
||||
@@ -62,15 +63,15 @@ listview > row:selected {
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
/* When the ROW is selected, make the TILE transparent so Cyan shows through */
|
||||
listview > row:selected .tile,
|
||||
listview > row:selected .launcher-tile,
|
||||
/* When the ROW is selected, make the TILE transparent so info shows through */
|
||||
listview > row:selected .tile,
|
||||
listview > row:selected .launcher-tile,
|
||||
listview > row:selected .item {
|
||||
background-color: transparent;
|
||||
color: #050505;
|
||||
}
|
||||
|
||||
/* Force TEXT Black on selection */
|
||||
/* Force TEXT on selection */
|
||||
listview > row:selected label,
|
||||
listview > row:selected .title,
|
||||
listview > row:selected .description,
|
||||
@@ -78,7 +79,7 @@ listview > row:selected .subtitle {
|
||||
color: #050505;
|
||||
}
|
||||
|
||||
/* Force ICONS Black on selection */
|
||||
/* Force ICONS on selection */
|
||||
listview > row:selected image,
|
||||
listview > row:selected .icon {
|
||||
color: #050505;
|
||||
@@ -101,7 +102,7 @@ listview > row:selected .icon {
|
||||
color: @apex_text;
|
||||
}
|
||||
|
||||
/* Temperature Cyan */
|
||||
/* Temperature info */
|
||||
.weather-widget .temperature {
|
||||
color: @apex_foam;
|
||||
font-weight: 800;
|
||||
@@ -122,4 +123,4 @@ scrollbar slider:hover { background-color: @apex_love; }
|
||||
progressbar progress {
|
||||
background-color: @apex_love;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,7 @@ window,
|
||||
.root {
|
||||
background-color: var(--rp-base);
|
||||
color: var(--rp-text);
|
||||
font-family: "JetBrainsMono Nerd Font", "FiraCode Nerd Font",
|
||||
font-family: "GeistMono Nerd Font", "FiraCode Nerd Font",
|
||||
"Iosevka", system-ui, sans-serif;
|
||||
}
|
||||
|
||||
@@ -257,4 +257,3 @@ scrollbar slider {
|
||||
.info-label {
|
||||
color: var(--rp-foam);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[Setting]
|
||||
spotify_path = $HOME/.local/share/spotify-launcher/install/usr/share/spotify/
|
||||
current_theme = apex-neon
|
||||
color_scheme = apex-neon
|
||||
current_theme = {{ .chezmoi.config.data.theme }}
|
||||
color_scheme = {{ .chezmoi.config.data.theme }}
|
||||
inject_theme_js = 1
|
||||
replace_colors = 1
|
||||
always_enable_devtools = 0
|
||||
17
dot_config/spicetify/private_Themes/apex-aeon/color.ini
Normal file
17
dot_config/spicetify/private_Themes/apex-aeon/color.ini
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
[apex-aeon]
|
||||
text = 0a0a0a
|
||||
subtext = a0a0a0
|
||||
main = f5f5f5
|
||||
sidebar = f5f5f5
|
||||
player = f5f5f5
|
||||
card = e8e8e8
|
||||
shadow = 000000
|
||||
selected-row = 007a88
|
||||
button = 007a88
|
||||
button-active = ff0044
|
||||
button-disabled = a0a0a0
|
||||
tab-active = 737373
|
||||
notification = 007a88
|
||||
notification-error = ff0044
|
||||
misc = d18f00
|
||||
1
dot_config/spicetify/private_Themes/apex-aeon/user.css
Normal file
1
dot_config/spicetify/private_Themes/apex-aeon/user.css
Normal file
@@ -0,0 +1 @@
|
||||
/* Apex Aeon - Spicetify overrides */
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
[apex-neon]
|
||||
text = ededed
|
||||
subtext = 404040
|
||||
@@ -13,4 +14,4 @@ button-disabled = 404040
|
||||
tab-active = 262626
|
||||
notification = 00eaff
|
||||
notification-error = ff0044
|
||||
misc = ffb700
|
||||
misc = ffb700
|
||||
@@ -1 +1 @@
|
||||
/* Apex Neon - Spicetify overrides */
|
||||
/* Apex Neon - Spicetify overrides */
|
||||
@@ -1,201 +0,0 @@
|
||||
/* Apex Neon for SwayNotificationCenter
|
||||
State over decoration. If it isn't important, it doesn't glow. */
|
||||
|
||||
@define-color base #050505; /* Void */
|
||||
@define-color surface #141414; /* Panel */
|
||||
@define-color overlay #262626; /* Border */
|
||||
@define-color text #ededed; /* Foreground */
|
||||
@define-color muted #737373; /* Subtext */
|
||||
|
||||
@define-color red #ff0044; /* Active intent / destructive */
|
||||
@define-color cyan #00eaff; /* Info / hover */
|
||||
@define-color green #00ff99; /* Enabled / OK */
|
||||
@define-color purple #9d00ff; /* Special mode */
|
||||
@define-color alert #ff8899; /* Critical (distinct from "you are here" red) */
|
||||
|
||||
* {
|
||||
all: unset;
|
||||
font-family: "JetBrainsMono Nerd Font", "Inter", sans-serif;
|
||||
font-size: 12px;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
/* ===== Windows ===== */
|
||||
.control-center,
|
||||
.notification-window {
|
||||
background-color: rgba(5, 5, 5, 0.92);
|
||||
}
|
||||
|
||||
.control-center {
|
||||
border: 2px solid @overlay;
|
||||
border-radius: 12px;
|
||||
padding: 10px;
|
||||
box-shadow: 0 16px 40px rgba(0, 0, 0, 0.70);
|
||||
}
|
||||
|
||||
.notification-window {
|
||||
border: 2px solid @overlay;
|
||||
border-radius: 12px;
|
||||
padding: 8px;
|
||||
box-shadow: 0 14px 34px rgba(0, 0, 0, 0.70);
|
||||
}
|
||||
|
||||
/* ===== Title row ===== */
|
||||
.widget-title {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.widget-title label {
|
||||
font-size: 15px;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.widget-title button {
|
||||
background-color: @surface;
|
||||
border: 1px solid @overlay;
|
||||
border-radius: 10px;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
.widget-title button:hover {
|
||||
border-color: @red;
|
||||
}
|
||||
|
||||
.widget-title button:active {
|
||||
background-color: @red;
|
||||
color: @base; /* text turns black on red, non-negotiable */
|
||||
}
|
||||
|
||||
/* ===== DND ===== */
|
||||
.widget-dnd {
|
||||
background-color: @surface;
|
||||
border: 1px solid @overlay;
|
||||
border-radius: 10px;
|
||||
padding: 8px 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.widget-dnd label {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.widget-dnd switch {
|
||||
background-color: @overlay;
|
||||
border-radius: 999px;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.widget-dnd switch slider {
|
||||
background-color: @text;
|
||||
border-radius: 999px;
|
||||
min-width: 18px;
|
||||
min-height: 18px;
|
||||
}
|
||||
|
||||
.widget-dnd switch:checked {
|
||||
background-color: @purple;
|
||||
}
|
||||
|
||||
.widget-dnd switch:checked slider {
|
||||
background-color: @base;
|
||||
}
|
||||
|
||||
/* ===== Notifications list: remove "giant grey slab" ===== */
|
||||
.widget-notifications {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.notification-group,
|
||||
.notification-group-headers,
|
||||
.notification-group-icon {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* ===== Notification card ===== */
|
||||
.notification-row {
|
||||
background-color: transparent;
|
||||
margin: 0 0 8px 0;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.notification {
|
||||
background-color: @surface;
|
||||
border: 1px solid @overlay;
|
||||
border-radius: 12px;
|
||||
padding: 10px;
|
||||
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.60);
|
||||
}
|
||||
|
||||
.notification-row:hover .notification {
|
||||
border-color: @cyan;
|
||||
}
|
||||
|
||||
.notification-row:focus .notification {
|
||||
border-color: @red;
|
||||
}
|
||||
|
||||
/* Urgency */
|
||||
.notification.critical {
|
||||
border-color: @alert;
|
||||
box-shadow: 0 0 0 1px @alert;
|
||||
}
|
||||
|
||||
.image {
|
||||
border-radius: 10px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-weight: 800;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.body {
|
||||
color: @muted;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.time {
|
||||
color: @cyan;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* Notification actions */
|
||||
.notification-action {
|
||||
background-color: @overlay;
|
||||
border-radius: 10px;
|
||||
padding: 5px 8px;
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.notification-action:hover {
|
||||
box-shadow: inset 0 0 0 1px @cyan;
|
||||
}
|
||||
|
||||
.notification-action:active {
|
||||
background-color: @cyan;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
/* Close button */
|
||||
.close-button {
|
||||
background-color: @overlay;
|
||||
border-radius: 8px;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
background-color: @red;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
.close-button:active {
|
||||
background-color: @red;
|
||||
color: @base;
|
||||
}
|
||||
|
||||
/* ===== Popup notifications container (safe even if class names differ) ===== */
|
||||
.floating-notifications.background {
|
||||
background-color: transparent;
|
||||
padding: 0;
|
||||
}
|
||||
1
dot_config/swaync/style.css.tmpl
Normal file
1
dot_config/swaync/style.css.tmpl
Normal file
@@ -0,0 +1 @@
|
||||
@import "themes/{{ .chezmoi.config.data.theme }}.css";
|
||||
@@ -31,9 +31,8 @@
|
||||
|
||||
/* Base Structure */
|
||||
* {
|
||||
font-family: "GeistMono Nerd Font";
|
||||
font-family: "JetBrainsMono Nerd Font";
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
@@ -103,7 +102,7 @@
|
||||
.widget-title {
|
||||
color: @razor;
|
||||
font-weight: bold;
|
||||
font-size: 1.1rem;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.widget-label {
|
||||
@@ -144,4 +143,4 @@
|
||||
.widget-menubar > button:hover {
|
||||
background: @razor;
|
||||
color: @void;
|
||||
}
|
||||
}
|
||||
@@ -31,9 +31,8 @@
|
||||
|
||||
/* Base Structure */
|
||||
* {
|
||||
font-family: "GeistMono Nerd Font";
|
||||
font-family: "JetBrainsMono Nerd Font";
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
@@ -103,7 +102,7 @@
|
||||
.widget-title {
|
||||
color: @razor;
|
||||
font-weight: bold;
|
||||
font-size: 1.1rem;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.widget-label {
|
||||
@@ -144,4 +143,4 @@
|
||||
.widget-menubar > button:hover {
|
||||
background: @razor;
|
||||
color: @void;
|
||||
}
|
||||
}
|
||||
@@ -1,262 +0,0 @@
|
||||
@define-color base #050505; /* Void Black */
|
||||
@define-color surface #141414; /* Dark Surface */
|
||||
@define-color overlay #262626; /* Light Surface */
|
||||
@define-color text #ededed; /* Stark White */
|
||||
@define-color muted #737373; /* Muted Text (spec) */
|
||||
|
||||
@define-color love #ff0044; /* Razor Red */
|
||||
@define-color foam #00eaff; /* Electric Cyan */
|
||||
@define-color pine #00ff99; /* Toxic Green */
|
||||
@define-color gold #ffb700; /* Warning Gold */
|
||||
@define-color iris #9d00ff; /* Void Purple */
|
||||
@define-color stealth #404040; /* GEMINI: Stealth */
|
||||
@define-color alert #ff8899; /* Apex Neon: BrRed = Alerts */
|
||||
|
||||
@define-color hl_low #141414;
|
||||
@define-color hl_med #262626;
|
||||
@define-color hl_high #262626; /* keep borders “light surface”, not random gray */
|
||||
|
||||
@define-color bar_alpha rgba(5, 5, 5, 0.85);
|
||||
@define-color surface_alpha rgba(5, 5, 5, 0.9);
|
||||
@define-color overlay_alpha rgba(20, 20, 20, 0.9);
|
||||
|
||||
/* Bar */
|
||||
window#waybar {
|
||||
background: @bar_alpha;
|
||||
color: @text;
|
||||
border-bottom: 1px solid @overlay;
|
||||
}
|
||||
|
||||
/* Extra breathing room for the first/last pill in each section */
|
||||
#left > :first-child,
|
||||
#center > :first-child,
|
||||
#right > :first-child { margin-top: 6px; }
|
||||
|
||||
#left > :last-child,
|
||||
#center > :last-child,
|
||||
#right > :last-child { margin-bottom: 6px; }
|
||||
|
||||
/* Typography */
|
||||
* {
|
||||
font-family: "InconsolataGo Nerd Font Mono", "InconsolataGo Nerd Font", monospace;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
/* Workspaces */
|
||||
#workspaces {
|
||||
margin: 0;
|
||||
padding: 2px 3px;
|
||||
background: transparent;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
/* Default workspace = neutral surface */
|
||||
#workspaces button {
|
||||
background: @surface_alpha;
|
||||
color: @muted; /* inactive should look “off” */
|
||||
border: 1px solid @overlay; /* light surface border */
|
||||
border-radius: 5px;
|
||||
margin: 1px;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
/* Hover = red target lock */
|
||||
#workspaces button:hover {
|
||||
background: @overlay_alpha;
|
||||
border-color: @love;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
/* Active = razor red "target locked" */
|
||||
#workspaces button.active {
|
||||
background: @love;
|
||||
color: @base; /* spec: black text on red */
|
||||
border-color: @love;
|
||||
}
|
||||
|
||||
/* Urgent = alert red, not focus red */
|
||||
#workspaces button.urgent {
|
||||
background: @alert;
|
||||
color: @base;
|
||||
border-color: @alert;
|
||||
box-shadow: 0 0 6px rgba(255, 136, 153, 0.55);
|
||||
}
|
||||
|
||||
/* Shared pill look for ALL modules */
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#network,
|
||||
#privacy,
|
||||
#wireplumber,
|
||||
#clock,
|
||||
#idle_inhibitor,
|
||||
#gamemode,
|
||||
#battery,
|
||||
#power-profiles-daemon,
|
||||
#bluetooth,
|
||||
#tray,
|
||||
#temperature,
|
||||
#custom-swaync,
|
||||
#custom-temps-cycle,
|
||||
#custom-hyprsunset,
|
||||
#custom-alhp {
|
||||
background: @surface_alpha;
|
||||
color: @text;
|
||||
border: 1px solid @overlay;
|
||||
border-radius: 6px;
|
||||
padding: 2px 6px;
|
||||
margin: 2px 2px;
|
||||
}
|
||||
|
||||
/* Universal hover = red selection cue */
|
||||
#cpu:hover,
|
||||
#memory:hover,
|
||||
#disk:hover,
|
||||
#network:hover,
|
||||
#privacy:hover,
|
||||
#wireplumber:hover,
|
||||
#clock:hover,
|
||||
#idle_inhibitor:hover,
|
||||
#gamemode:hover,
|
||||
#battery:hover,
|
||||
#power-profiles-daemon:hover,
|
||||
#bluetooth:hover,
|
||||
#tray:hover,
|
||||
#temperature:hover,
|
||||
#custom-swaync:hover,
|
||||
#custom-temps-cycle:hover,
|
||||
#custom-hyprsunset:hover,
|
||||
#custom-alhp:hover {
|
||||
background: @overlay_alpha;
|
||||
border-color: @love;
|
||||
}
|
||||
|
||||
/* State-driven styling: low urgency = border, high urgency = full pill */
|
||||
#cpu.warning,
|
||||
#memory.warning,
|
||||
#disk.warning,
|
||||
#battery.warning,
|
||||
#temperature.warning,
|
||||
#custom-temps-cycle.warning {
|
||||
border-color: @gold;
|
||||
}
|
||||
|
||||
#custom-alhp.stale,
|
||||
#wireplumber.muted {
|
||||
border-color: @gold;
|
||||
}
|
||||
|
||||
#custom-swaync.unread {
|
||||
border-color: @foam;
|
||||
}
|
||||
|
||||
#idle_inhibitor.activated { border-color: @foam; }
|
||||
|
||||
#privacy { border-color: @iris; }
|
||||
#privacy-item,
|
||||
#privacy-item.screenshare,
|
||||
#privacy-item.audio-in,
|
||||
#privacy-item.audio-out { color: @iris; }
|
||||
|
||||
#cpu.critical,
|
||||
#memory.critical,
|
||||
#disk.critical,
|
||||
#battery.critical,
|
||||
#network.disconnected,
|
||||
#network.disabled,
|
||||
#temperature.critical,
|
||||
#custom-temps-cycle.critical,
|
||||
#custom-alhp.bad,
|
||||
#custom-alhp.down {
|
||||
background: @alert;
|
||||
color: @base;
|
||||
border-color: @alert;
|
||||
}
|
||||
|
||||
#wireplumber.muted { color: @muted; }
|
||||
#idle_inhibitor.deactivated { color: @muted; }
|
||||
|
||||
/* Group wrappers */
|
||||
#group-temps,
|
||||
#group-volume {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#custom-temps-cycle.down { color: @muted; }
|
||||
|
||||
#group-temps #temperature { margin: 1px 0; }
|
||||
#group-temps #temperature:hover { background: @overlay_alpha; border-color: @love; }
|
||||
|
||||
#group-temps #temperature.critical {
|
||||
background: @alert;
|
||||
color: @base;
|
||||
border-color: @alert;
|
||||
}
|
||||
|
||||
#group-temps #temperature.warning { border-color: @gold; }
|
||||
|
||||
/* Tray */
|
||||
#tray > .passive { opacity: 0.7; }
|
||||
#tray > .needs-attention {
|
||||
background: @alert;
|
||||
color: @base;
|
||||
border: 1px solid @alert;
|
||||
box-shadow: 0 0 6px rgba(255, 136, 153, 0.4);
|
||||
}
|
||||
|
||||
/* Volume group sizing */
|
||||
#group-volume #wireplumber {
|
||||
margin: 1px 0;
|
||||
padding: 2px 3px;
|
||||
}
|
||||
#group-volume #wireplumber:hover { background: @overlay_alpha; border-color: @love; }
|
||||
|
||||
/* Tooltips */
|
||||
tooltip,
|
||||
window#waybar tooltip {
|
||||
background: @surface;
|
||||
color: @text;
|
||||
border: 1px solid @overlay;
|
||||
border-radius: 8px;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
|
||||
/* Popup menus */
|
||||
menu,
|
||||
.menu,
|
||||
popover,
|
||||
.popover {
|
||||
background: @surface;
|
||||
color: @text;
|
||||
border: 1px solid @overlay;
|
||||
border-radius: 8px;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
|
||||
menuitem,
|
||||
.menuitem {
|
||||
background: transparent;
|
||||
color: @text;
|
||||
border-radius: 6px;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
|
||||
menuitem:hover,
|
||||
.menuitem:hover {
|
||||
background: @overlay_alpha;
|
||||
border: 1px solid @love;
|
||||
}
|
||||
|
||||
menuitem:disabled,
|
||||
.menuitem:disabled { color: @muted; }
|
||||
|
||||
menu separator,
|
||||
.menu separator {
|
||||
background: @overlay;
|
||||
min-height: 1px;
|
||||
margin: 6px 0;
|
||||
}
|
||||
243
dot_config/waybar/style.css.tmpl
Normal file
243
dot_config/waybar/style.css.tmpl
Normal file
@@ -0,0 +1,243 @@
|
||||
@import "themes/{{ .chezmoi.config.data.theme }}.css";
|
||||
|
||||
@define-color bar_bg alpha(@background, 0.85);
|
||||
@define-color pill_bg alpha(@panel, 0.9);
|
||||
@define-color pill_hover alpha(@panel, 0.98);
|
||||
@define-color alert_shadow alpha(@error, 0.45);
|
||||
|
||||
/* Bar */
|
||||
window#waybar {
|
||||
background: @bar_bg;
|
||||
color: @foreground;
|
||||
border-bottom: 1px solid @border;
|
||||
}
|
||||
|
||||
/* Extra breathing room for the first/last pill in each section */
|
||||
#left > :first-child,
|
||||
#center > :first-child,
|
||||
#right > :first-child { margin-top: 6px; }
|
||||
|
||||
#left > :last-child,
|
||||
#center > :last-child,
|
||||
#right > :last-child { margin-bottom: 6px; }
|
||||
|
||||
/* Typography */
|
||||
* {
|
||||
font-family: "GeistMono Nerd Font", monospace;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
/* Workspaces */
|
||||
#workspaces {
|
||||
margin: 0;
|
||||
padding: 2px 3px;
|
||||
background: transparent;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
background: @pill_bg;
|
||||
color: @dim;
|
||||
border: 1px solid @border;
|
||||
border-radius: 5px;
|
||||
margin: 1px;
|
||||
padding: 2px 5px;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: @pill_hover;
|
||||
border-color: @accent;
|
||||
color: @foreground;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
background: @accent;
|
||||
color: @background;
|
||||
border-color: @accent;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background: @error;
|
||||
color: @background;
|
||||
border-color: @error;
|
||||
box-shadow: 0 0 6px @alert_shadow;
|
||||
}
|
||||
|
||||
/* Shared pill look for ALL modules */
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#network,
|
||||
#privacy,
|
||||
#wireplumber,
|
||||
#clock,
|
||||
#idle_inhibitor,
|
||||
#gamemode,
|
||||
#battery,
|
||||
#power-profiles-daemon,
|
||||
#bluetooth,
|
||||
#tray,
|
||||
#temperature,
|
||||
#custom-swaync,
|
||||
#custom-temps-cycle,
|
||||
#custom-hyprsunset,
|
||||
#custom-alhp {
|
||||
background: @pill_bg;
|
||||
color: @foreground;
|
||||
border: 1px solid @border;
|
||||
border-radius: 6px;
|
||||
padding: 2px 6px;
|
||||
margin: 2px 2px;
|
||||
}
|
||||
|
||||
#cpu:hover,
|
||||
#memory:hover,
|
||||
#disk:hover,
|
||||
#network:hover,
|
||||
#privacy:hover,
|
||||
#wireplumber:hover,
|
||||
#clock:hover,
|
||||
#idle_inhibitor:hover,
|
||||
#gamemode:hover,
|
||||
#battery:hover,
|
||||
#power-profiles-daemon:hover,
|
||||
#bluetooth:hover,
|
||||
#tray:hover,
|
||||
#temperature:hover,
|
||||
#custom-swaync:hover,
|
||||
#custom-temps-cycle:hover,
|
||||
#custom-hyprsunset:hover,
|
||||
#custom-alhp:hover {
|
||||
background: @pill_hover;
|
||||
border-color: @accent;
|
||||
}
|
||||
|
||||
/* State-driven styling: low urgency = border, high urgency = full pill */
|
||||
#cpu.warning,
|
||||
#memory.warning,
|
||||
#disk.warning,
|
||||
#battery.warning,
|
||||
#temperature.warning,
|
||||
#custom-temps-cycle.warning {
|
||||
border-color: @warning;
|
||||
}
|
||||
|
||||
#custom-alhp.stale,
|
||||
#wireplumber.muted {
|
||||
border-color: @warning;
|
||||
}
|
||||
|
||||
#custom-swaync.unread {
|
||||
border-color: @info;
|
||||
}
|
||||
|
||||
#idle_inhibitor.activated { border-color: @info; }
|
||||
|
||||
#privacy { border-color: @sacred; }
|
||||
#privacy-item,
|
||||
#privacy-item.screenshare,
|
||||
#privacy-item.audio-in,
|
||||
#privacy-item.audio-out { color: @sacred; }
|
||||
|
||||
#cpu.critical,
|
||||
#memory.critical,
|
||||
#disk.critical,
|
||||
#battery.critical,
|
||||
#network.disconnected,
|
||||
#network.disabled,
|
||||
#temperature.critical,
|
||||
#custom-temps-cycle.critical,
|
||||
#custom-alhp.bad,
|
||||
#custom-alhp.down {
|
||||
background: @error;
|
||||
color: @background;
|
||||
border-color: @error;
|
||||
}
|
||||
|
||||
#wireplumber.muted { color: @dim; }
|
||||
#idle_inhibitor.deactivated { color: @dim; }
|
||||
|
||||
/* Group wrappers */
|
||||
#group-temps,
|
||||
#group-volume {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#custom-temps-cycle.down { color: @dim; }
|
||||
|
||||
#group-temps #temperature { margin: 1px 0; }
|
||||
#group-temps #temperature:hover { background: @pill_hover; border-color: @accent; }
|
||||
|
||||
#group-temps #temperature.critical {
|
||||
background: @error;
|
||||
color: @background;
|
||||
border-color: @error;
|
||||
}
|
||||
|
||||
#group-temps #temperature.warning { border-color: @warning; }
|
||||
|
||||
/* Tray */
|
||||
#tray > .passive { opacity: 0.7; }
|
||||
#tray > .needs-attention {
|
||||
background: @error;
|
||||
color: @background;
|
||||
border: 1px solid @error;
|
||||
box-shadow: 0 0 6px @alert_shadow;
|
||||
}
|
||||
|
||||
/* Volume group sizing */
|
||||
#group-volume #wireplumber {
|
||||
margin: 1px 0;
|
||||
padding: 2px 3px;
|
||||
}
|
||||
#group-volume #wireplumber:hover { background: @pill_hover; border-color: @accent; }
|
||||
|
||||
/* Tooltips */
|
||||
tooltip,
|
||||
window#waybar tooltip {
|
||||
background: @panel;
|
||||
color: @foreground;
|
||||
border: 1px solid @border;
|
||||
border-radius: 8px;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
|
||||
/* Popup menus */
|
||||
menu,
|
||||
.menu,
|
||||
popover,
|
||||
.popover {
|
||||
background: @panel;
|
||||
color: @foreground;
|
||||
border: 1px solid @border;
|
||||
border-radius: 8px;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
|
||||
menuitem,
|
||||
.menuitem {
|
||||
background: transparent;
|
||||
color: @foreground;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 6px;
|
||||
padding: 6px 8px;
|
||||
}
|
||||
|
||||
menuitem:hover,
|
||||
.menuitem:hover {
|
||||
background: @pill_hover;
|
||||
border-color: @accent;
|
||||
}
|
||||
|
||||
menuitem:disabled,
|
||||
.menuitem:disabled { color: @dim; }
|
||||
|
||||
menu separator,
|
||||
.menu separator {
|
||||
background: @border;
|
||||
min-height: 1px;
|
||||
margin: 6px 0;
|
||||
}
|
||||
25
dot_config/waybar/themes/apex-aeon.css
Normal file
25
dot_config/waybar/themes/apex-aeon.css
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Apex Aeon — Waybar Color Palette */
|
||||
/* DNA: State over Decoration */
|
||||
|
||||
@define-color void #f5f5f5;
|
||||
@define-color stark #0a0a0a;
|
||||
@define-color razor #ff0044;
|
||||
@define-color tech #007a88;
|
||||
@define-color toxic #00b377;
|
||||
@define-color amber #d18f00;
|
||||
@define-color sacred #7a3cff;
|
||||
@define-color alert #ff4d6d;
|
||||
|
||||
@define-color panel #e8e8e8;
|
||||
@define-color border #737373;
|
||||
@define-color stealth #a0a0a0;
|
||||
@define-color dim #737373;
|
||||
|
||||
/* Semantic mappings for easier integration */
|
||||
@define-color background @void;
|
||||
@define-color foreground @stark;
|
||||
@define-color accent @razor;
|
||||
@define-color info @tech;
|
||||
@define-color success @toxic;
|
||||
@define-color warning @amber;
|
||||
@define-color error @alert;
|
||||
25
dot_config/waybar/themes/apex-neon.css
Normal file
25
dot_config/waybar/themes/apex-neon.css
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Apex Neon — Waybar Color Palette */
|
||||
/* DNA: State over Decoration */
|
||||
|
||||
@define-color void #050505;
|
||||
@define-color stark #ededed;
|
||||
@define-color razor #ff0044;
|
||||
@define-color tech #00eaff;
|
||||
@define-color toxic #00ff99;
|
||||
@define-color amber #ffb700;
|
||||
@define-color sacred #9d00ff;
|
||||
@define-color alert #ff8899;
|
||||
|
||||
@define-color panel #141414;
|
||||
@define-color border #262626;
|
||||
@define-color stealth #404040;
|
||||
@define-color dim #737373;
|
||||
|
||||
/* Semantic mappings for easier integration */
|
||||
@define-color background @void;
|
||||
@define-color foreground @stark;
|
||||
@define-color accent @razor;
|
||||
@define-color info @tech;
|
||||
@define-color success @toxic;
|
||||
@define-color warning @amber;
|
||||
@define-color error @alert;
|
||||
35
dot_config/wezterm/colors/apex-aeon.toml
Normal file
35
dot_config/wezterm/colors/apex-aeon.toml
Normal file
@@ -0,0 +1,35 @@
|
||||
# APEX AEON - WezTerm color scheme
|
||||
# Spec-accurate: color = state, not decoration
|
||||
|
||||
[colors]
|
||||
foreground = "#0a0a0a"
|
||||
background = "#f5f5f5"
|
||||
|
||||
cursor_bg = "#ff0044"
|
||||
cursor_border = "#ff0044"
|
||||
cursor_fg = "#0a0a0a"
|
||||
|
||||
selection_bg = "#ff0044"
|
||||
selection_fg = "#0a0a0a"
|
||||
|
||||
ansi = [
|
||||
"#0a0a0a",
|
||||
"#ff0044",
|
||||
"#00b377",
|
||||
"#d18f00",
|
||||
"#007a88",
|
||||
"#7a3cff",
|
||||
"#007a88",
|
||||
"#f5f5f5",
|
||||
]
|
||||
|
||||
brights = [
|
||||
"#737373",
|
||||
"#ff4d6d",
|
||||
"#33d6a6",
|
||||
"#ffbf40",
|
||||
"#33bccc",
|
||||
"#a680ff",
|
||||
"#33bccc",
|
||||
"#ffffff",
|
||||
]
|
||||
35
dot_config/wezterm/colors/apex-neon.toml
Normal file
35
dot_config/wezterm/colors/apex-neon.toml
Normal file
@@ -0,0 +1,35 @@
|
||||
# APEX NEON - WezTerm color scheme
|
||||
# Spec-accurate: color = state, not decoration
|
||||
|
||||
[colors]
|
||||
foreground = "#ededed"
|
||||
background = "#050505"
|
||||
|
||||
cursor_bg = "#ff0044"
|
||||
cursor_border = "#ff0044"
|
||||
cursor_fg = "#050505"
|
||||
|
||||
selection_bg = "#ff0044"
|
||||
selection_fg = "#050505"
|
||||
|
||||
ansi = [
|
||||
"#050505",
|
||||
"#ff0044",
|
||||
"#00ff99",
|
||||
"#ffb700",
|
||||
"#00eaff",
|
||||
"#9d00ff",
|
||||
"#00eaff",
|
||||
"#ededed",
|
||||
]
|
||||
|
||||
brights = [
|
||||
"#737373",
|
||||
"#ff8899",
|
||||
"#2bffb2",
|
||||
"#ffd24d",
|
||||
"#5af3ff",
|
||||
"#c84dff",
|
||||
"#5af3ff",
|
||||
"#ffffff",
|
||||
]
|
||||
19
dot_config/wezterm/wezterm.lua.tmpl
Normal file
19
dot_config/wezterm/wezterm.lua.tmpl
Normal file
@@ -0,0 +1,19 @@
|
||||
-- Pull in the wezterm API
|
||||
local wezterm = require("wezterm")
|
||||
|
||||
-- This will hold the configuration.
|
||||
local config = wezterm.config_builder()
|
||||
|
||||
-- This is where you actually apply your config choices.
|
||||
|
||||
-- For example, changing the initial geometry for new windows:
|
||||
config.initial_cols = 120
|
||||
config.initial_rows = 28
|
||||
|
||||
-- or, changing the font size and color scheme.
|
||||
config.font_size = 10
|
||||
config.color_scheme_dirs = { wezterm.config_dir .. "/colors" }
|
||||
config.color_scheme = "{{ .chezmoi.config.data.theme }}"
|
||||
|
||||
-- Finally, return the configuration to wezterm:
|
||||
return config
|
||||
46
dot_config/zathura/themes/apex-aeon.zathurarc
Normal file
46
dot_config/zathura/themes/apex-aeon.zathurarc
Normal file
@@ -0,0 +1,46 @@
|
||||
# Apex Aeon — Zathura Theme
|
||||
# DNA: State over Decoration
|
||||
|
||||
# Core
|
||||
set default-bg "#f5f5f5"
|
||||
set default-fg "#0a0a0a"
|
||||
|
||||
# Status Bar
|
||||
set statusbar-bg "#e8e8e8"
|
||||
set statusbar-fg "#0a0a0a"
|
||||
|
||||
# Input Bar
|
||||
set inputbar-bg "#e8e8e8"
|
||||
set inputbar-fg "#0a0a0a"
|
||||
|
||||
# Completion
|
||||
set completion-bg "#e8e8e8"
|
||||
set completion-fg "#0a0a0a"
|
||||
set completion-group-bg "#737373"
|
||||
set completion-group-fg "#737373"
|
||||
set completion-highlight-bg "#ff0044"
|
||||
set completion-highlight-fg "#0a0a0a"
|
||||
|
||||
# Notifications
|
||||
set notification-bg "#e8e8e8"
|
||||
set notification-fg "#0a0a0a"
|
||||
set notification-error-bg "#ff4d6d"
|
||||
set notification-error-fg "#f5f5f5"
|
||||
set notification-warning-bg "#d18f00"
|
||||
set notification-warning-fg "#f5f5f5"
|
||||
|
||||
# Selection & Highlight
|
||||
set highlight-color "rgba(ff0044, 0.5)"
|
||||
set highlight-active-color "rgba(ff0044, 0.8)"
|
||||
|
||||
# Recolor (Dark Mode for PDFs)
|
||||
# In Neon (Dark), we want dark paper (background) and light ink (foreground).
|
||||
# In Aeon (Light), we want light paper and dark ink (standard).
|
||||
set recolor-lightcolor "#f5f5f5"
|
||||
set recolor-darkcolor "#0a0a0a"
|
||||
|
||||
# Default recolor state
|
||||
# Ideally, only true for dark themes, but Zathura config is static.
|
||||
# Users can toggle with Ctrl+R.
|
||||
set recolor "false"
|
||||
set recolor-keephue "true"
|
||||
46
dot_config/zathura/themes/apex-neon.zathurarc
Normal file
46
dot_config/zathura/themes/apex-neon.zathurarc
Normal file
@@ -0,0 +1,46 @@
|
||||
# Apex Neon — Zathura Theme
|
||||
# DNA: State over Decoration
|
||||
|
||||
# Core
|
||||
set default-bg "#050505"
|
||||
set default-fg "#ededed"
|
||||
|
||||
# Status Bar
|
||||
set statusbar-bg "#141414"
|
||||
set statusbar-fg "#ededed"
|
||||
|
||||
# Input Bar
|
||||
set inputbar-bg "#141414"
|
||||
set inputbar-fg "#ededed"
|
||||
|
||||
# Completion
|
||||
set completion-bg "#141414"
|
||||
set completion-fg "#ededed"
|
||||
set completion-group-bg "#262626"
|
||||
set completion-group-fg "#737373"
|
||||
set completion-highlight-bg "#ff0044"
|
||||
set completion-highlight-fg "#050505"
|
||||
|
||||
# Notifications
|
||||
set notification-bg "#141414"
|
||||
set notification-fg "#ededed"
|
||||
set notification-error-bg "#ff8899"
|
||||
set notification-error-fg "#050505"
|
||||
set notification-warning-bg "#ffb700"
|
||||
set notification-warning-fg "#050505"
|
||||
|
||||
# Selection & Highlight
|
||||
set highlight-color "rgba(ff0044, 0.5)"
|
||||
set highlight-active-color "rgba(ff0044, 0.8)"
|
||||
|
||||
# Recolor (Dark Mode for PDFs)
|
||||
# In Neon (Dark), we want dark paper (background) and light ink (foreground).
|
||||
# In Aeon (Light), we want light paper and dark ink (standard).
|
||||
set recolor-lightcolor "#050505"
|
||||
set recolor-darkcolor "#ededed"
|
||||
|
||||
# Default recolor state
|
||||
# Ideally, only true for dark themes, but Zathura config is static.
|
||||
# Users can toggle with Ctrl+R.
|
||||
set recolor "false"
|
||||
set recolor-keephue "true"
|
||||
1
dot_config/zathura/zathurarc.tmpl
Normal file
1
dot_config/zathura/zathurarc.tmpl
Normal file
@@ -0,0 +1 @@
|
||||
include {{ .chezmoi.homeDir }}/.config/zathura/themes/{{ .chezmoi.config.data.theme }}.zathurarc
|
||||
@@ -8,8 +8,8 @@
|
||||
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||
{
|
||||
"ui_font_weight": 400.0,
|
||||
"ui_font_family": "InconsolataGo Nerd Font Mono",
|
||||
"buffer_font_family": "InconsolataGo Nerd Font Mono",
|
||||
"ui_font_family": "GeistMono Nerd Font",
|
||||
"buffer_font_family": "GeistMono Nerd Font",
|
||||
"icon_theme": {
|
||||
"mode": "system",
|
||||
"light": "Zed (Default)",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"name": "Apex",
|
||||
"author": "S0wlz (Owlibou)",
|
||||
"themes": [
|
||||
|
||||
{
|
||||
"name": "Apex Neon",
|
||||
"appearance": "dark",
|
||||
@@ -137,7 +138,7 @@
|
||||
"terminal.ansi.magenta": "#9d00ff",
|
||||
"terminal.ansi.cyan": "#00eaff",
|
||||
"terminal.ansi.white": "#ededed",
|
||||
"terminal.ansi.bright_black": "#262626",
|
||||
"terminal.ansi.bright_black": "#737373",
|
||||
"terminal.ansi.bright_red": "#ff8899",
|
||||
"terminal.ansi.bright_green": "#2bffb2",
|
||||
"terminal.ansi.bright_yellow": "#ffd24d",
|
||||
@@ -314,6 +315,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "Apex Aeon",
|
||||
"appearance": "light",
|
||||
@@ -324,7 +326,7 @@
|
||||
"elevated_surface.background": "#ffffff",
|
||||
"panel.background": "#e8e8e8",
|
||||
"panel.focused_border": "#ff0044",
|
||||
"panel.indent_guide": "#a0a0a066",
|
||||
"panel.indent_guide": "#73737366",
|
||||
"panel.indent_guide_active": "#737373aa",
|
||||
"panel.indent_guide_hover": "#737373cc",
|
||||
"tab_bar.background": "#e8e8e8",
|
||||
@@ -358,14 +360,14 @@
|
||||
"#d18f00"
|
||||
],
|
||||
"element.background": "#ffffff",
|
||||
"element.hover": "#e8e8e8",
|
||||
"element.active": "#e8e8e8",
|
||||
"element.selected": "#e8e8e8",
|
||||
"element.hover": "#737373",
|
||||
"element.active": "#737373",
|
||||
"element.selected": "#737373",
|
||||
"element.disabled": "#e8e8e8",
|
||||
"ghost_element.background": null,
|
||||
"ghost_element.hover": "#a0a0a033",
|
||||
"ghost_element.active": "#a0a0a044",
|
||||
"ghost_element.selected": "#a0a0a033",
|
||||
"ghost_element.hover": "#73737366",
|
||||
"ghost_element.active": "#73737388",
|
||||
"ghost_element.selected": "#73737366",
|
||||
"ghost_element.disabled": null,
|
||||
"drop_target.background": "#33bccc22",
|
||||
"editor.background": "#f5f5f5",
|
||||
@@ -376,14 +378,14 @@
|
||||
"editor.highlighted_line.background": "#e8e8e8",
|
||||
"editor.line_number": "#737373",
|
||||
"editor.active_line_number": "#ff0044",
|
||||
"editor.wrap_guide": "#e8e8e8",
|
||||
"editor.active_wrap_guide": "#a0a0a0",
|
||||
"editor.indent_guide": "#a0a0a066",
|
||||
"editor.wrap_guide": "#737373",
|
||||
"editor.active_wrap_guide": "#737373",
|
||||
"editor.indent_guide": "#73737366",
|
||||
"editor.indent_guide_active": "#737373aa",
|
||||
"editor.invisible": "#a0a0a088",
|
||||
"editor.invisible": "#73737388",
|
||||
"editor.document_highlight.read_background": "#007a881a",
|
||||
"editor.document_highlight.write_background": "#ff00441a",
|
||||
"editor.document_highlight.bracket_background": "#a0a0a033",
|
||||
"editor.document_highlight.bracket_background": "#73737366",
|
||||
"search.match_background": "#33bccc44",
|
||||
"scrollbar.track.background": "#f5f5f5",
|
||||
"scrollbar.track.border": "#f5f5f5",
|
||||
@@ -431,10 +433,10 @@
|
||||
"conflict.border": "#ff4d6d",
|
||||
"ignored": "#737373",
|
||||
"ignored.background": "#7373731a",
|
||||
"ignored.border": "#a0a0a0",
|
||||
"ignored.border": "#737373",
|
||||
"hidden": "#737373",
|
||||
"hidden.background": "#7373731a",
|
||||
"hidden.border": "#a0a0a0",
|
||||
"hidden.border": "#737373",
|
||||
"terminal.background": "#f5f5f5",
|
||||
"terminal.foreground": "#0a0a0a",
|
||||
"terminal.bright_foreground": "#0a0a0a",
|
||||
@@ -625,5 +627,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
|
||||
488
dot_config/zsh/apex-aeon.zsh
Normal file
488
dot_config/zsh/apex-aeon.zsh
Normal file
@@ -0,0 +1,488 @@
|
||||
# Apex Aeon — Predator Cockpit (Zsh) — v1
|
||||
# Two-bus design:
|
||||
# [precmd radar] -> after-action + context bursts (event-driven)
|
||||
# [promptline] -> LEFT: identity + territory
|
||||
# RIGHT: intel + vcs + friction (stable)
|
||||
|
||||
setopt prompt_subst
|
||||
setopt no_beep
|
||||
|
||||
zmodload zsh/datetime 2>/dev/null
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 1) PALETTE (Apex Aeon DNA)
|
||||
# -----------------------------------------------------------------------------
|
||||
typeset -gA C
|
||||
C[VOID]="#f5f5f5"
|
||||
C[WHITE]="#0a0a0a"
|
||||
C[MUTED]="#737373"
|
||||
C[RAZOR]="#ff0044"
|
||||
C[CYAN]="#007a88"
|
||||
C[GOLD]="#d18f00"
|
||||
C[OK]="#00b377"
|
||||
C[PURPLE]="#7a3cff"
|
||||
C[ALERT]="#ff4d6d"
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 2) ICONS / GLYPHS (Nerd Font optional)
|
||||
# -----------------------------------------------------------------------------
|
||||
typeset -gA I
|
||||
I[OS]=""
|
||||
I[SSH]=""
|
||||
I[ROOT]=""
|
||||
I[GIT]=""
|
||||
I[JOBS]=""
|
||||
I[RADAR]="⌁"
|
||||
I[RET]="↩"
|
||||
|
||||
typeset -gA S
|
||||
S[PL_L]=""
|
||||
S[PL_R]=""
|
||||
S[DOT]="·"
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 3) CONFIG
|
||||
# -----------------------------------------------------------------------------
|
||||
typeset -gA APEX
|
||||
APEX[SLOW_SOFT_MS]=750
|
||||
APEX[SLOW_HARD_MS]=2000
|
||||
|
||||
APEX[STARTUP_BURST]=1
|
||||
APEX[SHOW_AAR]=1
|
||||
APEX[SHOW_CONTEXT_BURST]=1
|
||||
APEX[SHOW_VCS]=1
|
||||
APEX[SHOW_INTEL]=1
|
||||
APEX[SHOW_JOBS]=1
|
||||
APEX[SHOW_RO]=1
|
||||
APEX[GIT_AHEAD_BEHIND]=1
|
||||
|
||||
# Ops commands (also match wrappers like sudo/doas/command)
|
||||
APEX[OPS_RE]='^((sudo|doas|command)[[:space:]]+)*((pacman|yay|paru|apt|dnf|brew|systemctl|docker|kubectl|helm|git))([[:space:]]|$)'
|
||||
|
||||
# Session-ish commands (spawn a subshell; exit codes are often “not a failure”)
|
||||
APEX[SESSION_RE]='^((sudo|doas|command)[[:space:]]+)*chezmoi[[:space:]]+cd([[:space:]]|$)'
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 4) STATE
|
||||
# -----------------------------------------------------------------------------
|
||||
typeset -gF apex_cmd_start=0.0
|
||||
typeset -g apex_last_cmd=""
|
||||
typeset -g apex_has_run_cmd=0
|
||||
|
||||
typeset -g apex_startup_done=0
|
||||
typeset -g apex_pwd_changed=1
|
||||
|
||||
# Sticky intel
|
||||
typeset -g apex_venv_name=""
|
||||
typeset -g apex_target_sig=""
|
||||
typeset -g apex_mode_sig=""
|
||||
|
||||
# Git state
|
||||
typeset -g apex_in_git=0
|
||||
typeset -g apex_git_branch=""
|
||||
typeset -g apex_git_dirty_wt=0
|
||||
typeset -g apex_git_dirty_ix=0
|
||||
typeset -g apex_git_op=""
|
||||
typeset -g apex_git_up_ok=0
|
||||
typeset -g apex_git_ahead=0
|
||||
typeset -g apex_git_behind=0
|
||||
|
||||
# Radar previous snapshots (transition detection)
|
||||
typeset -g apex_prev_in_git=-1
|
||||
typeset -g apex_prev_git_branch=""
|
||||
typeset -g apex_prev_git_op=""
|
||||
typeset -g apex_prev_venv_name=""
|
||||
typeset -g apex_prev_target_sig=""
|
||||
typeset -g apex_prev_proj_sig=""
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 5) UTILITIES
|
||||
# -----------------------------------------------------------------------------
|
||||
apex__short_cmd() {
|
||||
local s="$1"
|
||||
s="${s//$'
|
||||
'/ }"
|
||||
s="${s#"${s%%[![:space:]]*}"}" # ltrim
|
||||
s="${s%"${s##*[![:space:]]}"}" # rtrim
|
||||
print -r -- "${s[1,90]}"
|
||||
}
|
||||
|
||||
apex__project_sig() {
|
||||
local s=""
|
||||
[[ -f package.json ]] && s+="node"
|
||||
[[ -f pnpm-lock.yaml ]] && s+="+pnpm"
|
||||
[[ -f bun.lockb ]] && s+="+bun"
|
||||
[[ -f yarn.lock ]] && s+="+yarn"
|
||||
|
||||
[[ -f pyproject.toml || -f requirements.txt ]] && s+="${s:+ }py"
|
||||
[[ -f uv.lock ]] && s+="+uv"
|
||||
|
||||
[[ -f Cargo.toml ]] && s+="${s:+ }rust"
|
||||
[[ -f go.mod ]] && s+="${s:+ }go"
|
||||
|
||||
[[ -n "$s" ]] && print -r -- "$s"
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 6) INTEL (sticky; updated each prompt)
|
||||
# -----------------------------------------------------------------------------
|
||||
apex_update_intel() {
|
||||
# Target (cheap env-based; no kubectl calls)
|
||||
if [[ -n "$AWS_PROFILE" ]]; then
|
||||
apex_target_sig="aws:${AWS_PROFILE}"
|
||||
elif [[ -n "$GOOGLE_CLOUD_PROJECT" ]]; then
|
||||
apex_target_sig="gcp:${GOOGLE_CLOUD_PROJECT}"
|
||||
elif [[ -n "$KUBE_CONTEXT" ]]; then
|
||||
apex_target_sig="kube:${KUBE_CONTEXT}"
|
||||
else
|
||||
apex_target_sig=""
|
||||
fi
|
||||
|
||||
# Mode
|
||||
if [[ -n "$IN_NIX_SHELL" ]]; then
|
||||
apex_mode_sig="nix"
|
||||
elif [[ -n "$DIRENV_DIR" ]]; then
|
||||
apex_mode_sig="direnv"
|
||||
else
|
||||
apex_mode_sig=""
|
||||
fi
|
||||
|
||||
# Venv
|
||||
apex_venv_name=""
|
||||
if [[ -n "$VIRTUAL_ENV" ]]; then
|
||||
apex_venv_name="$(basename "$VIRTUAL_ENV")"
|
||||
elif [[ -n "$CONDA_DEFAULT_ENV" ]]; then
|
||||
apex_venv_name="$CONDA_DEFAULT_ENV"
|
||||
fi
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 7) GIT
|
||||
# -----------------------------------------------------------------------------
|
||||
apex_git_update() {
|
||||
apex_in_git=0
|
||||
apex_git_branch=""
|
||||
apex_git_dirty_wt=0
|
||||
apex_git_dirty_ix=0
|
||||
apex_git_op=""
|
||||
apex_git_up_ok=0
|
||||
apex_git_ahead=0
|
||||
apex_git_behind=0
|
||||
|
||||
command git rev-parse --is-inside-work-tree &>/dev/null || return
|
||||
apex_in_git=1
|
||||
|
||||
apex_git_branch="$(
|
||||
command git symbolic-ref --quiet --short HEAD 2>/dev/null \
|
||||
|| command git rev-parse --short HEAD 2>/dev/null
|
||||
)"
|
||||
|
||||
local gd; gd="$(command git rev-parse --git-dir 2>/dev/null)" || return
|
||||
[[ -d "$gd/rebase-apply" || -d "$gd/rebase-merge" ]] && apex_git_op="rebase"
|
||||
[[ -f "$gd/MERGE_HEAD" ]] && apex_git_op="merge"
|
||||
[[ -f "$gd/CHERRY_PICK_HEAD" ]] && apex_git_op="cherry-pick"
|
||||
[[ -f "$gd/BISECT_LOG" ]] && apex_git_op="bisect"
|
||||
|
||||
# Dirty markers
|
||||
command git diff --quiet --ignore-submodules -- 2>/dev/null || apex_git_dirty_wt=1
|
||||
command git diff --cached --quiet --ignore-submodules -- 2>/dev/null || apex_git_dirty_ix=1
|
||||
|
||||
# Upstream (earned ✓)
|
||||
if command git rev-parse --abbrev-ref --symbolic-full-name @{u} &>/dev/null; then
|
||||
local counts behind ahead
|
||||
counts="$(command git rev-list --left-right --count @{u}...HEAD 2>/dev/null)" || return
|
||||
local IFS=$' \t'
|
||||
read -r behind ahead <<<"$counts"
|
||||
apex_git_behind="${behind:-0}"
|
||||
apex_git_ahead="${ahead:-0}"
|
||||
|
||||
if (( apex_git_dirty_wt == 0 && apex_git_dirty_ix == 0 )) && [[ -z "$apex_git_op" ]]; then
|
||||
[[ "$apex_git_behind" == "0" && "$apex_git_ahead" == "0" ]] && apex_git_up_ok=1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 8) LEFT PROMPTLINE: IDENTITY + TERRITORY
|
||||
# -----------------------------------------------------------------------------
|
||||
apex_identity() {
|
||||
local is_root=0 is_ssh=0 color label
|
||||
(( EUID == 0 )) && is_root=1
|
||||
[[ -n "$SSH_CONNECTION$SSH_TTY" ]] && is_ssh=1
|
||||
|
||||
if (( is_root )); then
|
||||
color="${C[PURPLE]}"
|
||||
if (( is_ssh )); then
|
||||
label="${I[ROOT]} @%m"
|
||||
else
|
||||
label="${I[ROOT]} root"
|
||||
fi
|
||||
elif (( is_ssh )); then
|
||||
color="${C[CYAN]}"
|
||||
label="${I[SSH]} %n@%m"
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
|
||||
print -n "%F{${color}}${S[PL_L]}%f%K{${color}}%F{${C[VOID]}}%B ${label} %b%f%k%F{${color}}${S[PL_R]}%f "
|
||||
}
|
||||
|
||||
apex_territory() {
|
||||
print -n "%F{${C[RAZOR]}}${S[PL_L]}%f%K{${C[RAZOR]}}%F{${C[VOID]}}%B ${I[OS]}%b %F{${C[WHITE]}}%B%~%b %f%k%F{${C[RAZOR]}}${S[PL_R]}%f"
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 9) RIGHT PROMPT (RPROMPT): INTEL + VCS + FRICTION
|
||||
# -----------------------------------------------------------------------------
|
||||
apex_intel_r() {
|
||||
(( APEX[SHOW_INTEL] )) || return 0
|
||||
if [[ -n "$apex_target_sig" ]]; then
|
||||
print -n "%F{${C[CYAN]}}(${apex_target_sig})%f"
|
||||
elif [[ -n "$apex_mode_sig" ]]; then
|
||||
print -n "%F{${C[CYAN]}}(${apex_mode_sig})%f"
|
||||
elif [[ -n "$apex_venv_name" ]]; then
|
||||
print -n "%F{${C[CYAN]}}(${apex_venv_name})%f"
|
||||
fi
|
||||
}
|
||||
|
||||
apex_vcs_r() {
|
||||
(( APEX[SHOW_VCS] )) || return 0
|
||||
(( apex_in_git )) || return 0
|
||||
|
||||
if [[ -n "$apex_git_op" ]]; then
|
||||
print -n "%F{${C[ALERT]}}${I[GIT]} ${apex_git_branch} ${apex_git_op}%f"
|
||||
return 0
|
||||
fi
|
||||
|
||||
print -n "%F{${C[CYAN]}}${I[GIT]} ${apex_git_branch}%f"
|
||||
|
||||
local mark=""
|
||||
(( apex_git_dirty_ix )) && mark+="+"
|
||||
(( apex_git_dirty_wt )) && mark+="!"
|
||||
[[ -n "$mark" ]] && print -n "%F{${C[GOLD]}} ${mark}%f"
|
||||
|
||||
(( apex_git_up_ok )) && print -n "%F{${C[OK]}} ✓%f"
|
||||
|
||||
if (( APEX[GIT_AHEAD_BEHIND] )); then
|
||||
(( apex_git_ahead > 0 )) && print -n "%F{${C[MUTED]}} ⇡${apex_git_ahead}%f"
|
||||
(( apex_git_behind > 0 )) && print -n "%F{${C[MUTED]}} ⇣${apex_git_behind}%f"
|
||||
fi
|
||||
}
|
||||
|
||||
apex_friction_r() {
|
||||
if (( APEX[SHOW_RO] )) && [[ ! -w . ]]; then
|
||||
print -n "%F{${C[GOLD]}}${I[ROOT]} ro%f"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if (( APEX[SHOW_JOBS] )); then
|
||||
local jc
|
||||
jc=$(jobs -p 2>/dev/null | wc -l | tr -d ' ')
|
||||
if [[ -n "$jc" && "$jc" != "0" ]]; then
|
||||
print -n "%F{${C[MUTED]}}${I[JOBS]} ${jc}%f"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
build_rprompt() {
|
||||
local s out=""
|
||||
local sep="%F{${C[MUTED]}} ${S[DOT]} %f"
|
||||
|
||||
s="$(apex_intel_r)"; [[ -n "$s" ]] && out+="$s"
|
||||
s="$(apex_vcs_r)"; [[ -n "$s" ]] && out+="${out:+$sep}$s"
|
||||
s="$(apex_friction_r)"; [[ -n "$s" ]] && out+="${out:+$sep}$s"
|
||||
|
||||
[[ -n "$out" ]] && out="%F{${C[MUTED]}}[%f${out}%F{${C[MUTED]}}]%f"
|
||||
print -n "$out"
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 10) RADAR (precmd)
|
||||
# -----------------------------------------------------------------------------
|
||||
apex_radar_aar() {
|
||||
(( APEX[SHOW_AAR] )) || return 0
|
||||
|
||||
local ec=$1 cmd="$2" dur="$3"
|
||||
local -i ms=${4:-0}
|
||||
|
||||
local show=0
|
||||
(( ec != 0 )) && show=1
|
||||
[[ -n "$dur" ]] && show=1
|
||||
[[ "$cmd" =~ ${APEX[OPS_RE]} ]] && show=1
|
||||
(( show )) || return 0
|
||||
|
||||
local short; short="$(apex__short_cmd "$cmd")"
|
||||
|
||||
local dur_color="${C[MUTED]}"
|
||||
(( ms >= ${APEX[SLOW_HARD_MS]} )) && dur_color="${C[GOLD]}"
|
||||
|
||||
local dur_chunk=""
|
||||
if [[ -n "$dur" ]]; then
|
||||
if (( ms >= ${APEX[SLOW_HARD_MS]} )); then
|
||||
dur_chunk=" %F{${dur_color}}%B${dur}%b%f"
|
||||
else
|
||||
dur_chunk=" %F{${dur_color}}${dur}%f"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Session commands: don't scream in red for “rc:1”
|
||||
if [[ "$cmd" =~ ${APEX[SESSION_RE]} ]]; then
|
||||
if (( ec == 0 )); then
|
||||
print -P "%F{${C[MUTED]}}${I[RADAR]}%f %F{${C[OK]}}${I[RET]}%f %F{${C[WHITE]}}${short}%f${dur_chunk}"
|
||||
else
|
||||
print -P "%F{${C[MUTED]}}${I[RADAR]}%f %F{${C[GOLD]}}${I[RET]}%f %F{${C[WHITE]}}${short}%f %F{${C[MUTED]}}rc:${ec}%f${dur_chunk}"
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
|
||||
if (( ec == 0 )); then
|
||||
print -P "%F{${C[MUTED]}}${I[RADAR]}%f %F{${C[OK]}}✓%f %F{${C[WHITE]}}${short}%f${dur_chunk}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Signals: 128 + signal number
|
||||
case $ec in
|
||||
130) # SIGINT (Ctrl+C)
|
||||
print -P "%F{${C[MUTED]}}${I[RADAR]}%f %F{${C[CYAN]}}^C%f %F{${C[WHITE]}}${short}%f${dur_chunk}"
|
||||
;;
|
||||
141) # SIGPIPE
|
||||
print -P "%F{${C[MUTED]}}${I[RADAR]}%f %F{${C[MUTED]}}PIPE%f %F{${C[WHITE]}}${short}%f${dur_chunk}"
|
||||
;;
|
||||
143) # SIGTERM
|
||||
print -P "%F{${C[MUTED]}}${I[RADAR]}%f %F{${C[GOLD]}}TERM%f %F{${C[WHITE]}}${short}%f${dur_chunk}"
|
||||
;;
|
||||
*)
|
||||
print -P "%F{${C[MUTED]}}${I[RADAR]}%f %F{${C[ALERT]}}✘ ${ec}%f %F{${C[WHITE]}}${short}%f${dur_chunk}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
apex_radar_context_burst() {
|
||||
(( APEX[SHOW_CONTEXT_BURST] )) || return 0
|
||||
|
||||
local proj_sig; proj_sig="$(apex__project_sig 2>/dev/null || print -r -- "")"
|
||||
|
||||
local emit=0
|
||||
if (( apex_startup_done == 0 )); then
|
||||
(( APEX[STARTUP_BURST] )) && emit=1
|
||||
fi
|
||||
(( apex_pwd_changed )) && emit=1
|
||||
[[ "$apex_venv_name" != "$apex_prev_venv_name" ]] && emit=1
|
||||
[[ "$apex_target_sig" != "$apex_prev_target_sig" ]] && emit=1
|
||||
(( apex_in_git != apex_prev_in_git )) && emit=1
|
||||
[[ "$apex_git_branch" != "$apex_prev_git_branch" ]] && emit=1
|
||||
[[ "$apex_git_op" != "$apex_prev_git_op" ]] && emit=1
|
||||
[[ "$proj_sig" != "$apex_prev_proj_sig" ]] && emit=1
|
||||
|
||||
(( emit )) || return 0
|
||||
|
||||
# If nothing to say, say nothing.
|
||||
if [[ -z "$proj_sig" && -z "$apex_venv_name" && -z "$apex_target_sig" ]] && (( apex_in_git == 0 )); then
|
||||
apex_pwd_changed=0
|
||||
apex_startup_done=1
|
||||
return 0
|
||||
fi
|
||||
|
||||
local out="%F{${C[MUTED]}}${I[RADAR]}%f "
|
||||
|
||||
# Git first
|
||||
if (( apex_in_git )); then
|
||||
if [[ -n "$apex_git_op" ]]; then
|
||||
out+="%F{${C[ALERT]}}${I[GIT]} ${apex_git_branch} ${apex_git_op}%f"
|
||||
else
|
||||
out+="%F{${C[CYAN]}}${I[GIT]} ${apex_git_branch}%f"
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ -n "$proj_sig" ]] && out+="${out:+ %F{${C[MUTED]}}·%f }%F{${C[MUTED]}}${proj_sig}%f"
|
||||
[[ -n "$apex_venv_name" ]] && out+="${out:+ %F{${C[MUTED]}}·%f }%F{${C[CYAN]}}(${apex_venv_name})%f"
|
||||
[[ -n "$apex_target_sig" ]] && out+="${out:+ %F{${C[MUTED]}}·%f }%F{${C[CYAN]}}(${apex_target_sig})%f"
|
||||
|
||||
print -P "$out"
|
||||
|
||||
apex_prev_venv_name="$apex_venv_name"
|
||||
apex_prev_target_sig="$apex_target_sig"
|
||||
apex_prev_in_git="$apex_in_git"
|
||||
apex_prev_git_branch="$apex_git_branch"
|
||||
apex_prev_git_op="$apex_git_op"
|
||||
apex_prev_proj_sig="$proj_sig"
|
||||
|
||||
apex_pwd_changed=0
|
||||
apex_startup_done=1
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 11) HOOKS
|
||||
# -----------------------------------------------------------------------------
|
||||
apex_preexec_hook() {
|
||||
apex_has_run_cmd=1
|
||||
apex_cmd_start=${EPOCHREALTIME:-$EPOCHSECONDS}
|
||||
apex_last_cmd="$1"
|
||||
}
|
||||
|
||||
apex_chpwd_hook() {
|
||||
apex_pwd_changed=1
|
||||
}
|
||||
|
||||
apex_precmd_hook() {
|
||||
local ec=$?
|
||||
|
||||
apex_update_intel
|
||||
apex_git_update
|
||||
|
||||
# Did a command actually run since the last prompt?
|
||||
local ran=0
|
||||
(( apex_has_run_cmd )) && ran=1
|
||||
|
||||
if (( ran )); then
|
||||
local now=${EPOCHREALTIME:-$EPOCHSECONDS}
|
||||
local -i ms
|
||||
ms=$(( (now - apex_cmd_start) * 1000 ))
|
||||
|
||||
# Show time if: slow OR ops OR failed.
|
||||
local dur=""
|
||||
if (( ms >= ${APEX[SLOW_SOFT_MS]} )) || [[ "$apex_last_cmd" =~ ${APEX[OPS_RE]} ]] || (( ec != 0 )); then
|
||||
dur="$(printf "%.2fs" $(( ms / 1000.0 )))"
|
||||
fi
|
||||
|
||||
apex_radar_aar $ec "$apex_last_cmd" "$dur" $ms
|
||||
|
||||
apex_has_run_cmd=0
|
||||
|
||||
# Spacer between AAR and context burst / prompt.
|
||||
print -r -- ""
|
||||
fi
|
||||
|
||||
apex_radar_context_burst
|
||||
}
|
||||
|
||||
autoload -Uz add-zsh-hook
|
||||
add-zsh-hook preexec apex_preexec_hook
|
||||
add-zsh-hook precmd apex_precmd_hook
|
||||
add-zsh-hook chpwd apex_chpwd_hook
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 12) PROMPT BUILD
|
||||
# -----------------------------------------------------------------------------
|
||||
build_prompt() {
|
||||
local ec=$?
|
||||
|
||||
# Line 1: identity + territory (left)
|
||||
print -n "$(apex_identity)"
|
||||
print -n "$(apex_territory)"
|
||||
print -n $'
|
||||
'
|
||||
|
||||
# Line 2: trigger posture
|
||||
if (( EUID == 0 )); then
|
||||
print -n "%F{${C[PURPLE]}}❯%f "
|
||||
elif (( ec != 0 )); then
|
||||
print -n "%F{${C[ALERT]}}❯%f "
|
||||
else
|
||||
print -n "%F{${C[CYAN]}}❯%f "
|
||||
fi
|
||||
}
|
||||
|
||||
PROMPT='$(build_prompt)'
|
||||
RPROMPT='$(build_rprompt)'
|
||||
@@ -56,8 +56,6 @@ APEX[SHOW_JOBS]=1
|
||||
APEX[SHOW_RO]=1
|
||||
APEX[GIT_AHEAD_BEHIND]=1
|
||||
|
||||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=${C[MUTED]}"
|
||||
|
||||
# Ops commands (also match wrappers like sudo/doas/command)
|
||||
APEX[OPS_RE]='^((sudo|doas|command)[[:space:]]+)*((pacman|yay|paru|apt|dnf|brew|systemctl|docker|kubectl|helm|git))([[:space:]]|$)'
|
||||
|
||||
@@ -102,7 +100,8 @@ typeset -g apex_prev_proj_sig=""
|
||||
# -----------------------------------------------------------------------------
|
||||
apex__short_cmd() {
|
||||
local s="$1"
|
||||
s="${s//$'\n'/ }"
|
||||
s="${s//$'
|
||||
'/ }"
|
||||
s="${s#"${s%%[![:space:]]*}"}" # ltrim
|
||||
s="${s%"${s##*[![:space:]]}"}" # rtrim
|
||||
print -r -- "${s[1,90]}"
|
||||
@@ -353,7 +352,7 @@ apex_radar_aar() {
|
||||
143) # SIGTERM
|
||||
print -P "%F{${C[MUTED]}}${I[RADAR]}%f %F{${C[GOLD]}}TERM%f %F{${C[WHITE]}}${short}%f${dur_chunk}"
|
||||
;;
|
||||
*)
|
||||
*)
|
||||
print -P "%F{${C[MUTED]}}${I[RADAR]}%f %F{${C[ALERT]}}✘ ${ec}%f %F{${C[WHITE]}}${short}%f${dur_chunk}"
|
||||
;;
|
||||
esac
|
||||
@@ -472,7 +471,8 @@ build_prompt() {
|
||||
# Line 1: identity + territory (left)
|
||||
print -n "$(apex_identity)"
|
||||
print -n "$(apex_territory)"
|
||||
print -n $'\n'
|
||||
print -n $'
|
||||
'
|
||||
|
||||
# Line 2: trigger posture
|
||||
if (( EUID == 0 )); then
|
||||
@@ -485,4 +485,4 @@ build_prompt() {
|
||||
}
|
||||
|
||||
PROMPT='$(build_prompt)'
|
||||
RPROMPT='$(build_rprompt)'
|
||||
RPROMPT='$(build_rprompt)'
|
||||
@@ -28,4 +28,4 @@ bindkey -M vicmd 'k' history-substring-search-up
|
||||
bindkey -M vicmd 'j' history-substring-search-down
|
||||
|
||||
# Initialize Apex Neon Theme
|
||||
source ~/.config/zsh/apex-neon.zsh
|
||||
source ~/.config/zsh/{{ .chezmoi.config.data.theme }}.zsh
|
||||
@@ -5,6 +5,6 @@
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"theme": "/home/mpuchstein/Dev/Themes/apex/dist/gemini/apex-neon.json"
|
||||
"theme": "{{ .chezmoi.homeDir }}/.gemini/themes/{{ .chezmoi.config.data.theme }}.json"
|
||||
}
|
||||
}
|
||||
24
dot_gemini/themes/apex-aeon.json
Normal file
24
dot_gemini/themes/apex-aeon.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Apex Aeon",
|
||||
"type": "custom",
|
||||
"Background": "#f5f5f5",
|
||||
"Foreground": "#0a0a0a",
|
||||
"LightBlue": "#33bccc",
|
||||
"AccentBlue": "#007a88",
|
||||
"AccentPurple": "#7a3cff",
|
||||
"AccentCyan": "#33bccc",
|
||||
"AccentGreen": "#00b377",
|
||||
"AccentYellow": "#d18f00",
|
||||
"AccentRed": "#ff0044",
|
||||
"Comment": "#737373",
|
||||
"Gray": "#a0a0a0",
|
||||
"DiffAdded": "#00b377",
|
||||
"DiffRemoved": "#ff0044",
|
||||
"DiffModified": "#d18f00",
|
||||
"text": {
|
||||
"primary": "#0a0a0a",
|
||||
"secondary": "#737373",
|
||||
"accent": "#007a88",
|
||||
"response": "#0a0a0a"
|
||||
}
|
||||
}
|
||||
24
dot_gemini/themes/apex-neon.json
Normal file
24
dot_gemini/themes/apex-neon.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "Apex Neon",
|
||||
"type": "custom",
|
||||
"Background": "#050505",
|
||||
"Foreground": "#ededed",
|
||||
"LightBlue": "#5af3ff",
|
||||
"AccentBlue": "#00eaff",
|
||||
"AccentPurple": "#9d00ff",
|
||||
"AccentCyan": "#5af3ff",
|
||||
"AccentGreen": "#00ff99",
|
||||
"AccentYellow": "#ffb700",
|
||||
"AccentRed": "#ff0044",
|
||||
"Comment": "#737373",
|
||||
"Gray": "#404040",
|
||||
"DiffAdded": "#00ff99",
|
||||
"DiffRemoved": "#ff0044",
|
||||
"DiffModified": "#ffb700",
|
||||
"text": {
|
||||
"primary": "#ededed",
|
||||
"secondary": "#737373",
|
||||
"accent": "#00eaff",
|
||||
"response": "#ededed"
|
||||
}
|
||||
}
|
||||
100
dot_local/bin/executable_refresh-apex-themes
Normal file
100
dot_local/bin/executable_refresh-apex-themes
Normal file
@@ -0,0 +1,100 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
apex_dist="${APEX_DIST_DIR:-$HOME/Dev/Themes/apex/dist}"
|
||||
|
||||
if [[ ! -d "$apex_dist" ]]; then
|
||||
echo "apex dist not found: $apex_dist" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source_dir="${CHEZMOI_SOURCE_DIR:-}"
|
||||
if [[ -z "$source_dir" ]] && command -v chezmoi >/dev/null 2>&1; then
|
||||
source_dir="$(chezmoi source-path 2>/dev/null || true)"
|
||||
fi
|
||||
if [[ -z "$source_dir" ]] && [[ -d "./dot_config" ]]; then
|
||||
source_dir="$(pwd)"
|
||||
fi
|
||||
if [[ -z "$source_dir" ]]; then
|
||||
echo "could not determine chezmoi source dir (set CHEZMOI_SOURCE_DIR)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "$source_dir/dot_config/alacritty/themes"
|
||||
cp "$apex_dist/alacritty/"*.toml "$source_dir/dot_config/alacritty/themes/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/btop/themes"
|
||||
cp "$apex_dist/btop/"*.theme "$source_dir/dot_config/btop/themes/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/fuzzel/themes"
|
||||
for src in "$apex_dist"/fuzzel/*-fuzzel.ini; do
|
||||
base="$(basename "$src" -fuzzel.ini)"
|
||||
cp "$src" "$source_dir/dot_config/fuzzel/themes/${base}.ini"
|
||||
done
|
||||
|
||||
mkdir -p "$source_dir/dot_config/gtk-4.0"
|
||||
cp "$apex_dist/gtk4/gtk.css" "$source_dir/dot_config/gtk-4.0/gtk.css"
|
||||
|
||||
mkdir -p "$source_dir/dot_gemini/themes"
|
||||
cp "$apex_dist/gemini/"*.json "$source_dir/dot_gemini/themes/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/ghostty/themes"
|
||||
cp "$apex_dist/ghostty/"* "$source_dir/dot_config/ghostty/themes/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/hypr/hyprland.d"
|
||||
for src in "$apex_dist"/hyprland/*-colors.conf; do
|
||||
base="$(basename "$src" -colors.conf)"
|
||||
cp "$src" "$source_dir/dot_config/hypr/hyprland.d/theme-${base}.conf"
|
||||
done
|
||||
|
||||
mkdir -p "$source_dir/dot_config/kitty/themes"
|
||||
cp "$apex_dist/kitty/"*.conf "$source_dir/dot_config/kitty/themes/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/nvim/colors"
|
||||
cp "$apex_dist/nvim/colors/"*.lua "$source_dir/dot_config/nvim/colors/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/owlry/themes"
|
||||
cp "$apex_dist/owlry/"*.css "$source_dir/dot_config/owlry/themes/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/sherlock/themes"
|
||||
cp "$apex_dist/sherlock/"*.css "$source_dir/dot_config/sherlock/themes/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/spicetify/private_Themes/apex-neon"
|
||||
cp "$apex_dist/spicetify/apex-neon-color.ini" "$source_dir/dot_config/spicetify/private_Themes/apex-neon/color.ini"
|
||||
cp "$apex_dist/spicetify/apex-neon-user.css" "$source_dir/dot_config/spicetify/private_Themes/apex-neon/user.css"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/spicetify/private_Themes/apex-aeon"
|
||||
cp "$apex_dist/spicetify/apex-aeon-color.ini" "$source_dir/dot_config/spicetify/private_Themes/apex-aeon/color.ini"
|
||||
cp "$apex_dist/spicetify/apex-aeon-user.css" "$source_dir/dot_config/spicetify/private_Themes/apex-aeon/user.css"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/swaync/themes"
|
||||
for src in "$apex_dist"/swaync/*-style.css; do
|
||||
base="$(basename "$src" -style.css)"
|
||||
cp "$src" "$source_dir/dot_config/swaync/themes/${base}.css"
|
||||
done
|
||||
|
||||
mkdir -p "$source_dir/dot_config/waybar/themes"
|
||||
for src in "$apex_dist"/waybar/*-colors.css; do
|
||||
base="$(basename "$src" -colors.css)"
|
||||
cp "$src" "$source_dir/dot_config/waybar/themes/${base}.css"
|
||||
done
|
||||
|
||||
mkdir -p "$source_dir/dot_config/wezterm/colors"
|
||||
cp "$apex_dist/wezterm/"*.toml "$source_dir/dot_config/wezterm/colors/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/zathura/themes"
|
||||
for src in "$apex_dist"/zathura/*-zathurarc; do
|
||||
base="$(basename "$src" -zathurarc)"
|
||||
cp "$src" "$source_dir/dot_config/zathura/themes/${base}.zathurarc"
|
||||
done
|
||||
|
||||
mkdir -p "$source_dir/dot_config/zed/themes"
|
||||
cp "$apex_dist/zed/"*.json "$source_dir/dot_config/zed/themes/"
|
||||
|
||||
mkdir -p "$source_dir/dot_config/zsh"
|
||||
for src in "$apex_dist"/zsh/*.zsh-theme; do
|
||||
base="$(basename "$src" .zsh-theme)"
|
||||
cp "$src" "$source_dir/dot_config/zsh/${base}.zsh"
|
||||
done
|
||||
|
||||
printf "Refreshed apex themes from %s -> %s\n" "$apex_dist" "$source_dir"
|
||||
Reference in New Issue
Block a user