chore: track dist outputs

This commit is contained in:
s0wlz (Matthias Puchstein)
2025-12-31 06:22:01 +01:00
parent f4566fa638
commit ed658e43b3
34 changed files with 3816 additions and 1 deletions

1
.gitignore vendored
View File

@@ -1,4 +1,3 @@
dist/
.venv/
__pycache__/
*.pyc

3
dist/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
# Release artifacts (tarballs)
releases/
*.tar.gz

63
dist/alacritty/apex-aeon.toml vendored Normal file
View 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"

63
dist/alacritty/apex-neon.toml vendored Normal file
View File

@@ -0,0 +1,63 @@
# APEX NEON — Alacritty theme (colors only)
[colors.primary]
background = "#050505"
foreground = "#ededed"
dim_foreground = "#737373"
bright_foreground = "#ffffff"
[colors.cursor]
text = "#050505"
cursor = "#ff0044"
[colors.vi_mode_cursor]
text = "#050505"
cursor = "#00eaff"
[colors.selection]
text = "#050505"
background = "#ff0044"
[colors.search.matches]
foreground = "#050505"
background = "#ff0044"
[colors.search.focused_match]
foreground = "#050505"
background = "#ffb700"
[colors.hints.start]
foreground = "#050505"
background = "#ffb700"
[colors.hints.end]
foreground = "#050505"
background = "#00eaff"
[colors.line_indicator]
foreground = "None"
background = "None"
[colors.footer_bar]
foreground = "#ededed"
background = "#141414"
[colors.normal]
black = "#050505"
red = "#ff0044"
green = "#00ff99"
yellow = "#ffb700"
blue = "#00eaff"
magenta = "#9d00ff"
cyan = "#00eaff"
white = "#ededed"
[colors.bright]
black = "#737373"
red = "#ff8899"
green = "#2bffb2"
yellow = "#ffd24d"
blue = "#5af3ff"
magenta = "#c84dff"
cyan = "#5af3ff"
white = "#ffffff"

89
dist/btop/apex-aeon.theme vendored Normal file
View 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
dist/btop/apex-neon.theme vendored Normal file
View 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"

15
dist/fuzzel/apex-aeon-fuzzel.ini vendored Normal file
View 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

15
dist/fuzzel/apex-neon-fuzzel.ini vendored Normal file
View File

@@ -0,0 +1,15 @@
# Apex Neon — Fuzzel Theme
# DNA: State over Decoration
[colors]
background=050505ff
text=edededff
match=00eaffff
selection=ff0044ff
selection-text=050505ff
selection-match=00eaffff
border=00eaffff
[border]
width=2
radius=0

24
dist/gemini/apex-aeon.json vendored Normal file
View 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
dist/gemini/apex-neon.json vendored Normal file
View 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"
}
}

129
dist/gtk4/gtk.css vendored Normal file
View 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;
}
}

85
dist/hyprland/apex-aeon-colors.conf vendored Normal file
View 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)

85
dist/hyprland/apex-neon-colors.conf vendored Normal file
View File

@@ -0,0 +1,85 @@
#############################
### APEX NEON THEME ###
#############################
# The Void (Backgrounds)
# Pure, unadulterated darkness. None of that "grey-blue" nonsense.
$base = rgb(050505)
$baseAlpha = 050505
$surface = rgb(141414)
$surfaceAlpha = 141414
$overlay = rgb(262626)
$overlayAlpha = 262626
$muted = rgb(404040)
$mutedAlpha = 404040
$subtle = rgb(404040)
$subtleAlpha = 404040
# The Signal (Text)
# Stark white for maximum readability.
$text = rgb(ededed)
$textAlpha = ededed
# Accents (Aggressive)
# "Razor Red" - For errors or active borders. Blood-like.
$love = rgb(ff0044)
$loveAlpha = ff0044
# "Warning Gold"
$gold = rgb(ffb700)
$goldAlpha = ffb700
# "Toxic Green" - Because nature isn't always nice.
$pine = rgb(00ff99)
$pineAlpha = 00ff99
# "Electric Cyan" - Cold, digital logic.
$foam = rgb(00eaff)
$foamAlpha = 00eaff
# "Deep Void Purple"
$iris = rgb(9d00ff)
$irisAlpha = 9d00ff
# "Pale Rose" (Mapped to alert color)
$rose = rgb(ff8899)
$roseAlpha = ff8899
# Highlight variants
$highlight_low = rgb(141414)
$highlight_lowAlpha = 141414
$highlight_med = rgb(262626)
$highlight_medAlpha = 262626
$highlight_high = rgb(404040)
$highlight_highAlpha = 404040
# 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)

66
dist/kitty/apex-aeon.conf vendored Normal file
View 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 (07)
# 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 (815)
# 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

