From c87e2e3c9eefd8ff95c68830526b04dce2901432 Mon Sep 17 00:00:00 2001 From: Avinal Kumar Date: Fri, 27 Mar 2026 16:03:07 +0530 Subject: [PATCH] feat: add more configurations and a new theme - a theme based on carbon and vim high contrast - modify layouts in zellij and add support for swaps - add snippets Signed-off-by: Avinal Kumar --- .config/ghostty/config | 2 +- .../{vim_dark_high_contrast => space_carbon} | 4 +- .config/helix/config.toml | 2 +- .config/helix/themes/space_carbon.toml | 291 ++++++++++++++++++ .config/lazygit/config.yml | 2 +- .config/openrazer/razer.conf | 26 ++ .config/zellij/config.kdl | 289 ++++++++--------- .config/zellij/layouts/compact-hx.kdl | 19 -- .config/zellij/layouts/ide-full.kdl | 25 -- .config/zellij/layouts/ide-layout.kdl | 24 -- .config/zellij/layouts/ide.kdl | 46 +++ .config/zellij/layouts/terminal.kdl | 12 +- .local/bin/hx-pick | 26 -- .local/bin/razer-setup | 80 +++++ .zshrc | 40 ++- cheatsheet.html | 216 +++++++++++++ themes/palettes/space_carbon.sh | 61 ++++ 17 files changed, 893 insertions(+), 272 deletions(-) rename .config/ghostty/themes/{vim_dark_high_contrast => space_carbon} (88%) create mode 100644 .config/helix/themes/space_carbon.toml create mode 100644 .config/openrazer/razer.conf delete mode 100644 .config/zellij/layouts/compact-hx.kdl delete mode 100644 .config/zellij/layouts/ide-full.kdl delete mode 100644 .config/zellij/layouts/ide-layout.kdl create mode 100644 .config/zellij/layouts/ide.kdl delete mode 100755 .local/bin/hx-pick create mode 100755 .local/bin/razer-setup create mode 100644 cheatsheet.html create mode 100644 themes/palettes/space_carbon.sh diff --git a/.config/ghostty/config b/.config/ghostty/config index 4942ada..70a7174 100644 --- a/.config/ghostty/config +++ b/.config/ghostty/config @@ -10,7 +10,7 @@ bold-is-bright = true freetype-load-flags = hinting,autohint,light # Appearance -theme = "vim_dark_high_contrast" +theme = "space_carbon" window-decoration = true window-padding-x = 4 window-padding-y = 2 diff --git a/.config/ghostty/themes/vim_dark_high_contrast b/.config/ghostty/themes/space_carbon similarity index 88% rename from .config/ghostty/themes/vim_dark_high_contrast rename to .config/ghostty/themes/space_carbon index 7e4c747..d9bd6da 100644 --- a/.config/ghostty/themes/vim_dark_high_contrast +++ b/.config/ghostty/themes/space_carbon @@ -19,6 +19,6 @@ palette = 15=#ffffff background = #000000 foreground = #c1c9d2 cursor-color = #c1c9d2 -cursor-text = #111111 -selection-background = #3e4043 +cursor-text = #0c0c0c +selection-background = #393939 selection-foreground = #ffffff diff --git a/.config/helix/config.toml b/.config/helix/config.toml index 4365acb..925cff6 100644 --- a/.config/helix/config.toml +++ b/.config/helix/config.toml @@ -1,4 +1,4 @@ -theme = "vim_dark_high_contrast" +theme = "space_carbon" [editor] rulers = [80, 100] diff --git a/.config/helix/themes/space_carbon.toml b/.config/helix/themes/space_carbon.toml new file mode 100644 index 0000000..4aaaf52 --- /dev/null +++ b/.config/helix/themes/space_carbon.toml @@ -0,0 +1,291 @@ +# Space Carbon — high-contrast theme +# Inspired by vim_dark_high_contrast + IBM Carbon +# Pure black background, vibrant syntax, structured gray UI + +# ── UI: Background & Window ────────────────────────────────────────── + +"ui.background" = { bg = "black" } +"ui.background.separator" = { fg = "bg4" } +"ui.window" = { fg = "bg4" } + +# ── UI: Cursor ──────────────────────────────────────────────────────── + +"ui.cursor" = { fg = "black", bg = "fg3" } +"ui.cursor.normal" = { fg = "black", bg = "blue" } +"ui.cursor.insert" = { fg = "black", bg = "green" } +"ui.cursor.select" = { fg = "black", bg = "magenta" } +"ui.cursor.match" = { fg = "black", bg = "teal" } + +"ui.cursor.primary" = { fg = "black", bg = "fg1" } +"ui.cursor.primary.normal" = { fg = "black", bg = "bright-blue" } +"ui.cursor.primary.insert" = { fg = "black", bg = "bright-green" } +"ui.cursor.primary.select" = { fg = "black", bg = "bright-magenta" } + +# ── UI: Gutter & Line Numbers ──────────────────────────────────────── + +"ui.gutter" = { fg = "fg4" } +"ui.gutter.selected" = { fg = "fg2" } +"ui.linenr" = { fg = "fg4" } +"ui.linenr.selected" = { fg = "yellow", modifiers = ["bold"] } + +# ── UI: Statusline ─────────────────────────────────────────────────── + +"ui.statusline" = { fg = "fg1", bg = "bg2" } +"ui.statusline.inactive" = { fg = "fg3", bg = "bg2" } +"ui.statusline.normal" = { fg = "black", bg = "blue", modifiers = ["bold"] } +"ui.statusline.insert" = { fg = "black", bg = "green", modifiers = ["bold"] } +"ui.statusline.select" = { fg = "black", bg = "magenta", modifiers = ["bold"] } +"ui.statusline.separator" = { fg = "bg4" } + +# ── UI: Bufferline ─────────────────────────────────────────────────── + +"ui.bufferline" = { fg = "fg3", bg = "bg1" } +"ui.bufferline.active" = { fg = "fg0", bg = "bg3", modifiers = ["bold"] } +"ui.bufferline.background" = { bg = "bg1" } + +# ── UI: Popup, Menu, Help ─────────────────────────────────────────── + +"ui.popup" = { fg = "fg1", bg = "bg2" } +"ui.popup.info" = { fg = "fg1", bg = "bg2" } +"ui.menu" = { fg = "fg1", bg = "bg2" } +"ui.menu.selected" = { fg = "fg0", bg = "bg4", modifiers = ["bold"] } +"ui.menu.scroll" = { fg = "cyan", bg = "bg3" } +"ui.help" = { fg = "fg1", bg = "bg2" } + +# ── UI: Picker ─────────────────────────────────────────────────────── + +"ui.picker.header" = { fg = "fg2", modifiers = ["bold"] } +"ui.picker.header.column" = { fg = "fg3" } +"ui.picker.header.column.active" = { fg = "cyan", modifiers = ["bold"] } + +# ── UI: Text ───────────────────────────────────────────────────────── + +"ui.text" = { fg = "fg1" } +"ui.text.focus" = { fg = "fg0", bg = "bg3", modifiers = ["bold"] } +"ui.text.inactive" = { fg = "fg3" } +"ui.text.info" = { fg = "cyan" } +"ui.text.directory" = { fg = "blue" } + +# ── UI: Virtual ────────────────────────────────────────────────────── + +"ui.virtual.ruler" = { bg = "bg2" } +"ui.virtual.whitespace" = { fg = "bg4" } +"ui.virtual.indent-guide" = { fg = "bg4" } +"ui.virtual.inlay-hint" = { fg = "fg4", bg = "bg1" } +"ui.virtual.inlay-hint.parameter" = { fg = "fg4", bg = "bg1", modifiers = ["italic"] } +"ui.virtual.inlay-hint.type" = { fg = "fg4", bg = "bg1" } +"ui.virtual.wrap" = { fg = "bg4" } +"ui.virtual.jump-label" = { fg = "yellow", bg = "bg2", modifiers = ["bold"] } + +# ── UI: Selection & Cursorline ─────────────────────────────────────── + +"ui.selection" = { bg = "bg4" } +"ui.selection.primary" = { bg = "sel" } +"ui.cursorline.primary" = { bg = "bg3" } +"ui.cursorline.secondary" = { bg = "bg2" } +"ui.cursorcolumn.primary" = { bg = "bg3" } +"ui.cursorcolumn.secondary" = { bg = "bg2" } + +# ── UI: Highlight & Debug ─────────────────────────────────────────── + +"ui.highlight" = { bg = "bg3", modifiers = ["bold"] } +"ui.highlight.frameline" = { bg = "dim-blue" } +"ui.debug.breakpoint" = { fg = "red" } +"ui.debug.active" = { fg = "yellow" } + +# ── Diagnostics ────────────────────────────────────────────────────── + +"warning" = { fg = "yellow" } +"error" = { fg = "red" } +"info" = { fg = "blue" } +"hint" = { fg = "cyan" } + +"diagnostic" = { fg = "fg2" } +"diagnostic.error" = { underline = { color = "red", style = "curl" } } +"diagnostic.warning" = { underline = { color = "yellow", style = "curl" } } +"diagnostic.info" = { underline = { color = "blue", style = "curl" } } +"diagnostic.hint" = { underline = { color = "cyan", style = "curl" } } +"diagnostic.unnecessary" = { modifiers = ["dim"] } +"diagnostic.deprecated" = { modifiers = ["crossed_out"] } + +"tabstop" = { bg = "bg3" } + +# ── Syntax: Attributes ─────────────────────────────────────────────── + +"attribute" = { fg = "yellow", modifiers = ["italic"] } + +# ── Syntax: Types ──────────────────────────────────────────────────── + +"type" = { fg = "cyan" } +"type.builtin" = { fg = "cyan", modifiers = ["bold"] } +"type.enum.variant" = { fg = "bright-magenta" } + +# ── Syntax: Constructors ───────────────────────────────────────────── + +"constructor" = { fg = "bright-cyan", modifiers = ["bold"] } + +# ── Syntax: Constants ──────────────────────────────────────────────── + +"constant" = { fg = "orange" } +"constant.builtin" = { fg = "orange", modifiers = ["bold"] } +"constant.builtin.boolean" = { fg = "orange", modifiers = ["bold"] } +"constant.character" = { fg = "green" } +"constant.character.escape" = { fg = "magenta", modifiers = ["bold"] } +"constant.numeric" = { fg = "orange" } +"constant.numeric.integer" = { fg = "orange" } +"constant.numeric.float" = { fg = "orange" } + +# ── Syntax: Strings ────────────────────────────────────────────────── + +"string" = { fg = "green" } +"string.regexp" = { fg = "bright-yellow", modifiers = ["italic"] } +"string.special" = { fg = "bright-green" } +"string.special.path" = { fg = "bright-green" } +"string.special.url" = { fg = "cyan", modifiers = ["underlined"] } +"string.special.symbol" = { fg = "teal" } + +# ── Syntax: Comments ───────────────────────────────────────────────── + +"comment" = { fg = "fg3", modifiers = ["italic"] } +"comment.line" = { fg = "fg3", modifiers = ["italic"] } +"comment.line.documentation" = { fg = "fg2", modifiers = ["italic"] } +"comment.block" = { fg = "fg3", modifiers = ["italic"] } +"comment.block.documentation" = { fg = "fg2", modifiers = ["italic"] } + +# ── Syntax: Variables ──────────────────────────────────────────────── + +"variable" = { fg = "fg1" } +"variable.builtin" = { fg = "red", modifiers = ["bold"] } +"variable.parameter" = { fg = "bright-cyan", modifiers = ["italic"] } +"variable.other.member" = { fg = "fg2" } +"variable.other.member.private" = { fg = "fg2", modifiers = ["italic"] } + +# ── Syntax: Labels ─────────────────────────────────────────────────── + +"label" = { fg = "bright-magenta" } + +# ── Syntax: Punctuation ────────────────────────────────────────────── + +"punctuation" = { fg = "fg2" } +"punctuation.delimiter" = { fg = "fg2" } +"punctuation.bracket" = { fg = "fg2" } +"punctuation.special" = { fg = "cyan" } + +# ── Syntax: Keywords ───────────────────────────────────────────────── + +"keyword" = { fg = "yellow", modifiers = ["bold"] } +"keyword.control" = { fg = "yellow", modifiers = ["bold"] } +"keyword.control.conditional" = { fg = "yellow", modifiers = ["bold"] } +"keyword.control.repeat" = { fg = "yellow", modifiers = ["bold"] } +"keyword.control.import" = { fg = "magenta", modifiers = ["italic"] } +"keyword.control.return" = { fg = "red", modifiers = ["bold"] } +"keyword.control.exception" = { fg = "red", modifiers = ["bold"] } +"keyword.operator" = { fg = "fg2", modifiers = ["bold"] } +"keyword.directive" = { fg = "magenta", modifiers = ["italic"] } +"keyword.function" = { fg = "magenta" } +"keyword.storage" = { fg = "yellow" } +"keyword.storage.type" = { fg = "yellow" } +"keyword.storage.modifier" = { fg = "yellow", modifiers = ["italic"] } + +# ── Syntax: Operators ──────────────────────────────────────────────── + +"operator" = { fg = "fg2" } + +# ── Syntax: Functions ──────────────────────────────────────────────── + +"function" = { fg = "blue" } +"function.builtin" = { fg = "bright-blue", modifiers = ["bold"] } +"function.method" = { fg = "blue" } +"function.method.private" = { fg = "blue", modifiers = ["italic"] } +"function.macro" = { fg = "magenta", modifiers = ["bold"] } + +# ── Syntax: Tags ───────────────────────────────────────────────────── + +"tag" = { fg = "blue" } +"tag.builtin" = { fg = "bright-blue", modifiers = ["bold"] } + +# ── Syntax: Namespace ──────────────────────────────────────────────── + +"namespace" = { fg = "cyan", modifiers = ["italic"] } + +# ── Syntax: Special ────────────────────────────────────────────────── + +"special" = { fg = "magenta" } + +# ── Markup ─────────────────────────────────────────────────────────── + +"markup.heading" = { fg = "blue", modifiers = ["bold"] } +"markup.heading.marker" = { fg = "fg3", modifiers = ["bold"] } +"markup.heading.1" = { fg = "blue", modifiers = ["bold"] } +"markup.heading.2" = { fg = "cyan", modifiers = ["bold"] } +"markup.heading.3" = { fg = "teal", modifiers = ["bold"] } +"markup.heading.4" = { fg = "green", modifiers = ["bold"] } +"markup.heading.5" = { fg = "magenta", modifiers = ["bold"] } +"markup.heading.6" = { fg = "yellow", modifiers = ["bold"] } + +"markup.list" = { fg = "blue" } +"markup.list.checked" = { fg = "green", modifiers = ["crossed_out"] } +"markup.list.unchecked" = { fg = "red" } + +"markup.bold" = { fg = "fg0", modifiers = ["bold"] } +"markup.italic" = { fg = "fg0", modifiers = ["italic"] } +"markup.strikethrough" = { fg = "fg3", modifiers = ["crossed_out"] } + +"markup.link" = { fg = "cyan", modifiers = ["italic"] } +"markup.link.url" = { fg = "cyan", modifiers = ["underlined"] } +"markup.link.text" = { fg = "bright-cyan" } +"markup.link.label" = { fg = "bright-cyan" } + +"markup.quote" = { fg = "bright-cyan", modifiers = ["italic"] } + +"markup.raw" = { fg = "orange" } +"markup.raw.block" = { fg = "fg1" } +"markup.raw.inline" = { fg = "orange" } + +# ── Diff ───────────────────────────────────────────────────────────── + +"diff.plus" = { fg = "green" } +"diff.minus" = { fg = "red" } +"diff.delta" = { fg = "blue" } +"diff.delta.moved" = { fg = "magenta" } +"diff.delta.conflict" = { fg = "yellow" } + +# ── Palette ────────────────────────────────────────────────────────── + +[palette] +black = "#000000" +bg1 = "#0c0c0c" +bg2 = "#161616" +bg3 = "#262626" +bg4 = "#393939" +sel = "#454545" + +fg0 = "#ffffff" +fg1 = "#c1c9d2" +fg2 = "#8b95a0" +fg3 = "#697386" +fg4 = "#525252" + +red = "#ed5f74" +green = "#1ea672" +yellow = "#d97917" +blue = "#688ef1" +magenta = "#c96ed0" +cyan = "#3a97d4" + +orange = "#e87b35" +pink = "#ff7eb6" +teal = "#08bdba" + +bright-red = "#fbb5b2" +bright-green = "#85d996" +bright-yellow = "#efc078" +bright-blue = "#9fcdff" +bright-magenta = "#f0b4e4" +bright-cyan = "#7fd3ed" + +dim-red = "#3d1a22" +dim-green = "#0d3326" +dim-yellow = "#332200" +dim-blue = "#1a2744" +dim-cyan = "#0f2d44" diff --git a/.config/lazygit/config.yml b/.config/lazygit/config.yml index e6518be..59bca11 100644 --- a/.config/lazygit/config.yml +++ b/.config/lazygit/config.yml @@ -16,7 +16,7 @@ gui: inactiveBorderColor: - "#697386" selectedLineBgColor: - - "#3e4043" + - "#393939" optionsTextColor: - "#3a97d4" unstagedChangesColor: diff --git a/.config/openrazer/razer.conf b/.config/openrazer/razer.conf new file mode 100644 index 0000000..54dc6bb --- /dev/null +++ b/.config/openrazer/razer.conf @@ -0,0 +1,26 @@ +[General] +# Verbose logging (logs debug messages - lotsa spam) +verbose_logging = False + + +[Startup] +# Set the sync effects flag to true so any assignment of effects will work across devices +sync_effects_enabled = True + +# Turn off the devices when the systems screensaver kicks in +devices_off_on_screensaver = True + +# Battery notifier +battery_notifier = True + +# Battery notification frequency [s] (0 to disable) +battery_notifier_freq = 600 + +# Battery notifications appear when device reaches this percentage +battery_notifier_percent = 20 + +# Apply effects saved to disk when daemon starts +restore_persistence = False + +# Enable this if you dual boot with Windows and the effect isn't restored. Requires restore_persistence = True +persistence_dual_boot_quirk = False diff --git a/.config/zellij/config.kdl b/.config/zellij/config.kdl index a9f85b3..f3558a8 100644 --- a/.config/zellij/config.kdl +++ b/.config/zellij/config.kdl @@ -1,183 +1,147 @@ +// Tmux-style: Ctrl+a prefix, locked mode default +// Zero Alt-key captures — no clashes with helix keybinds clear-defaults=true { locked { - bind "Ctrl space" { SwitchToMode "normal"; } + bind "Ctrl a" { SwitchToMode "tmux"; } + bind "Alt 1" { GoToTab 1; } + bind "Alt 2" { GoToTab 2; } + bind "Alt 3" { GoToTab 3; } + bind "Alt 4" { GoToTab 4; } + bind "Alt 5" { GoToTab 5; } + bind "Alt 6" { GoToTab 6; } + bind "Alt 7" { GoToTab 7; } + bind "Alt 8" { GoToTab 8; } + bind "Alt 9" { GoToTab 9; } } - pane { - bind "left" { NewPane "left"; SwitchToMode "normal"; } - bind "down" { NewPane "down"; SwitchToMode "normal"; } - bind "up" { NewPane "up"; SwitchToMode "normal"; } - bind "right" { NewPane "right"; SwitchToMode "normal"; } - bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; } - bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; } - bind "Alt p" { SwitchToMode "normal"; } - bind "r" { SwitchToMode "renamepane"; PaneNameInput 0; } - bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; } - bind "z" { TogglePaneFrames; SwitchToMode "normal"; } - } - tab { - bind "left" { GoToPreviousTab; } - bind "down" { GoToNextTab; } - bind "up" { GoToPreviousTab; } - bind "right" { GoToNextTab; } - bind "b" { BreakPane; SwitchToMode "normal"; } - bind "n" { NewTab; SwitchToMode "normal"; } - bind "r" { SwitchToMode "renametab"; TabNameInput 0; } - bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; } - bind "Alt t" { SwitchToMode "normal"; } - bind "x" { CloseTab; SwitchToMode "normal"; } - bind "tab" { ToggleTab; } - } - resize { - bind "left" { Resize "Increase left"; } - bind "down" { Resize "Increase down"; } - bind "up" { Resize "Increase up"; } - bind "right" { Resize "Increase right"; } - bind "+" { Resize "Increase"; } - bind "-" { Resize "Decrease"; } - bind "=" { Resize "Increase"; } - bind "Alt r" { SwitchToMode "normal"; } - } - move { - bind "left" { MovePane "left"; } - bind "down" { MovePane "down"; } - bind "up" { MovePane "up"; } - bind "right" { MovePane "right"; } - bind "Alt m" { SwitchToMode "normal"; } - } - scroll { - bind "e" { EditScrollback; SwitchToMode "normal"; } - bind "s" { SwitchToMode "entersearch"; SearchInput 0; } - } - search { - bind "left" { PageScrollUp; } - bind "right" { PageScrollDown; } - bind "c" { SearchToggleOption "CaseSensitivity"; } - bind "Alt c" { ScrollToBottom; SwitchToMode "normal"; } - bind "n" { Search "down"; } - bind "o" { SearchToggleOption "WholeWord"; } - bind "p" { Search "up"; } - bind "w" { SearchToggleOption "Wrap"; } - } - session { - bind "Alt o" { SwitchToMode "normal"; } + + tmux { + bind "Ctrl a" { Write 1; SwitchToMode "locked"; } + bind "esc" { SwitchToMode "locked"; } + + bind "h" "left" { MoveFocus "left"; } + bind "j" "down" { MoveFocus "down"; } + bind "k" "up" { MoveFocus "up"; } + bind "l" "right" { MoveFocus "right"; } + + bind "n" { GoToNextTab; SwitchToMode "locked"; } + bind "p" { GoToPreviousTab; SwitchToMode "locked"; } + bind "Tab" { ToggleTab; SwitchToMode "locked"; } + bind "1" { GoToTab 1; SwitchToMode "locked"; } + bind "2" { GoToTab 2; SwitchToMode "locked"; } + bind "3" { GoToTab 3; SwitchToMode "locked"; } + bind "4" { GoToTab 4; SwitchToMode "locked"; } + bind "5" { GoToTab 5; SwitchToMode "locked"; } + bind "6" { GoToTab 6; SwitchToMode "locked"; } + bind "7" { GoToTab 7; SwitchToMode "locked"; } + bind "8" { GoToTab 8; SwitchToMode "locked"; } + bind "9" { GoToTab 9; SwitchToMode "locked"; } + + bind "|" { NewPane "right"; SwitchToMode "locked"; } + bind "-" { NewPane "down"; SwitchToMode "locked"; } + + bind "x" { CloseFocus; SwitchToMode "locked"; } + bind "z" { ToggleFocusFullscreen; SwitchToMode "locked"; } + bind "f" { ToggleFloatingPanes; SwitchToMode "locked"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "locked"; } + bind "b" { BreakPane; SwitchToMode "locked"; } + + bind "c" { NewTab; SwitchToMode "locked"; } + bind "," { SwitchToMode "renametab"; TabNameInput 0; } + bind "X" { CloseTab; SwitchToMode "locked"; } + + bind "space" { NextSwapLayout; } + + // Spotlight-style fuzzy tab/session picker bind "w" { LaunchOrFocusPlugin "session-manager" { floating true move_to_focused_tab true - } - SwitchToMode "normal" + }; + SwitchToMode "locked"; } - } - shared_except "locked" "tmux" { - bind "Ctrl a" { SwitchToMode "tmux"; } - } - shared_except "locked" { - bind "Alt left" { MoveFocus "left"; } - bind "Alt down" { MoveFocus "down"; } - bind "Alt up" { MoveFocus "up"; } - bind "Alt right" { MoveFocus "right"; } - bind "Ctrl space" { SwitchToMode "locked"; } - bind "Alt +" { Resize "Increase"; } - bind "Alt ," { GoToPreviousTab; } - bind "Alt -" { Resize "Decrease"; } - bind "Alt ." { GoToNextTab; } - bind "Alt 1" { GoToTab 1; SwitchToMode "normal"; } - bind "Alt 2" { GoToTab 2; SwitchToMode "normal"; } - bind "Alt 3" { GoToTab 3; SwitchToMode "normal"; } - bind "Alt 4" { GoToTab 4; SwitchToMode "normal"; } - bind "Alt 5" { GoToTab 5; SwitchToMode "normal"; } - bind "Alt 6" { GoToTab 6; SwitchToMode "normal"; } - bind "Alt 7" { GoToTab 7; SwitchToMode "normal"; } - bind "Alt 8" { GoToTab 8; SwitchToMode "normal"; } - bind "Alt 9" { GoToTab 9; SwitchToMode "normal"; } - bind "Alt <" { GoToPreviousTab; } - bind "Alt =" { Resize "Increase"; } - bind "Alt >" { GoToNextTab; } - bind "Alt [" { PreviousSwapLayout; } - bind "Alt ]" { NextSwapLayout; } - bind "Alt n" { NewPane; } - bind "Alt q" { Quit; } - bind "Alt f" { + + bind "o" { LaunchPlugin "filepicker" { floating true close_on_selection true }; + SwitchToMode "locked"; } + + bind "s" { SwitchToMode "scroll"; } + bind "r" { SwitchToMode "resize"; } + bind "m" { SwitchToMode "move"; } + + bind "d" { Detach; } + bind "q" { Quit; } } - shared_except "locked" "move" { - bind "Alt m" { SwitchToMode "move"; } + + resize { + bind "h" "left" { Resize "Increase left"; } + bind "j" "down" { Resize "Increase down"; } + bind "k" "up" { Resize "Increase up"; } + bind "l" "right" { Resize "Increase right"; } + bind "+" "=" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + bind "Ctrl a" { SwitchToMode "tmux"; } + bind "esc" "enter" { SwitchToMode "locked"; } } - shared_except "locked" "session" { - bind "Alt o" { SwitchToMode "session"; } + + move { + bind "h" "left" { MovePane "left"; } + bind "j" "down" { MovePane "down"; } + bind "k" "up" { MovePane "up"; } + bind "l" "right" { MovePane "right"; } + bind "Ctrl a" { SwitchToMode "tmux"; } + bind "esc" "enter" { SwitchToMode "locked"; } } - shared_except "locked" "scroll" "search" { - bind "Alt s" { SwitchToMode "scroll"; } + + scroll { + bind "j" "down" { ScrollDown; } + bind "k" "up" { ScrollUp; } + bind "d" "PageDown" { PageScrollDown; } + bind "u" "PageUp" { PageScrollUp; } + bind "e" { EditScrollback; SwitchToMode "locked"; } + bind "/" { SwitchToMode "entersearch"; SearchInput 0; } + bind "Ctrl a" { SwitchToMode "tmux"; } + bind "esc" { SwitchToMode "locked"; } } - shared_except "locked" "tab" { - bind "Alt t" { SwitchToMode "tab"; } - } - shared_except "locked" "pane" { - bind "Alt p" { SwitchToMode "pane"; } - } - shared_except "locked" "resize" { - bind "Alt r" { SwitchToMode "resize"; } - } - shared_except "normal" "locked" "entersearch" { - bind "enter" { SwitchToMode "normal"; } - } - shared_except "normal" "locked" "entersearch" "renametab" "renamepane" { - bind "esc" { SwitchToMode "normal"; } - } - shared_among "pane" "tmux" { - bind "x" { CloseFocus; SwitchToMode "normal"; } - } - shared_among "scroll" "search" { - bind "PageDown" { PageScrollDown; } - bind "PageUp" { PageScrollUp; } - bind "down" { ScrollDown; } - bind "up" { ScrollUp; } - bind "Alt s" { SwitchToMode "normal"; } + + search { + bind "j" "down" { ScrollDown; } + bind "k" "up" { ScrollUp; } + bind "d" "PageDown" { PageScrollDown; } + bind "u" "PageUp" { PageScrollUp; } + bind "n" { Search "down"; } + bind "N" { Search "up"; } + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "w" { SearchToggleOption "Wrap"; } + bind "o" { SearchToggleOption "WholeWord"; } + bind "Ctrl a" { SwitchToMode "tmux"; } + bind "esc" { ScrollToBottom; SwitchToMode "locked"; } } + entersearch { - bind "Alt c" { SwitchToMode "scroll"; } bind "esc" { SwitchToMode "scroll"; } bind "enter" { SwitchToMode "search"; } } + renametab { - bind "esc" { UndoRenameTab; SwitchToMode "tab"; } - } - shared_among "renametab" "renamepane" { - bind "Alt c" { SwitchToMode "normal"; } + bind "esc" { UndoRenameTab; SwitchToMode "locked"; } + bind "enter" { SwitchToMode "locked"; } } + renamepane { - bind "esc" { UndoRenamePane; SwitchToMode "pane"; } - } - shared_among "session" "tmux" { - bind "d" { Detach; } - } - tmux { - bind "left" { MoveFocus "left"; SwitchToMode "normal"; } - bind "down" { MoveFocus "down"; SwitchToMode "normal"; } - bind "up" { MoveFocus "up"; SwitchToMode "normal"; } - bind "right" { MoveFocus "right"; SwitchToMode "normal"; } - bind "space" { NextSwapLayout; } - bind "," { SwitchToMode "renametab"; } - bind "-" { NewPane "down"; SwitchToMode "normal"; } - bind "[" { SwitchToMode "scroll"; } - bind "Ctrl a" { Write 2; SwitchToMode "normal"; } - bind "c" { NewTab; SwitchToMode "normal"; } - bind "n" { GoToNextTab; SwitchToMode "normal"; } - bind "p" { GoToPreviousTab; SwitchToMode "normal"; } - bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; } - bind "|" { NewPane "right"; SwitchToMode "normal"; } + bind "esc" { UndoRenamePane; SwitchToMode "locked"; } + bind "enter" { SwitchToMode "locked"; } } } themes { - vim_dark_high_contrast { + space_carbon { text_unselected { base 193 201 210 - background 62 64 67 + background 57 57 57 emphasis_0 237 95 116 emphasis_1 58 151 212 emphasis_2 30 166 114 @@ -185,14 +149,14 @@ themes { } text_selected { base 255 255 255 - background 62 64 67 + background 57 57 57 emphasis_0 237 95 116 emphasis_1 58 151 212 emphasis_2 30 166 114 emphasis_3 201 110 208 } ribbon_selected { - base 17 17 17 + base 12 12 12 background 30 166 114 emphasis_0 237 95 116 emphasis_1 217 121 23 @@ -200,7 +164,7 @@ themes { emphasis_3 104 142 241 } ribbon_unselected { - base 17 17 17 + base 12 12 12 background 227 232 238 emphasis_0 237 95 116 emphasis_1 193 201 210 @@ -217,7 +181,7 @@ themes { } table_cell_selected { base 255 255 255 - background 62 64 67 + background 57 57 57 emphasis_0 237 95 116 emphasis_1 58 151 212 emphasis_2 30 166 114 @@ -225,7 +189,7 @@ themes { } table_cell_unselected { base 193 201 210 - background 62 64 67 + background 57 57 57 emphasis_0 237 95 116 emphasis_1 58 151 212 emphasis_2 30 166 114 @@ -233,7 +197,7 @@ themes { } list_selected { base 255 255 255 - background 62 64 67 + background 57 57 57 emphasis_0 237 95 116 emphasis_1 58 151 212 emphasis_2 30 166 114 @@ -241,7 +205,7 @@ themes { } list_unselected { base 193 201 210 - background 62 64 67 + background 57 57 57 emphasis_0 237 95 116 emphasis_1 58 151 212 emphasis_2 30 166 114 @@ -267,7 +231,7 @@ themes { base 30 166 114 background 0 emphasis_0 58 151 212 - emphasis_1 62 64 67 + emphasis_1 57 57 57 emphasis_2 201 110 208 emphasis_3 104 142 241 } @@ -298,9 +262,7 @@ plugins { about location="zellij:about" compact-bar location="zellij:compact-bar" configuration location="zellij:configuration" - filepicker location="zellij:strider" { - cwd "/" - } + filepicker location="zellij:strider" plugin-manager location="zellij:plugin-manager" session-manager location="zellij:session-manager" status-bar location="zellij:status-bar" @@ -311,8 +273,9 @@ plugins { } } -simplified_ui false -theme "vim_dark_high_contrast" +default_mode "locked" +pane_frames false +theme "space_carbon" default_layout "terminal" scroll_buffer_size 100000 copy_on_select true @@ -323,6 +286,8 @@ scrollback_lines_to_serialize 100000 disable_session_metadata false show_startup_tips false +web_server_port 8082 + web_client { cursor_blink false cursor_style "block" diff --git a/.config/zellij/layouts/compact-hx.kdl b/.config/zellij/layouts/compact-hx.kdl deleted file mode 100644 index d84dd93..0000000 --- a/.config/zellij/layouts/compact-hx.kdl +++ /dev/null @@ -1,19 +0,0 @@ -layout { - pane { - borderless true - size 1 - plugin location="zellij:compact-bar" - } - pane split_direction="horizontal" { - pane { - command "hx" - args "." - focus true - size "75%" - borderless true - } - pane { - size "25%" - } - } -} diff --git a/.config/zellij/layouts/ide-full.kdl b/.config/zellij/layouts/ide-full.kdl deleted file mode 100644 index e8487cc..0000000 --- a/.config/zellij/layouts/ide-full.kdl +++ /dev/null @@ -1,25 +0,0 @@ -layout { - pane { - borderless true - size 1 - plugin location="zellij:compact-bar" - } - pane split_direction="vertical" { - pane { - command "hx-pick" - args "." - focus true - size "60%" - borderless true - } - pane stacked=true { - pane { - name "LazyGit" - command "lazygit" - } - pane { - name "Terminal" - } - } - } -} diff --git a/.config/zellij/layouts/ide-layout.kdl b/.config/zellij/layouts/ide-layout.kdl deleted file mode 100644 index cd64459..0000000 --- a/.config/zellij/layouts/ide-layout.kdl +++ /dev/null @@ -1,24 +0,0 @@ -layout { - pane { - borderless true - size 1 - plugin location="zellij:compact-bar" - } - pane split_direction="vertical" { - pane { - edit "." - focus true - size "60%" - borderless true - } - pane stacked=true { - pane { - name "LazyGit" - command "lazygit" - } - pane { - name "Terminal" - } - } - } -} diff --git a/.config/zellij/layouts/ide.kdl b/.config/zellij/layouts/ide.kdl new file mode 100644 index 0000000..cc4e869 --- /dev/null +++ b/.config/zellij/layouts/ide.kdl @@ -0,0 +1,46 @@ +layout { + pane split_direction="vertical" { + pane { + command "hx" + args "." + focus true + size "60%" + name "Editor" + } + pane stacked=true { + pane { + name "Terminal" + } + pane { + name "LazyGit" + command "lazygit" + } + } + } + pane size=1 borderless=true { + plugin location="zellij:compact-bar" + } + + swap_tiled_layout name="stacked" { + tab { + pane stacked=true { + pane { + command "hx" + args "." + focus true + name "Editor" + } + pane { + name "Terminal" + } + pane { + name "LazyGit" + command "lazygit" + } + } + pane size=1 borderless=true { + plugin location="zellij:compact-bar" + } + } + } +} diff --git a/.config/zellij/layouts/terminal.kdl b/.config/zellij/layouts/terminal.kdl index 809caa3..4b30bc5 100644 --- a/.config/zellij/layouts/terminal.kdl +++ b/.config/zellij/layouts/terminal.kdl @@ -1,12 +1,8 @@ layout { - pane { - borderless true - size 1 - plugin location="zellij:compact-bar" - } - pane split_direction="vertical" { pane { - name "Terminal" + name "Terminal" + } + pane size=1 borderless=true { + plugin location="zellij:compact-bar" } - } } diff --git a/.local/bin/hx-pick b/.local/bin/hx-pick deleted file mode 100755 index 59f46b7..0000000 --- a/.local/bin/hx-pick +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bash -# hx-pick: loop between file picker and helix -# Select a file -> edit in helix -> back to picker on exit -# Press Esc/Ctrl-C in the picker to drop to a normal shell - -dir="${1:-.}" -cd "$dir" || exit 1 - -while true; do - file=$(find . -type f \ - -not -path './.git/*' \ - -not -path '*/node_modules/*' \ - -not -path '*/vendor/*' \ - -not -path '*/__pycache__/*' \ - -not -path '*/target/*' \ - -not -path '*/.build/*' \ - | sort \ - | fzf --height=100% --layout=reverse --border=rounded \ - --prompt="Edit > " \ - --header="Esc to exit to shell" \ - --preview='head -100 {}' \ - --preview-window=right:50%:wrap) - - [ -z "$file" ] && break - hx "$file" -done diff --git a/.local/bin/razer-setup b/.local/bin/razer-setup new file mode 100755 index 0000000..af8bd23 --- /dev/null +++ b/.local/bin/razer-setup @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +set -euo pipefail + +# razer-setup: configure Razer mouse with Space Carbon theme colors +# Finds the first razermouse in sysfs and applies DPI, poll rate, and lighting + +find_mouse() { + for dev in /sys/bus/hid/drivers/razermouse/0003:*; do + [ -f "$dev/device_type" ] && echo "$dev" && return + done + echo "No Razer mouse found" >&2; exit 1 +} + +DEV=$(find_mouse) +NAME=$(cat "$DEV/device_type") +echo "Found: $NAME" + +# DPI stages: 400, 800, 1200, 1800 (active), 3200 +# Format: active_stage(1-based) then (X_hi X_lo Y_hi Y_lo) per stage +set_dpi() { + local active=${1:-4} + printf '\x04' > "$DEV/dpi_stages" # stage count byte placeholder + # Actually the dpi_stages sysfs takes binary: + # byte 0 = active stage (1-indexed) + # then 4 bytes per stage: X_hi, X_lo, Y_hi, Y_lo + printf '\x04\x01\x90\x01\x90\x03\x20\x03\x20\x04\xb0\x04\xb0\x07\x08\x07\x08\x0c\x80\x0c\x80' > "$DEV/dpi_stages" + echo " DPI stages: 400, 800, 1200, 1800*, 3200" +} + +set_poll_rate() { + echo "$1" > "$DEV/poll_rate" + echo " Poll rate: ${1}Hz" +} + +set_color_static() { + # Space Carbon cyan: #3a97d4 = RGB(58, 151, 212) + printf '\x3a\x97\xd4' > "$DEV/matrix_effect_static" + echo " Lighting: static cyan (#3a97d4)" +} + +set_brightness() { + printf "$(printf '\\x%02x' "$1")" > "$DEV/matrix_brightness" + echo " Brightness: $1/255" +} + +case "${1:-apply}" in + apply) + set_dpi + set_poll_rate 500 + set_color_static + set_brightness 128 + echo "Done." + ;; + spectrum) + printf '' > "$DEV/matrix_effect_spectrum" + echo " Lighting: spectrum" + ;; + off) + printf '' > "$DEV/matrix_effect_none" + echo " Lighting: off" + ;; + color) + # Usage: razer-setup color RRGGBB + hex="${2:?Usage: razer-setup color RRGGBB}" + r=$((16#${hex:0:2})) + g=$((16#${hex:2:2})) + b=$((16#${hex:4:2})) + printf "\\x$(printf '%02x' $r)\\x$(printf '%02x' $g)\\x$(printf '%02x' $b)" > "$DEV/matrix_effect_static" + echo " Lighting: static #$hex" + ;; + status) + echo " Type: $(cat "$DEV/device_type")" + [ -f "$DEV/poll_rate" ] && echo " Poll rate: $(cat "$DEV/poll_rate")Hz" + [ -f "$DEV/charge_level" ] && echo " Battery: $(cat "$DEV/charge_level")%" + [ -f "$DEV/charge_status" ] && echo " Charging: $(cat "$DEV/charge_status")" + ;; + *) + echo "Usage: razer-setup [apply|spectrum|off|color RRGGBB|status]" + ;; +esac diff --git a/.zshrc b/.zshrc index dfe2066..cfbc31f 100644 --- a/.zshrc +++ b/.zshrc @@ -13,7 +13,18 @@ export EDITOR='hx' export OC_EDITOR="hx" export SSH_AUTH_SOCK="/run/user/$(id -u)/keyring/ssh" export MANPATH="/usr/local/man:$MANPATH" -export FZF_DEFAULT_OPTS='--height 25% --layout=reverse --border' +# fzf: use fd for file/dir finding, bat for previews, theme-matched colors +export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' +export FZF_DEFAULT_OPTS=" \ + --height=40% --layout=reverse --border=rounded --cycle --scroll-off=4 \ + --color=bg+:#393939,fg+:#ffffff,hl:#3a97d4,hl+:#3a97d4 \ + --color=info:#1ea672,prompt:#1ea672,pointer:#ed5f74,marker:#c96ed0 \ + --color=spinner:#d97917,header:#3a97d4,border:#393939 \ + --bind='ctrl-d:half-page-down,ctrl-u:half-page-up'" +export FZF_CTRL_T_COMMAND='fd --type f --hidden --follow --exclude .git' +export FZF_CTRL_T_OPTS="--preview 'bat --style=numbers --color=always --line-range :200 {}' --preview-window=right:50%:wrap" +export FZF_ALT_C_COMMAND='fd --type d --hidden --follow --exclude .git' +export FZF_ALT_C_OPTS="--preview 'ls --color=always {}'" # Claude Code export CLAUDE_CODE_USE_VERTEX=1 @@ -64,6 +75,10 @@ zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" zstyle ':completion:*' menu no zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath' zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath' +zstyle ':fzf-tab:complete:(hx|cat|bat|less|head|tail):*' fzf-preview \ + 'bat --style=numbers --color=always --line-range :100 $realpath 2>/dev/null || ls --color $realpath' +zstyle ':fzf-tab:complete:ls:*' fzf-preview 'ls --color $realpath' +zstyle ':fzf-tab:*' switch-group '<' '>' # === Tool Initialization === eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" @@ -75,6 +90,7 @@ export NVM_DIR="$HOME/.nvm" # Atuin env (adds ~/.atuin/bin to PATH) [ -f "$HOME/.atuin/bin/env" ] && . "$HOME/.atuin/bin/env" +eval "$(fzf --zsh)" eval "$(zoxide init zsh)" unalias zi 2>/dev/null; alias zi='__zoxide_zi' eval "$(atuin init zsh)" @@ -86,8 +102,26 @@ export ZSH_AUTOSUGGEST_STRATEGY=(atuin history completion) bindkey '^[[1;5C' forward-word # === Functions === -znew() { - zellij action new-tab --layout "$1" --name "$2" --cwd "$3" + +znew() { zellij action new-tab --layout "$1" --name "$2" --cwd "$3"; } + +zwork() { + local layout_dir="${XDG_CONFIG_HOME:-$HOME/.config}/zellij/layouts" + + local project + project=$(fd --type d --max-depth 2 . 2>/dev/null \ + | fzf --prompt="Folder > " --preview='ls --color=always {}') + [ -z "$project" ] && return 0 + + local layout + layout=$(fd --type f --extension kdl . "$layout_dir" 2>/dev/null \ + | sed 's|.*/||; s/\.kdl$//' \ + | fzf --prompt="Layout > ") + [ -z "$layout" ] && return 0 + + local tab_name + echo -n "Tab name [${project%/}]: "; read tab_name + zellij action new-tab --layout "$layout" --name "${tab_name:-${project%/}}" --cwd "$PWD/$project" } # === Aliases === diff --git a/cheatsheet.html b/cheatsheet.html new file mode 100644 index 0000000..2b65094 --- /dev/null +++ b/cheatsheet.html @@ -0,0 +1,216 @@ + + + + +Zellij + Helix Cheatsheet + + + +
+

