commit c6d648a6ae1c2197ef1a080694f843fc28d3e8c3
parent e25f74fa290cf82c02d156897080c07e17d9e94d
Author: Damian Myrda <damian@prime8.dev>
Date: Fri, 23 Jan 2026 18:24:43 -0600
refactor zed config: convert to jsonc, reorganize, and add UI customizations
Diffstat:
5 files changed, 262 insertions(+), 210 deletions(-)
diff --git a/link.sh b/link.sh
@@ -52,8 +52,8 @@ link_config "$PROGRAMS_DIR/karabiner/karabiner.json" "$CONFIG_DIR/karabiner/kara
link_config "$PROGRAMS_DIR/karabiner/assets" "$CONFIG_DIR/karabiner/assets"
# Zed
-link_config "$PROGRAMS_DIR/zed/settings.json" "$HOME/.var/app/dev.zed.Zed/config/zed/settings.json"
-link_config "$PROGRAMS_DIR/zed/keymap.json" "$HOME/.var/app/dev.zed.Zed/config/zed/keymap.json"
+link_config "$PROGRAMS_DIR/zed/settings.jsonc" "$HOME/.var/app/dev.zed.Zed/config/zed/settings.json"
+link_config "$PROGRAMS_DIR/zed/keymap.jsonc" "$HOME/.var/app/dev.zed.Zed/config/zed/keymap.json"
# Systemd user services
link_config "$PROGRAMS_DIR/systemd/user/g14-volume-sync.service" "$CONFIG_DIR/systemd/user/g14-volume-sync.service"
diff --git a/programs/zed/keymap.json b/programs/zed/keymap.json
@@ -1,120 +0,0 @@
-[
- // Global bindings
- {
- "bindings": {
- "ctrl-o": "pane::ReopenClosedItem",
- },
- },
- // Workspace bindings (no editor focused)
- {
- "context": "Workspace && !Editor && !Terminal && !Picker && !TabSwitcher && !FileFinder && !AgentPanel",
- "bindings": {
- // Panels
- "space e": "workspace::ToggleLeftDock",
- "space t": "terminal_panel::ToggleFocus",
- "space d": "diagnostics::Deploy",
- // Navigation
- "space f": "file_finder::Toggle",
- "space p": "projects::OpenRecent",
- "space b": "tab_switcher::Toggle",
- "space B": "git::Branch",
- "space g": "project_symbols::Toggle",
- // Actions
- "space o": "workspace::ToggleRightDock",
- "space shift-o": [
- "agent::NewExternalAgentThread",
- {
- "agent": {
- "custom": {
- "name": "OpenCode",
- },
- },
- },
- ],
- "space T": "task::Spawn",
- // Debugger
- "space D s": "debugger::Start",
- "space D q": "debugger::Stop",
- "space D r": "debugger::Rerun",
- "space D c": "debugger::Continue",
- "space D p": "debugger::Pause",
- "space D v": "debugger::FocusVariables",
- "space D f": "debugger::FocusFrames",
- "space D l": "debugger::FocusConsole",
- },
- },
- // Editor bindings (in normal/visual mode)
- {
- "context": "VimControl && !Terminal && !Picker && !TabSwitcher && !FileFinder && !AgentPanel",
- "bindings": {
- // Panels
- "space e": "workspace::ToggleLeftDock",
- "space t": "terminal_panel::ToggleFocus",
- "space d": "diagnostics::Deploy",
- // Navigation
- "space f": "file_finder::Toggle",
- "space p": "projects::OpenRecent",
- "space b": "tab_switcher::Toggle",
- "space B": "git::Branch",
- "space g": "project_symbols::Toggle",
- // Actions
- "space o": "workspace::ToggleRightDock",
- "space shift-o": [
- "agent::NewExternalAgentThread",
- {
- "agent": {
- "custom": {
- "name": "OpenCode",
- },
- },
- },
- ],
- "space T": "task::Spawn",
- // Debugger
- "space D s": "debugger::Start",
- "space D q": "debugger::Stop",
- "space D r": "debugger::Rerun",
- "space D c": "debugger::Continue",
- "space D p": "debugger::Pause",
- "space D v": "debugger::FocusVariables",
- "space D f": "debugger::FocusFrames",
- "space D l": "debugger::FocusConsole",
- },
- },
- // Editor-only bindings (require an open editor in normal/visual mode)
- {
- "context": "VimControl && Editor && !Terminal && !Picker && !TabSwitcher && !FileFinder && !AgentPanel",
- "bindings": {
- // Editor-specific actions
- "space s": "outline::Toggle",
- "space g": "project_symbols::Toggle",
- "space c": "pane::CloseActiveItem",
- "space w": "workspace::Save",
- // LSP
- "space r": "editor::Rename",
- "space R": "editor::FindAllReferences",
- "space space": "editor::Hover",
- "space a": "editor::ToggleCodeActions",
- "g i": "editor::GoToImplementation",
- // Debugger (editor-specific)
- "space D n": "debugger::StepOver",
- "space D i": "debugger::StepInto",
- "space D o": "debugger::StepOut",
- "space D b": "editor::ToggleBreakpoint",
- "space D B": "debugger::ClearAllBreakpoints",
- },
- },
- // Debug panel specific bindings
- {
- "context": "DebugPanel",
- "bindings": {
- "c": "debugger::Continue",
- "p": "debugger::Pause",
- "n": "debugger::StepOver",
- "i": "debugger::StepInto",
- "o": "debugger::StepOut",
- "q": "debugger::Stop",
- "r": "debugger::Rerun",
- },
- },
-]
diff --git a/programs/zed/keymap.jsonc b/programs/zed/keymap.jsonc
@@ -0,0 +1,120 @@
+[
+ // Global
+ {
+ "bindings": {
+ "ctrl-o": "pane::ReopenClosedItem"
+ }
+ },
+
+ // Workspace (no editor focused)
+ {
+ "context": "Workspace && !Editor && !Terminal && !Picker && !TabSwitcher && !FileFinder && !AgentPanel",
+ "bindings": {
+ // Panels
+ "space e": "workspace::ToggleLeftDock",
+ "space o": "workspace::ToggleRightDock",
+ "space t": "terminal_panel::ToggleFocus",
+ "space d": "diagnostics::Deploy",
+
+ // Navigation
+ "space f": "file_finder::Toggle",
+ "space p": "projects::OpenRecent",
+ "space b": "tab_switcher::Toggle",
+ "space B": "git::Branch",
+ "space g": "project_symbols::Toggle",
+
+ // Actions
+ "space T": "task::Spawn",
+ "space shift-o": [
+ "agent::NewExternalAgentThread",
+ { "agent": { "custom": { "name": "OpenCode" } } }
+ ],
+
+ // Debugger
+ "space D s": "debugger::Start",
+ "space D q": "debugger::Stop",
+ "space D r": "debugger::Rerun",
+ "space D c": "debugger::Continue",
+ "space D p": "debugger::Pause",
+ "space D v": "debugger::FocusVariables",
+ "space D f": "debugger::FocusFrames",
+ "space D l": "debugger::FocusConsole"
+ }
+ },
+
+ // Vim (normal/visual mode)
+ {
+ "context": "VimControl && !Terminal && !Picker && !TabSwitcher && !FileFinder && !AgentPanel",
+ "bindings": {
+ // Panels
+ "space e": "workspace::ToggleLeftDock",
+ "space o": "workspace::ToggleRightDock",
+ "space t": "terminal_panel::ToggleFocus",
+ "space d": "diagnostics::Deploy",
+
+ // Navigation
+ "space f": "file_finder::Toggle",
+ "space p": "projects::OpenRecent",
+ "space b": "tab_switcher::Toggle",
+ "space B": "git::Branch",
+ "space g": "project_symbols::Toggle",
+
+ // Actions
+ "space T": "task::Spawn",
+ "space shift-o": [
+ "agent::NewExternalAgentThread",
+ { "agent": { "custom": { "name": "OpenCode" } } }
+ ],
+
+ // Debugger
+ "space D s": "debugger::Start",
+ "space D q": "debugger::Stop",
+ "space D r": "debugger::Rerun",
+ "space D c": "debugger::Continue",
+ "space D p": "debugger::Pause",
+ "space D v": "debugger::FocusVariables",
+ "space D f": "debugger::FocusFrames",
+ "space D l": "debugger::FocusConsole"
+ }
+ },
+
+ // Editor (vim normal/visual mode)
+ {
+ "context": "VimControl && Editor && !Terminal && !Picker && !TabSwitcher && !FileFinder && !AgentPanel",
+ "bindings": {
+ // Actions
+ "space s": "outline::Toggle",
+ "space g": "project_symbols::Toggle",
+ "space c": "pane::CloseActiveItem",
+ "space w": "workspace::Save",
+
+ // LSP
+ "space space": "editor::Hover",
+ "space r": "editor::Rename",
+ "space R": "editor::FindAllReferences",
+ "space a": "editor::ToggleCodeActions",
+ "g i": "editor::GoToImplementation",
+
+ // Debugger
+ "space D n": "debugger::StepOver",
+ "space D i": "debugger::StepInto",
+ "space D o": "debugger::StepOut",
+ "space D b": "editor::ToggleBreakpoint",
+ "space D B": "debugger::ClearAllBreakpoints"
+ }
+ },
+
+ // Debug Panel
+ {
+ "context": "DebugPanel",
+ "bindings": {
+ "c": "debugger::Continue",
+ "p": "debugger::Pause",
+ "n": "debugger::StepOver",
+ "i": "debugger::StepInto",
+ "o": "debugger::StepOut",
+ "q": "debugger::Stop",
+ "r": "debugger::Rerun"
+ }
+ }
+]
diff --git a/programs/zed/settings.json b/programs/zed/settings.json
@@ -1,88 +0,0 @@
-{
- // Editor
- "buffer_font_family": "JetBrainsMono Nerd Font",
- "lsp": {
- "vtsls": {
- "settings": {
- "typescript": {
- "updateImportsOnFileMove": {
- "enabled": "always",
- },
- },
- "javascript": {
- "updateImportsOnFileMove": {
- "enabled": "always",
- },
- },
- },
- "enable_lsp_tasks": true,
- },
- },
- "tasks": {
- "prefer_lsp": true,
- },
- "vim_mode": true,
- "relative_line_numbers": "enabled",
- "hard_tabs": false,
- "indent_guides": {
- "line_width": 1,
- },
- // Font
- "ui_font_size": 12,
- "buffer_font_size": 12,
- // Theme
- "theme": {
- "mode": "system",
- "light": "Gruvbox Light",
- "dark": "Gruvbox Dark Hard",
- },
- // Terminal
- "terminal": {
- "font_family": "JetBrainsMono Nerd Font",
- "dock": "bottom",
- "default_width": 480,
- "scroll_multiplier": 1.0,
- "shell": {
- "program": "fish",
- },
- },
- // AI
- "features": {
- "edit_prediction_provider": "supermaven",
- },
- "agent": {
- "default_model": {
- "provider": "groq",
- "model": "kimi-k2-instruct-0905",
- },
- },
- "agent_servers": {
- "OpenCode": {
- "type": "custom",
- "command": "opencode",
- "args": ["acp"],
- },
- },
- // Privacy
- "telemetry": {
- "diagnostics": false,
- "metrics": false,
- },
- // Session
- "session": {
- "trust_all_worktrees": true,
- },
- "restore_on_startup": "launchpad",
- // Linting
- "languages": {
- "JavaScript": {
- "language_servers": ["vtsls"],
- },
- "TypeScript": {
- "language_servers": ["vtsls"],
- },
- "TSX": {
- "language_servers": ["vtsls"],
- },
- },
-}
diff --git a/programs/zed/settings.jsonc b/programs/zed/settings.jsonc
@@ -0,0 +1,140 @@
+{
+ // Theme
+ "theme": {
+ "mode": "system",
+ "light": "Gruvbox Light",
+ "dark": "Graphene"
+ },
+ // Font
+ "ui_font_size": 14.0,
+ "buffer_font_family": "JetBrainsMono Nerd Font",
+ "buffer_font_size": 14.0,
+ "buffer_line_height": {
+ "custom": 1.5
+ },
+ // Editor
+ "vim_mode": true,
+ "relative_line_numbers": "enabled",
+ "hard_tabs": false,
+ "indent_guides": {
+ "line_width": 1
+ },
+ "scrollbar": {
+ "show": "never"
+ },
+ "gutter": {
+ "min_line_number_digits": 0,
+ "folds": false,
+ "runnables": false
+ },
+ // UI
+ "title_bar": {
+ "show_onboarding_banner": false
+ },
+ "tab_bar": {
+ "show": false
+ },
+ "toolbar": {
+ "quick_actions": false
+ },
+ "status_bar": {
+ "experimental.show": false
+ },
+ "file_finder": {
+ "modal_max_width": "large"
+ },
+ "project_panel": {
+ "dock": "right",
+ "default_width": 320,
+ "hide_root": true,
+ "auto_fold_dirs": false,
+ "starts_open": false,
+ "sticky_scroll": false,
+ "scrollbar": {
+ "show": "never"
+ }
+ },
+ "outline_panel": {
+ "default_width": 300,
+ "scrollbar": {
+ "show": "never"
+ }
+ },
+ // Terminal
+ "terminal": {
+ "font_family": "JetBrainsMono Nerd Font",
+ "dock": "bottom",
+ "default_width": 480,
+ "scroll_multiplier": 1.0,
+ "shell": {
+ "program": "fish"
+ }
+ },
+ // LSP
+ "lsp": {
+ "vtsls": {
+ "settings": {
+ "typescript": {
+ "updateImportsOnFileMove": {
+ "enabled": "always"
+ }
+ },
+ "javascript": {
+ "updateImportsOnFileMove": {
+ "enabled": "always"
+ }
+ }
+ },
+ "enable_lsp_tasks": true
+ }
+ },
+ "tasks": {
+ "prefer_lsp": true
+ },
+ "languages": {
+ "JavaScript": {
+ "language_servers": [
+ "vtsls"
+ ]
+ },
+ "TypeScript": {
+ "language_servers": [
+ "vtsls"
+ ]
+ },
+ "TSX": {
+ "language_servers": [
+ "vtsls"
+ ]
+ }
+ },
+ // AI
+ "features": {
+ "edit_prediction_provider": "supermaven"
+ },
+ "agent": {
+ "default_model": {
+ "provider": "groq",
+ "model": "kimi-k2-instruct-0905"
+ }
+ },
+ "agent_servers": {
+ "OpenCode": {
+ "type": "custom",
+ "command": "opencode",
+ "args": [
+ "acp"
+ ]
+ }
+ },
+ // Session
+ "session": {
+ "trust_all_worktrees": true
+ },
+ "restore_on_startup": "launchpad",
+ // Privacy
+ "telemetry": {
+ "diagnostics": false,
+ "metrics": false
+ }
+}