66
dist/kitty/apex-neon.conf vendored Normal file
View File

@@ -0,0 +1,66 @@
## APEX NEON - KITTY THEME ##
## Spec-accurate: color = state, not decoration
# --- Core ---
foreground #ededed
background #050505
# Selection: "target locked"
selection_background #ff0044
selection_foreground #050505
# Cursor: Razor Red beam
cursor #ff0044
cursor_text_color #050505
cursor_shape beam
# URLs: informational cyan
url_color #00eaff
# Borders (optional)
active_border_color #ff0044
inactive_border_color #262626
# Optional: subtle UI hint for visual bell
visual_bell_color #ff8899
# Spacing
window_padding_width 4
# --- 16-COLOR ANSI TABLE (Apex Neon spec) ---
# Normal bank (07)
# color0: Black (Void)
color0 #050505
# color1: Red (Razor)
color1 #ff0044
# color2: Green (OK)
color2 #00ff99
# color3: Yellow (Gold)
color3 #ffb700
# color4: Blue (Info)
color4 #00eaff
# color5: Magenta (Purple)
color5 #9d00ff
# color6: Cyan (Info mapped)
color6 #00eaff
# color7: White (Stark)
color7 #ededed
# Bright bank (815)
# color8: Bright black (UI separators)
color8 #737373
# color9: Bright red (Alerts)
color9 #ff8899
# color10: Bright green (Active success)
color10 #2bffb2
# color11: Bright yellow (Urgent warning)
color11 #ffd24d
# color12: Bright blue (Active info)
color12 #5af3ff
# color13: Bright magenta (Elevated special)
color13 #c84dff
# color14: Bright cyan (Active tech signal)
color14 #5af3ff
# color15: Bright white (Extreme highlight)
color15 #ffffff

164
dist/nvim/colors/apex-aeon.lua vendored Normal file
View 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

164
dist/nvim/colors/apex-neon.lua vendored Normal file
View File

@@ -0,0 +1,164 @@
-- Apex Neon: Standalone Theme Engine
-- Philosophy: State over Decoration. Red is Presence. Cyan is Data.
local M = {}
M.palette = {
-- The Void
void = "#050505", -- Background
panel = "#141414", -- Dark Surface (Statusline/Gutter)
border = "#262626", -- Muted Border
stealth = "#404040", -- Comments / Ignored
-- The Signal
text = "#ededed", -- Stark White
dim = "#737373", -- Muted Text
-- The Hunter (Presence)
razor = "#ff0044", -- PRIMARY: Cursor, Current Match, Active Border
alert = "#ff8899", -- ERROR: Readable text on Red
-- The HUD (Data)
tech = "#00eaff", -- INFO: Selection, Search Match, Constants
toxic = "#00ff99", -- SUCCESS: Strings
amber = "#ffb700", -- WARNING: Types, Search
azure = "#0088cc", -- STRUCT: Functions (Deep Blue)
sacred = "#9d00ff", -- 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 = "dark"
vim.g.colors_name = "apex-neon"
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

171
dist/owlry/apex-aeon.css vendored Normal file
View 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);
}

171
dist/owlry/apex-neon.css vendored Normal file
View File