Zellij + Helix Cheatsheet

+ +
+ +
+

Zellij — Prefix: Ctrl+a

+

Default mode is locked. Only Ctrl+a and Alt+1-9 are captured.

+ +

Pane Navigation

+ + + + + + + + + +
Ctrl+a h/j/k/l or ←↓↑→Focus left / down / up / right
Ctrl+a |Split right
Ctrl+a -Split down
Ctrl+a xClose pane
Ctrl+a zZoom (fullscreen toggle)
Ctrl+a fToggle floating panes
Ctrl+a eEmbed / float pane
Ctrl+a bBreak pane to new tab
+ +

Tab Navigation

+ + + + + + + + +
Alt+19Jump to tab (direct, no prefix)
Ctrl+a n / pNext / previous tab
Ctrl+a TabToggle last two tabs
Ctrl+a cNew tab
Ctrl+a ,Rename tab
Ctrl+a XClose tab
Ctrl+a SpaceNext swap layout
+ +

Session & Plugins

+ + + + + +
Ctrl+a wSession manager (fuzzy picker)
Ctrl+a oFile picker (strider)
Ctrl+a dDetach session
Ctrl+a qQuit zellij
+ +

Sub-modes (from Ctrl+a)

+ + + + +
s → Scrollj/k or ↓↑ scroll, d/u page, / search, e edit
r → Resizeh/j/k/l or ←↓↑→ resize, +/- grow/shrink
m → Moveh/j/k/l or ←↓↑→ move pane
+

