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 <avinal.xlvii@gmail.com>
This commit is contained in:
2026-03-27 16:03:07 +05:30
committed by Morumotto
parent c2786c7f96
commit c87e2e3c9e
17 changed files with 893 additions and 272 deletions
+1 -1
View File
@@ -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
@@ -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
+1 -1
View File
@@ -1,4 +1,4 @@
theme = "vim_dark_high_contrast"
theme = "space_carbon"
[editor]
rulers = [80, 100]
+291
View File
@@ -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"
+1 -1
View File
@@ -16,7 +16,7 @@ gui:
inactiveBorderColor:
- "#697386"
selectedLineBgColor:
- "#3e4043"
- "#393939"
optionsTextColor:
- "#3a97d4"
unstagedChangesColor:
+26
View File
@@ -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
+127 -162
View File
@@ -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 "locked";
}
SwitchToMode "normal"
}
}
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"
-19
View File
@@ -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%"
}
}
}
-25
View File
@@ -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"
}
}
}
}
-24
View File
@@ -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"
}
}
}
}
+46
View File
@@ -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"
}
}
}
}
+2 -6
View File
@@ -1,12 +1,8 @@
layout {
pane {
borderless true
size 1
plugin location="zellij:compact-bar"
}
pane split_direction="vertical" {
pane {
name "Terminal"
}
pane size=1 borderless=true {
plugin location="zellij:compact-bar"
}
}
-26
View File
@@ -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
+80
View File
@@ -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
+37 -3
View File
@@ -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 ===
+216
View File
@@ -0,0 +1,216 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Zellij + Helix Cheatsheet</title>
<style>
@page { size: A4 landscape; margin: 12mm; }
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: "Iosevka", "JetBrains Mono", "Fira Code", monospace;
background: #000; color: #c1c9d2; font-size: 11px; line-height: 1.4; }
.page { display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
padding: 16px; max-width: 1100px; margin: auto; }
.col { display: flex; flex-direction: column; gap: 10px; }
h1 { grid-column: 1 / -1; text-align: center; font-size: 20px; color: #1ea672;
border-bottom: 2px solid #3e4043; padding-bottom: 6px; margin-bottom: 4px; }
h2 { font-size: 13px; color: #1ea672; border-bottom: 1px solid #3e4043;
padding-bottom: 3px; margin-bottom: 4px; }
h3 { font-size: 11px; color: #d97917; margin: 6px 0 2px; }
.section { background: #111; border: 1px solid #3e4043; border-radius: 6px; padding: 8px 10px; }
table { width: 100%; border-collapse: collapse; }
td { padding: 2px 4px; vertical-align: top; }
td:first-child { white-space: nowrap; color: #3a97d4; font-weight: bold; width: 40%; }
td:last-child { color: #c1c9d2; }
tr:nth-child(even) { background: rgba(62,64,67,0.2); }
kbd { background: #3e4043; color: #fff; padding: 1px 5px; border-radius: 3px;
font-size: 10px; border: 1px solid #555; font-family: inherit; }
.note { color: #c96ed0; font-size: 10px; font-style: italic; margin-top: 4px; }
.prefix { color: #ed5f74; }
@media print {
body { background: #000; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.page { padding: 0; }
}
</style>
</head>
<body>
<div class="page">
<h1>Zellij + Helix Cheatsheet</h1>
<div class="col">
<div class="section">
<h2>Zellij &mdash; Prefix: <kbd>Ctrl+a</kbd></h2>
<p class="note">Default mode is locked. Only <kbd>Ctrl+a</kbd> and <kbd>Alt+1-9</kbd> are captured.</p>
<h3>Pane Navigation</h3>
<table>
<tr><td><kbd>Ctrl+a</kbd> <kbd>h/j/k/l</kbd> or <kbd>&larr;&darr;&uarr;&rarr;</kbd></td><td>Focus left / down / up / right</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>|</kbd></td><td>Split right</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>-</kbd></td><td>Split down</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>x</kbd></td><td>Close pane</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>z</kbd></td><td>Zoom (fullscreen toggle)</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>f</kbd></td><td>Toggle floating panes</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>e</kbd></td><td>Embed / float pane</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>b</kbd></td><td>Break pane to new tab</td></tr>
</table>
<h3>Tab Navigation</h3>
<table>
<tr><td><kbd>Alt+1</kbd>&ndash;<kbd>9</kbd></td><td>Jump to tab (direct, no prefix)</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>n / p</kbd></td><td>Next / previous tab</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>Tab</kbd></td><td>Toggle last two tabs</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>c</kbd></td><td>New tab</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>,</kbd></td><td>Rename tab</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>X</kbd></td><td>Close tab</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>Space</kbd></td><td>Next swap layout</td></tr>
</table>
<h3>Session &amp; Plugins</h3>
<table>
<tr><td><kbd>Ctrl+a</kbd> <kbd>w</kbd></td><td>Session manager (fuzzy picker)</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>o</kbd></td><td>File picker (strider)</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>d</kbd></td><td>Detach session</td></tr>
<tr><td><kbd>Ctrl+a</kbd> <kbd>q</kbd></td><td>Quit zellij</td></tr>
</table>
<h3>Sub-modes (from <kbd>Ctrl+a</kbd>)</h3>
<table>
<tr><td><kbd>s</kbd> &rarr; Scroll</td><td><kbd>j/k</kbd> or <kbd>&darr;&uarr;</kbd> scroll, <kbd>d/u</kbd> page, <kbd>/</kbd> search, <kbd>e</kbd> edit</td></tr>
<tr><td><kbd>r</kbd> &rarr; Resize</td><td><kbd>h/j/k/l</kbd> or <kbd>&larr;&darr;&uarr;&rarr;</kbd> resize, <kbd>+/-</kbd> grow/shrink</td></tr>
<tr><td><kbd>m</kbd> &rarr; Move</td><td><kbd>h/j/k/l</kbd> or <kbd>&larr;&darr;&uarr;&rarr;</kbd> move pane</td></tr>
</table>
<p class="note"><kbd>Esc</kbd> exits any sub-mode. <kbd>Ctrl+a</kbd> from sub-mode &rarr; tmux mode.</p>
<h3>Passthrough</h3>
<table>
<tr><td><kbd>Ctrl+a</kbd> <kbd>Ctrl+a</kbd></td><td>Send literal Ctrl+a to app</td></tr>
<tr><td><kbd>Esc</kbd></td><td>Cancel / back to locked mode</td></tr>
</table>
</div>
<div class="section">
<h2>Shell &mdash; zsh / fzf / zellij helpers</h2>
<table>
<tr><td><kbd>Ctrl+T</kbd></td><td>fzf file finder (with bat preview)</td></tr>
<tr><td><kbd>Alt+C</kbd></td><td>fzf cd into directory</td></tr>
<tr><td><kbd>Ctrl+R</kbd></td><td>Atuin history search</td></tr>
<tr><td><kbd>Ctrl+Right</kbd></td><td>Accept autosuggestion word-by-word</td></tr>
<tr><td><code>zwork</code></td><td>Pick folder &rarr; layout &rarr; new zellij tab</td></tr>
<tr><td><code>znew L N D</code></td><td>New tab: layout, name, directory</td></tr>
<tr><td><code>zi</code></td><td>Zoxide interactive cd</td></tr>
</table>
</div>
</div>
<div class="col">
<div class="section">
<h2>Helix &mdash; Normal Mode</h2>
<h3>Movement</h3>
<table>
<tr><td><kbd>h/j/k/l</kbd></td><td>Left / down / up / right</td></tr>
<tr><td><kbd>w / b / e</kbd></td><td>Word forward / back / end</td></tr>
<tr><td><kbd>W / B / E</kbd></td><td>WORD forward / back / end</td></tr>
<tr><td><kbd>f/t</kbd> <kbd>char</kbd></td><td>Find / till char forward</td></tr>
<tr><td><kbd>F/T</kbd> <kbd>char</kbd></td><td>Find / till char backward</td></tr>
<tr><td><kbd>gg / ge</kbd></td><td>Go to start / end of file</td></tr>
<tr><td><kbd>Ctrl+d / Ctrl+u</kbd></td><td>Half-page down / up</td></tr>
<tr><td><kbd>Ctrl+f / Ctrl+b</kbd></td><td>Page down / up</td></tr>
<tr><td><kbd>%</kbd></td><td>Jump to matching bracket</td></tr>
</table>
<h3>Selection &amp; Editing</h3>
<table>
<tr><td><kbd>v</kbd></td><td>Enter select mode</td></tr>
<tr><td><kbd>x</kbd></td><td>Select entire line</td></tr>
<tr><td><kbd>s</kbd></td><td>Select regex matches in selection</td></tr>
<tr><td><kbd>d / c</kbd></td><td>Delete / change selection</td></tr>
<tr><td><kbd>y / p</kbd></td><td>Yank / paste after</td></tr>
<tr><td><kbd>P</kbd></td><td>Paste before</td></tr>
<tr><td><kbd>r</kbd> <kbd>char</kbd></td><td>Replace with char</td></tr>
<tr><td><kbd>~</kbd></td><td>Toggle case</td></tr>
<tr><td><kbd>u / U</kbd></td><td>Undo / redo</td></tr>
<tr><td><kbd>&gt; / &lt;</kbd></td><td>Indent / dedent</td></tr>
<tr><td><kbd>J</kbd></td><td>Join lines</td></tr>
<tr><td><kbd>C</kbd></td><td>Copy selection to next line</td></tr>
<tr><td><kbd>Alt+s</kbd></td><td>Split selection on regex</td></tr>
<tr><td><kbd>Alt+d</kbd></td><td>Select all similar matches</td></tr>
<tr><td><kbd>Alt+.</kbd></td><td>Repeat last motion</td></tr>
<tr><td><kbd>Alt+,</kbd></td><td>Remove latest selection</td></tr>
<tr><td><kbd>Alt+o</kbd></td><td>Expand selection (treesitter)</td></tr>
<tr><td><kbd>Ctrl+a / Ctrl+x</kbd></td><td>Increment / decrement number</td></tr>
</table>
<h3>Goto <kbd>g</kbd></h3>
<table>
<tr><td><kbd>gd</kbd></td><td>Go to definition</td></tr>
<tr><td><kbd>gr</kbd></td><td>Go to references</td></tr>
<tr><td><kbd>gi</kbd></td><td>Go to implementation</td></tr>
<tr><td><kbd>gy</kbd></td><td>Go to type definition</td></tr>
<tr><td><kbd>ga</kbd></td><td>Go to last accessed file</td></tr>
<tr><td><kbd>gh / gl</kbd></td><td>Go to line start / end</td></tr>
<tr><td><kbd>gs</kbd></td><td>Go to first non-blank</td></tr>
<tr><td><kbd>gn</kbd></td><td>Go to next buffer</td></tr>
<tr><td><kbd>gp</kbd></td><td>Go to previous buffer</td></tr>
</table>
<h3>Space Menu <kbd>Space</kbd></h3>
<table>
<tr><td><kbd>Space f</kbd></td><td>File picker</td></tr>
<tr><td><kbd>Space F</kbd></td><td>File picker (cwd)</td></tr>
<tr><td><kbd>Space b</kbd></td><td>Buffer picker</td></tr>
<tr><td><kbd>Space j</kbd></td><td>Jumplist picker</td></tr>
<tr><td><kbd>Space s</kbd></td><td>Symbol picker</td></tr>
<tr><td><kbd>Space S</kbd></td><td>Workspace symbol picker</td></tr>
<tr><td><kbd>Space /</kbd></td><td>Global search</td></tr>
<tr><td><kbd>Space d</kbd></td><td>Diagnostics picker</td></tr>
<tr><td><kbd>Space a</kbd></td><td>Code action</td></tr>
<tr><td><kbd>Space r</kbd></td><td>Rename symbol</td></tr>
<tr><td><kbd>Space k</kbd></td><td>Show docs (hover)</td></tr>
<tr><td><kbd>Space h</kbd></td><td>Select all references</td></tr>
<tr><td><kbd>Space y / p</kbd></td><td>Yank / paste system clipboard</td></tr>
</table>
<h3>Window <kbd>Ctrl+w</kbd></h3>
<table>
<tr><td><kbd>Ctrl+w v/s</kbd></td><td>Vertical / horizontal split</td></tr>
<tr><td><kbd>Ctrl+w h/j/k/l</kbd></td><td>Focus split</td></tr>
<tr><td><kbd>Ctrl+w q</kbd></td><td>Close split</td></tr>
<tr><td><kbd>Ctrl+w o</kbd></td><td>Only (close other splits)</td></tr>
</table>
<h3>Match <kbd>m</kbd></h3>
<table>
<tr><td><kbd>mm</kbd></td><td>Jump to matching bracket</td></tr>
<tr><td><kbd>ms</kbd> <kbd>char</kbd></td><td>Surround with char</td></tr>
<tr><td><kbd>mr</kbd> <kbd>old</kbd> <kbd>new</kbd></td><td>Replace surround</td></tr>
<tr><td><kbd>md</kbd> <kbd>char</kbd></td><td>Delete surround</td></tr>
<tr><td><kbd>ma</kbd> <kbd>char</kbd></td><td>Select around</td></tr>
<tr><td><kbd>mi</kbd> <kbd>char</kbd></td><td>Select inside</td></tr>
</table>
<h3>Insert Mode (from <kbd>i/a/o/I/A/O</kbd>)</h3>
<table>
<tr><td><kbd>Esc</kbd></td><td>Back to normal</td></tr>
<tr><td><kbd>Ctrl+s</kbd></td><td>Save</td></tr>
<tr><td><kbd>Ctrl+w</kbd></td><td>Delete word backward</td></tr>
<tr><td><kbd>Ctrl+space</kbd></td><td>Trigger completion</td></tr>
</table>
<h3>Commands <kbd>:</kbd></h3>
<table>
<tr><td><kbd>:w / :q / :wq</kbd></td><td>Save / quit / both</td></tr>
<tr><td><kbd>:o file</kbd></td><td>Open file</td></tr>
<tr><td><kbd>:bc</kbd></td><td>Close buffer</td></tr>
<tr><td><kbd>:sh cmd</kbd></td><td>Run shell command</td></tr>
<tr><td><kbd>:config-reload</kbd></td><td>Reload config</td></tr>
<tr><td><kbd>:theme name</kbd></td><td>Switch theme</td></tr>
</table>
</div>
</div>
</div>
</body>
</html>
+61
View File
@@ -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"