@@ -0,0 +1,171 @@
/*
* Owlry - Apex Neon 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-neon" in config.toml
*/
:root {
/* Core surfaces */
--owlry-bg: #050505;
--owlry-bg-secondary: #141414;
--owlry-border: #262626;
--owlry-text: #ededed;
--owlry-text-secondary: #737373;
/* The Predator - primary accent */
--owlry-accent: #ff0044;
--owlry-accent-bright: #ff8899;
/* Provider badges - mapped to Apex semantics */
--owlry-badge-app: #00eaff; /* Cyan: apps are informational */
--owlry-badge-bookmark: #ffb700; /* Yellow: bookmarks need attention */
--owlry-badge-calc: #ffd24d; /* Bright Yellow: calculator results */
--owlry-badge-clip: #9d00ff; /* Purple: clipboard is special */
--owlry-badge-cmd: #9d00ff; /* Purple: commands are elevated */
--owlry-badge-dmenu: #00ff99; /* Green: dmenu is success/pipe */
--owlry-badge-emoji: #c84dff; /* Bright Purple: emoji is special */
--owlry-badge-file: #5af3ff; /* Bright Cyan: file search is active info */
--owlry-badge-script: #2bffb2; /* Bright Green: scripts execute successfully */
--owlry-badge-ssh: #00eaff; /* Cyan: SSH is technical/info */
--owlry-badge-sys: #ff0044; /* Red: system actions are critical */
--owlry-badge-uuctl: #ffb700; /* Yellow: uuctl requires attention */
--owlry-badge-web: #00eaff; /* Cyan: web is informational */
/* Widget badges */
--owlry-badge-media: #c84dff; /* Bright Purple: media is special */
--owlry-badge-weather: #5af3ff; /* Bright Cyan: weather is active info */
--owlry-badge-pomo: #ff8899; /* Alert Red: pomodoro demands attention */
}
.owlry-main {
background-color: rgba(5, 5, 5, 0.98);
border: 1px solid rgba(38, 38, 38, 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(20, 20, 20, 0.9);
border: 2px solid rgba(38, 38, 38, 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(20, 20, 20, 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, 234, 255, 0.15);
color: var(--owlry-badge-app);
}
.owlry-badge-bookmark {
background-color: rgba(255, 183, 0, 0.15);
color: var(--owlry-badge-bookmark);
}
.owlry-badge-calc {
background-color: rgba(255, 210, 77, 0.15);
color: var(--owlry-badge-calc);
}
.owlry-badge-clip {
background-color: rgba(157, 0, 255, 0.15);
color: var(--owlry-badge-clip);
}
.owlry-badge-cmd {
background-color: rgba(157, 0, 255, 0.15);
color: var(--owlry-badge-cmd);
}
.owlry-badge-dmenu {
background-color: rgba(0, 255, 153, 0.15);
color: var(--owlry-badge-dmenu);
}
.owlry-badge-emoji {
background-color: rgba(200, 77, 255, 0.15);
color: var(--owlry-badge-emoji);
}
.owlry-badge-file {
background-color: rgba(90, 243, 255, 0.15);
color: var(--owlry-badge-file);
}
.owlry-badge-script {
background-color: rgba(43, 255, 178, 0.15);
color: var(--owlry-badge-script);
}
.owlry-badge-ssh {
background-color: rgba(0, 234, 255, 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(255, 183, 0, 0.15);
color: var(--owlry-badge-uuctl);
}
.owlry-badge-web {
background-color: rgba(0, 234, 255, 0.15);
color: var(--owlry-badge-web);
}
/* Widget badges */
.owlry-badge-media {
background-color: rgba(200, 77, 255, 0.15);
color: var(--owlry-badge-media);
}
.owlry-badge-weather {
background-color: rgba(90, 243, 255, 0.15);
color: var(--owlry-badge-weather);
}
.owlry-badge-pomo {
background-color: rgba(255, 136, 153, 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);
}

126
dist/sherlock/apex-aeon.css vendored Normal file
View 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;
}

126
dist/sherlock/apex-neon.css vendored Normal file
View File

@@ -0,0 +1,126 @@
/* Apex Neon - Sherlock Theme (Parser Compliant) */
/* 1. PALETTE DEFINITIONS */
@define-color apex_base #050505;
@define-color apex_surface #141414;
@define-color apex_overlay #262626;
@define-color apex_muted #404040;
@define-color apex_text #ededed;
@define-color apex_love #ff0044;
@define-color apex_foam #00eaff;
@define-color apex_gold #ffb700;
/* 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: #050505;
}
/* 3. LIST & SELECTION */
listview {
background-color: transparent;
}
/* The actual row selection - Informational */
listview > row:selected {
background-color: @apex_foam;
color: #050505;
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: #050505;
}
/* Force TEXT on selection */
listview > row:selected label,
listview > row:selected .title,
listview > row:selected .description,
listview > row:selected .subtitle {
color: #050505;
}
/* Force ICONS on selection */
listview > row:selected image,
listview > row:selected .icon {
color: #050505;
}
/* 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;
}

17
dist/spicetify/apex-aeon-color.ini vendored Normal file
View 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
dist/spicetify/apex-aeon-user.css vendored Normal file
View File

@@ -0,0 +1 @@
/* Apex Aeon - Spicetify overrides */

17
dist/spicetify/apex-neon-color.ini vendored Normal file
View File

@@ -0,0 +1,17 @@
[apex-neon]
text = ededed
subtext = 404040
main = 050505
sidebar = 050505
player = 050505
card = 141414
shadow = 000000
selected-row = 00eaff
button = 00eaff
button-active = ff0044
button-disabled = 404040
tab-active = 262626
notification = 00eaff
notification-error = ff0044
misc = ffb700

1
dist/spicetify/apex-neon-user.css vendored Normal file
View File

@@ -0,0 +1 @@
/* Apex Neon - Spicetify overrides */

146
dist/swaync/apex-aeon-style.css vendored Normal file
View File

@@ -0,0 +1,146 @@
/* Apex Aeon — SwayNC Theme */
/* 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 alert #ff4d6d;
@define-color panel #e8e8e8;
@define-color border #737373;
@define-color stealth #a0a0a0;
@define-color dim #737373;
/* SwayNC Specific Variables */
@define-color noti-bg @panel;
@define-color noti-fg @stark;
@define-color noti-border-color @border;
@define-color noti-bg-hover @border;
@define-color noti-bg-focus @border;
@define-color noti-bg-critical @razor;
@define-color noti-fg-critical @void;
@define-color mpris-bg @panel;
@define-color mpris-fg @stark;
@define-color bg-selected @razor;
@define-color fg-selected @void;
/* Base Structure */
* {
font-family: "JetBrainsMono Nerd Font";
font-weight: 500;
}
.control-center {
background: @void;
border: 2px solid @razor;
border-radius: 0;
margin: 10px;
}
.control-center-list {
background: transparent;
}
.notification {
background: @noti-bg;
border: 1px solid @noti-border-color;
border-radius: 0;
margin: 5px;
padding: 10px;
}
.notification-content {
background: transparent;
}
.notification-default-action:hover {
background: @noti-bg-hover;
}
.notification-critical {
background: @noti-bg-critical;
color: @noti-fg-critical;
}
.notification-critical .notification-content {
color: @noti-fg-critical;
}
.notification-group {
background: transparent;
}
.notification-group-headers {
color: @dim;
}
.notification-group-icon {
color: @razor;
}
.mpris {
background: @mpris-bg;
border: 1px solid @border;
border-radius: 0;
margin: 5px;
}
.mpris-title {
color: @stark;
font-weight: bold;
}
.mpris-subtitle {
color: @dim;
}
.widget-title {
color: @razor;
font-weight: bold;
font-size: 1.2rem;
}
.widget-label {
color: @stark;
}
.widget-dnd {
color: @tech;
}
.widget-mpris {
background: transparent;
}
.widget-buttons-grid {
background: @panel;
padding: 10px;
margin: 5px;
}
.widget-buttons-grid > button {
background: @void;
border: 1px solid @border;
border-radius: 0;
color: @stark;
}
.widget-buttons-grid > button:hover {
background: @razor;
color: @void;
}
.widget-menubar > button {
background: transparent;
color: @stark;
}
.widget-menubar > button:hover {
background: @razor;
color: @void;
}

146
dist/swaync/apex-neon-style.css vendored Normal file
View File

@@ -0,0 +1,146 @@
/* Apex Neon — SwayNC Theme */
/* 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 alert #ff8899;
@define-color panel #141414;
@define-color border #262626;
@define-color stealth #404040;
@define-color dim #737373;
/* SwayNC Specific Variables */
@define-color noti-bg @panel;
@define-color noti-fg @stark;
@define-color noti-border-color @border;
@define-color noti-bg-hover @border;
@define-color noti-bg-focus @border;
@define-color noti-bg-critical @razor;
@define-color noti-fg-critical @void;
@define-color mpris-bg @panel;
@define-color mpris-fg @stark;
@define-color bg-selected @razor;
@define-color fg-selected @void;
/* Base Structure */
* {
font-family: "JetBrainsMono Nerd Font";
font-weight: 500;
}
.control-center {
background: @void;
border: 2px solid @razor;
border-radius: 0;
margin: 10px;
}
.control-center-list {
background: transparent;
}
.notification {
background: @noti-bg;
border: 1px solid @noti-border-color;
border-radius: 0;
margin: 5px;
padding: 10px;
}
.notification-content {
background: transparent;
}
.notification-default-action:hover {
background: @noti-bg-hover;
}
.notification-critical {
background: @noti-bg-critical;
color: @noti-fg-critical;
}
.notification-critical .notification-content {
color: @noti-fg-critical;
}
.notification-group {
background: transparent;
}
.notification-group-headers {
color: @dim;
}
.notification-group-icon {
color: @razor;
}
.mpris {
background: @mpris-bg;
border: 1px solid @border;
border-radius: 0;
margin: 5px;
}
.mpris-title {
color: @stark;
font-weight: bold;
}
.mpris-subtitle {
color: @dim;
}
.widget-title {
color: @razor;
font-weight: bold;
font-size: 1.2rem;
}
.widget-label {
color: @stark;
}
.widget-dnd {
color: @tech;
}
.widget-mpris {
background: transparent;
}
.widget-buttons-grid {
background: @panel;
padding: 10px;
margin: 5px;
}
.widget-buttons-grid > button {
background: @void;
border: 1px solid @border;
border-radius: 0;
color: @stark;
}
.widget-buttons-grid > button:hover {
background: @razor;
color: @void;
}
.widget-menubar > button {
background: transparent;
color: @stark;
}
.widget-menubar > button:hover {
background: @razor;
color: @void;
}

25
dist/waybar/apex-aeon-colors.css vendored Normal file
View 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
dist/waybar/apex-neon-colors.css vendored Normal file
View 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;

46
dist/zathura/apex-aeon-zathurarc vendored Normal file
View 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
dist/zathura/apex-neon-zathurarc vendored Normal file
View 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"

632
dist/zed/apex.json vendored Normal file
View File

@@ -0,0 +1,632 @@
{
"$schema": "https://zed.dev/schema/themes/v0.2.0.json",
"name": "Apex",
"author": "S0wlz (Owlibou)",
"themes": [
{
"name": "Apex Neon",
"appearance": "dark",
"style": {
"background": "#050505",
"background.appearance": "opaque",
"surface.background": "#141414",
"elevated_surface.background": "#141414",
"panel.background": "#141414",
"panel.focused_border": "#ff0044",
"panel.indent_guide": "#26262666",
"panel.indent_guide_active": "#737373aa",
"panel.indent_guide_hover": "#737373cc",
"tab_bar.background": "#141414",
"tab.inactive_background": "#141414",
"tab.active_background": "#050505",
"title_bar.background": "#050505",
"title_bar.inactive_background": "#141414",
"toolbar.background": "#141414",
"status_bar.background": "#141414",
"border": "#262626",
"border.variant": "#141414",
"border.focused": "#ff0044",
"border.selected": "#ff0044",
"border.disabled": "#141414",
"border.transparent": "transparent",
"text": "#ededed",
"text.muted": "#737373",
"text.placeholder": "#737373",
"text.disabled": "#737373",
"text.accent": "#00eaff",
"icon": "#ededed",
"icon.muted": "#737373",
"icon.placeholder": "#737373",
"icon.disabled": "#737373",
"icon.accent": "#00eaff",
"accents": [
"#ff0044",
"#00eaff",
"#9d00ff",
"#00ff99",
"#ffb700"
],
"element.background": "#141414",
"element.hover": "#262626",
"element.active": "#262626",
"element.selected": "#262626",
"element.disabled": "#141414",
"ghost_element.background": null,
"ghost_element.hover": "#26262666",
"ghost_element.active": "#26262688",
"ghost_element.selected": "#26262666",
"ghost_element.disabled": null,
"drop_target.background": "#00eaff22",
"editor.background": "#050505",
"editor.foreground": "#ededed",
"editor.gutter.background": "#050505",
"editor.subheader.background": "#141414",
"editor.active_line.background": "#141414",
"editor.highlighted_line.background": "#141414",
"editor.line_number": "#737373",
"editor.active_line_number": "#ff0044",
"editor.wrap_guide": "#262626",
"editor.active_wrap_guide": "#737373",
"editor.indent_guide": "#26262666",
"editor.indent_guide_active": "#737373aa",
"editor.invisible": "#26262688",
"editor.document_highlight.read_background": "#00eaff22",
"editor.document_highlight.write_background": "#ff004422",
"editor.document_highlight.bracket_background": "#26262666",
"search.match_background": "#00eaff33",
"scrollbar.track.background": "#050505",
"scrollbar.track.border": "#050505",
"scrollbar.thumb.background": "#262626aa",
"scrollbar.thumb.hover_background": "#404040",
"scrollbar.thumb.border": "transparent",
"pane.focused_border": "#ff0044",
"pane_group.border": "#262626",
"link_text.hover": "#5af3ff",
"success": "#00ff99",
"success.background": "#00ff991a",
"success.border": "#00ff99",
"warning": "#ffb700",
"warning.background": "#ffb7001a",
"warning.border": "#ffb700",
"error": "#ff8899",
"error.background": "#ff88991a",
"error.border": "#ff8899",
"info": "#00eaff",
"info.background": "#00eaff1a",
"info.border": "#00eaff",
"hint": "#0088cc",
"hint.background": "#0088cc1a",
"hint.border": "#0088cc",
"predictive": "#0088cc",
"predictive.background": "#0088cc1a",
"predictive.border": "#0088cc",
"unreachable": "#9d00ff",
"unreachable.background": "#9d00ff1a",
"unreachable.border": "#9d00ff",
"created": "#00ff99",
"created.background": "#00ff991a",
"created.border": "#00ff99",
"modified": "#ffb700",
"modified.background": "#ffb7001a",
"modified.border": "#ffb700",
"deleted": "#ff8899",
"deleted.background": "#ff88991a",
"deleted.border": "#ff8899",
"renamed": "#00eaff",
"renamed.background": "#00eaff1a",
"renamed.border": "#00eaff",
"conflict": "#ff8899",
"conflict.background": "#ff88991a",
"conflict.border": "#ff8899",
"ignored": "#737373",
"ignored.background": "#7373731a",
"ignored.border": "#262626",
"hidden": "#737373",
"hidden.background": "#7373731a",
"hidden.border": "#262626",
"terminal.background": "#050505",
"terminal.foreground": "#ededed",
"terminal.bright_foreground": "#ffffff",
"terminal.dim_foreground": "#737373",
"terminal.ansi.background": "#050505",
"terminal.ansi.black": "#050505",
"terminal.ansi.red": "#ff0044",
"terminal.ansi.green": "#00ff99",
"terminal.ansi.yellow": "#ffb700",
"terminal.ansi.blue": "#00eaff",
"terminal.ansi.magenta": "#9d00ff",
"terminal.ansi.cyan": "#00eaff",
"terminal.ansi.white": "#ededed",
"terminal.ansi.bright_black": "#737373",
"terminal.ansi.bright_red": "#ff8899",
"terminal.ansi.bright_green": "#2bffb2",
"terminal.ansi.bright_yellow": "#ffd24d",
"terminal.ansi.bright_blue": "#5af3ff",
"terminal.ansi.bright_magenta": "#c84dff",
"terminal.ansi.bright_cyan": "#5af3ff",
"terminal.ansi.bright_white": "#ffffff",
"terminal.ansi.dim_black": "#050505",
"terminal.ansi.dim_red": "#ff0044",
"terminal.ansi.dim_green": "#00ff99",
"terminal.ansi.dim_yellow": "#ffb700",
"terminal.ansi.dim_blue": "#00eaff",
"terminal.ansi.dim_magenta": "#9d00ff",
"terminal.ansi.dim_cyan": "#00eaff",
"terminal.ansi.dim_white": "#ededed",
"players": [
{
"cursor": "#ff0044",
"background": "#ff0044",
"selection": "#ff004433"
},
{
"cursor": "#00eaff",
"background": "#00eaff",
"selection": "#00eaff33"
},
{
"cursor": "#9d00ff",
"background": "#9d00ff",
"selection": "#9d00ff33"
},
{
"cursor": "#00ff99",
"background": "#00ff99",
"selection": "#00ff9933"
},
{
"cursor": "#ffb700",
"background": "#ffb700",
"selection": "#ffb70033"
}
],
"version_control.added": "#00ff99",
"version_control.modified": "#ffb700",
"version_control.deleted": "#ff8899",
"version_control.conflict": "#ff8899",
"version_control.renamed": "#00eaff",
"version_control.ignored": "#737373",
"syntax": {
"comment": {
"color": "#737373",
"font_style": "italic"
},
"comment.doc": {
"color": "#737373",
"font_style": "italic"
},
"keyword": {
"color": "#00eaff"
},
"keyword.import": {
"color": "#00eaff"
},
"keyword.storage": {
"color": "#00eaff"
},
"function": {
"color": "#0088cc"
},
"function.method": {
"color": "#0088cc"
},
"function.special.definition": {
"color": "#0088cc"
},
"type": {
"color": "#9d00ff"
},
"type.builtin": {
"color": "#9d00ff"
},
"string": {
"color": "#00ff99"
},
"string.escape": {
"color": "#2bffb2"
},
"string.regex": {
"color": "#ffb700"
},
"number": {
"color": "#ffb700"
},
"boolean": {
"color": "#ffb700"
},
"constant": {
"color": "#ededed"
},
"constant.builtin": {
"color": "#9d00ff"
},
"variable": {
"color": "#ededed"
},
"variable.special": {
"color": "#9d00ff"
},
"property": {
"color": "#ededed"
},
"attribute": {
"color": "#0088cc"
},
"tag": {
"color": "#00eaff"
},
"label": {
"color": "#0088cc"
},
"operator": {
"color": "#ededed"
},
"punctuation": {
"color": "#737373"
},
"punctuation.bracket": {
"color": "#737373"
},
"punctuation.delimiter": {
"color": "#737373"
},
"punctuation.list_marker": {
"color": "#737373",
"font_weight": 700
},
"link_text": {
"color": "#00eaff"
},
"link_uri": {
"color": "#0088cc"
},
"emphasis": {
"font_style": "italic"
},
"emphasis.strong": {
"font_weight": 700
},
"title": {
"color": "#ededed",
"font_weight": 700
},
"text.literal": {
"color": "#00ff99"
},
"preproc": {
"color": "#0088cc"
},
"constructor": {
"color": "#0088cc"
},
"enum": {
"color": "#9d00ff"
},
"variant": {
"color": "#9d00ff"
},
"hint": {
"color": "#0088cc"
},
"predictive": {
"color": "#737373"
}
}
}
},
{
"name": "Apex Aeon",
"appearance": "light",
"style": {
"background": "#f5f5f5",
"background.appearance": "opaque",
"surface.background": "#e8e8e8",
"elevated_surface.background": "#ffffff",
"panel.background": "#e8e8e8",
"panel.focused_border": "#ff0044",
"panel.indent_guide": "#73737366",
"panel.indent_guide_active": "#737373aa",
"panel.indent_guide_hover": "#737373cc",
"tab_bar.background": "#e8e8e8",
"tab.inactive_background": "#e8e8e8",
"tab.active_background": "#f5f5f5",
"title_bar.background": "#f5f5f5",
"title_bar.inactive_background": "#e8e8e8",
"toolbar.background": "#e8e8e8",
"status_bar.background": "#e8e8e8",
"border": "#737373",
"border.variant": "#a0a0a0",
"border.focused": "#ff0044",
"border.selected": "#ff0044",
"border.disabled": "#a0a0a0",
"border.transparent": "transparent",
"text": "#0a0a0a",
"text.muted": "#737373",
"text.placeholder": "#737373",
"text.disabled": "#a0a0a0",
"text.accent": "#007a88",
"icon": "#0a0a0a",
"icon.muted": "#737373",
"icon.placeholder": "#737373",
"icon.disabled": "#a0a0a0",
"icon.accent": "#007a88",
"accents": [
"#ff0044",
"#007a88",
"#7a3cff",
"#00b377",
"#d18f00"
],
"element.background": "#ffffff",
"element.hover": "#737373",
"element.active": "#737373",
"element.selected": "#737373",
"element.disabled": "#e8e8e8",
"ghost_element.background": null,
"ghost_element.hover": "#73737366",
"ghost_element.active": "#73737388",
"ghost_element.selected": "#73737366",
"ghost_element.disabled": null,
"drop_target.background": "#33bccc22",
"editor.background": "#f5f5f5",
"editor.foreground": "#0a0a0a",
"editor.gutter.background": "#f5f5f5",
"editor.subheader.background": "#e8e8e8",
"editor.active_line.background": "#e8e8e8",
"editor.highlighted_line.background": "#e8e8e8",
"editor.line_number": "#737373",
"editor.active_line_number": "#ff0044",
"editor.wrap_guide": "#737373",
"editor.active_wrap_guide": "#737373",
"editor.indent_guide": "#73737366",
"editor.indent_guide_active": "#737373aa",
"editor.invisible": "#73737388",
"editor.document_highlight.read_background": "#007a881a",
"editor.document_highlight.write_background": "#ff00441a",
"editor.document_highlight.bracket_background": "#73737366",
"search.match_background": "#33bccc44",
"scrollbar.track.background": "#f5f5f5",
"scrollbar.track.border": "#f5f5f5",
"scrollbar.thumb.background": "#a0a0a0aa",
"scrollbar.thumb.hover_background": "#737373",
"scrollbar.thumb.border": "transparent",
"pane.focused_border": "#ff0044",
"pane_group.border": "#a0a0a0",
"link_text.hover": "#33bccc",
"success": "#00b377",
"success.background": "#00b3771a",
"success.border": "#00b377",
"warning": "#d18f00",
"warning.background": "#d18f001a",
"warning.border": "#d18f00",
"error": "#ff4d6d",
"error.background": "#ff4d6d1a",
"error.border": "#ff4d6d",
"info": "#007a88",
"info.background": "#007a881a",
"info.border": "#007a88",
"hint": "#005577",
"hint.background": "#0055771a",
"hint.border": "#005577",
"predictive": "#005577",
"predictive.background": "#0055771a",
"predictive.border": "#005577",
"unreachable": "#7a3cff",
"unreachable.background": "#7a3cff1a",
"unreachable.border": "#7a3cff",
"created": "#00b377",
"created.background": "#00b3771a",
"created.border": "#00b377",
"modified": "#d18f00",
"modified.background": "#d18f001a",
"modified.border": "#d18f00",
"deleted": "#ff4d6d",
"deleted.background": "#ff4d6d1a",
"deleted.border": "#ff4d6d",
"renamed": "#007a88",
"renamed.background": "#007a881a",
"renamed.border": "#007a88",
"conflict": "#ff4d6d",
"conflict.background": "#ff4d6d1a",
"conflict.border": "#ff4d6d",
"ignored": "#737373",
"ignored.background": "#7373731a",
"ignored.border": "#737373",
"hidden": "#737373",
"hidden.background": "#7373731a",
"hidden.border": "#737373",
"terminal.background": "#f5f5f5",
"terminal.foreground": "#0a0a0a",
"terminal.bright_foreground": "#0a0a0a",
"terminal.dim_foreground": "#737373",
"terminal.ansi.background": "#f5f5f5",
"terminal.ansi.black": "#0a0a0a",
"terminal.ansi.red": "#ff0044",
"terminal.ansi.green": "#00b377",
"terminal.ansi.yellow": "#d18f00",
"terminal.ansi.blue": "#007a88",
"terminal.ansi.magenta": "#7a3cff",
"terminal.ansi.cyan": "#007a88",
"terminal.ansi.white": "#f5f5f5",
"terminal.ansi.bright_black": "#737373",
"terminal.ansi.bright_red": "#ff4d6d",
"terminal.ansi.bright_green": "#33d6a6",
"terminal.ansi.bright_yellow": "#ffbf40",
"terminal.ansi.bright_blue": "#33bccc",
"terminal.ansi.bright_magenta": "#a680ff",
"terminal.ansi.bright_cyan": "#33bccc",
"terminal.ansi.bright_white": "#ffffff",
"terminal.ansi.dim_black": "#0a0a0a",
"terminal.ansi.dim_red": "#ff0044",
"terminal.ansi.dim_green": "#00b377",
"terminal.ansi.dim_yellow": "#d18f00",
"terminal.ansi.dim_blue": "#007a88",
"terminal.ansi.dim_magenta": "#7a3cff",
"terminal.ansi.dim_cyan": "#007a88",
"terminal.ansi.dim_white": "#f5f5f5",
"players": [
{
"cursor": "#ff0044",
"background": "#ff0044",
"selection": "#ff004433"
},
{
"cursor": "#007a88",
"background": "#007a88",
"selection": "#007a8833"
},
{
"cursor": "#7a3cff",
"background": "#7a3cff",
"selection": "#7a3cff33"
},
{
"cursor": "#00b377",
"background": "#00b377",
"selection": "#00b37733"
},
{
"cursor": "#d18f00",
"background": "#d18f00",
"selection": "#d18f0033"
}
],
"version_control.added": "#00b377",
"version_control.modified": "#d18f00",
"version_control.deleted": "#ff4d6d",
"version_control.conflict": "#ff4d6d",
"version_control.renamed": "#007a88",
"version_control.ignored": "#737373",
"syntax": {
"comment": {
"color": "#737373",
"font_style": "italic"
},
"comment.doc": {
"color": "#737373",
"font_style": "italic"
},
"keyword": {
"color": "#007a88"
},
"keyword.import": {
"color": "#007a88"
},
"keyword.storage": {
"color": "#007a88"
},
"function": {
"color": "#005577"
},
"function.method": {
"color": "#005577"
},
"function.special.definition": {
"color": "#005577"
},
"type": {
"color": "#7a3cff"
},
"type.builtin": {
"color": "#7a3cff"
},
"string": {
"color": "#00b377"
},
"string.escape": {
"color": "#33d6a6"
},
"string.regex": {
"color": "#d18f00"
},
"number": {
"color": "#d18f00"
},
"boolean": {
"color": "#d18f00"
},
"constant": {
"color": "#0a0a0a"
},
"constant.builtin": {
"color": "#7a3cff"
},
"variable": {
"color": "#0a0a0a"
},
"variable.special": {
"color": "#7a3cff"
},
"property": {
"color": "#0a0a0a"
},
"attribute": {
"color": "#005577"
},
"tag": {
"color": "#007a88"
},
"label": {
"color": "#005577"
},
"operator": {
"color": "#0a0a0a"
},
"punctuation": {
"color": "#737373"
},
"punctuation.bracket": {
"color": "#737373"
},
"punctuation.delimiter": {
"color": "#737373"
},
"punctuation.list_marker": {
"color": "#737373",
"font_weight": 700
},
"link_text": {
"color": "#007a88"
},
"link_uri": {
"color": "#005577"
},
"emphasis": {
"font_style": "italic"
},
"emphasis.strong": {
"font_weight": 700
},
"title": {
"color": "#0a0a0a",
"font_weight": 700
},
"text.literal": {
"color": "#00b377"
},
"preproc": {
"color": "#005577"
},
"constructor": {
"color": "#005577"
},
"enum": {
"color": "#7a3cff"
},
"variant": {
"color": "#7a3cff"
},
"hint": {
"color": "#005577"
},
"predictive": {
"color": "#737373"
}
}
}
}
]
}

488
dist/zsh/apex-aeon.zsh-theme vendored Normal file
View 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)'

488
dist/zsh/apex-neon.zsh-theme vendored Normal file
View File

@@ -0,0 +1,488 @@
# Apex Neon — 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 Neon DNA)
# -----------------------------------------------------------------------------
typeset -gA C
C[VOID]="#050505"
C[WHITE]="#ededed"
C[MUTED]="#737373"
C[RAZOR]="#ff0044"
C[CYAN]="#00eaff"
C[GOLD]="#ffb700"
C[OK]="#00ff99"
C[PURPLE]="#9d00ff"
C[ALERT]="#ff8899"
# -----------------------------------------------------------------------------
# 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)'