Esc exits any sub-mode. Ctrl+a from sub-mode → tmux mode.

+ +

Passthrough

+ + + +
Ctrl+a Ctrl+aSend literal Ctrl+a to app
EscCancel / back to locked mode
+
+ +
+

Shell — zsh / fzf / zellij helpers

+ + + + + + + + +
Ctrl+Tfzf file finder (with bat preview)
Alt+Cfzf cd into directory
Ctrl+RAtuin history search
Ctrl+RightAccept autosuggestion word-by-word
zworkPick folder → layout → new zellij tab
znew L N DNew tab: layout, name, directory
ziZoxide interactive cd
+
+ +
+ +
+ +
+

Helix — Normal Mode

+ +

Movement

+ + + + + + + + + + +
h/j/k/lLeft / down / up / right
w / b / eWord forward / back / end
W / B / EWORD forward / back / end
f/t charFind / till char forward
F/T charFind / till char backward
gg / geGo to start / end of file
Ctrl+d / Ctrl+uHalf-page down / up
Ctrl+f / Ctrl+bPage down / up
%Jump to matching bracket
+ +

Selection & Editing

+ + + + + + + + + + + + + + + + + + + +
vEnter select mode
xSelect entire line
sSelect regex matches in selection
d / cDelete / change selection
y / pYank / paste after
PPaste before
r charReplace with char
~Toggle case
u / UUndo / redo
> / <Indent / dedent
JJoin lines
CCopy selection to next line
Alt+sSplit selection on regex
Alt+dSelect all similar matches
Alt+.Repeat last motion
Alt+,Remove latest selection
Alt+oExpand selection (treesitter)
Ctrl+a / Ctrl+xIncrement / decrement number
+ +

Goto g

+ + + + + + + + + + +
gdGo to definition
grGo to references
giGo to implementation
gyGo to type definition
gaGo to last accessed file
gh / glGo to line start / end
gsGo to first non-blank
gnGo to next buffer
gpGo to previous buffer
+ +

Space Menu Space

+ + + + + + + + + + + + + + +
Space fFile picker
Space FFile picker (cwd)
Space bBuffer picker
Space jJumplist picker
Space sSymbol picker
Space SWorkspace symbol picker
Space /Global search
Space dDiagnostics picker
Space aCode action
Space rRename symbol
Space kShow docs (hover)
Space hSelect all references
Space y / pYank / paste system clipboard
+ +

Window Ctrl+w

+ + + + + +
Ctrl+w v/sVertical / horizontal split
Ctrl+w h/j/k/lFocus split
Ctrl+w qClose split
Ctrl+w oOnly (close other splits)
+ +

Match m

+ + + + + + + +
mmJump to matching bracket
ms charSurround with char
mr old newReplace surround
md charDelete surround
ma charSelect around
mi charSelect inside
+ +

Insert Mode (from i/a/o/I/A/O)

+ + + + + +
EscBack to normal
Ctrl+sSave
Ctrl+wDelete word backward
Ctrl+spaceTrigger completion
+ +

Commands :

+ + + + + + + +
:w / :q / :wqSave / quit / both
:o fileOpen file
:bcClose buffer
:sh cmdRun shell command
:config-reloadReload config
:theme nameSwitch theme
+
+ +
+
+ + diff --git a/themes/palettes/space_carbon.sh b/themes/palettes/space_carbon.sh new file mode 100644 index 0000000..881e597 --- /dev/null +++ b/themes/palettes/space_carbon.sh @@ -0,0 +1,61 @@ +# space_carbon - high-contrast theme +# Inspired by vim_dark_high_contrast + IBM Carbon + +THEME_NAME="space_carbon" +HELIX_THEME="space_carbon" + +# Base +BG="#000000" +FG="#c1c9d2" +CURSOR="#c1c9d2" +SELECTION_BG="#393939" +SELECTION_FG="#ffffff" + +# Normal colors +BLACK="#000000" +RED="#ed5f74" +GREEN="#1ea672" +YELLOW="#d97917" +BLUE="#688ef1" +MAGENTA="#c96ed0" +CYAN="#3a97d4" +WHITE="#e3e8ee" + +# Bright colors +BRIGHT_BLACK="#697386" +BRIGHT_RED="#fbb5b2" +BRIGHT_GREEN="#85d996" +BRIGHT_YELLOW="#efc078" +BRIGHT_BLUE="#9fcdff" +BRIGHT_MAGENTA="#f0b4e4" +BRIGHT_CYAN="#7fd3ed" +BRIGHT_WHITE="#ffffff" + +# Dark/muted variants (for backgrounds, subtle highlights) +DARK_RED="#3d1a22" +DARK_GREEN="#0d3326" +DARK_YELLOW="#332200" +DARK_BLUE="#1a2744" +DARK_MAGENTA="#602864" +DARK_CYAN="#0f2d44" +DARK_WHITE="#393939" + +# Gray scale (Carbon-inspired layering) +BG1="#0c0c0c" +BG2="#161616" +BG3="#262626" +BG4="#393939" + +# Additional accents +ORANGE="#e87b35" +PINK="#ff7eb6" +TEAL="#08bdba" + +# Semantic +ACCENT="$CYAN" +SUCCESS="$GREEN" +WARNING="$YELLOW" +ERROR="$RED" +INFO="$BLUE" +MUTED="$BRIGHT_BLACK" +SURFACE="$DARK_WHITE"