From 055af6e9788928dbb4a8ed30d88b53f469650e1b Mon Sep 17 00:00:00 2001 From: chianyungcode Date: Fri, 25 Sep 2026 00:42:36 +0700 Subject: [PATCH 1/8] feat(package): add aside & sbx package --- chezmoi/.chezmoidata/packages-system.toml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/chezmoi/.chezmoidata/packages-system.toml b/chezmoi/.chezmoidata/packages-system.toml index 38e01ae..58cf998 100644 --- a/chezmoi/.chezmoidata/packages-system.toml +++ b/chezmoi/.chezmoidata/packages-system.toml @@ -42,7 +42,7 @@ # Docker replacement "orbstack", - "augani/dory/dory", + # "augani/dory/dory", # Optional # "amazon-q", @@ -195,8 +195,9 @@ "sops", # "varlock", # env with schema - # @container - "lazydocker", # Docker manager + # @isolation + "docker/tap/sbx", # docker sandboxes + "lazydocker", # Docker manager "awscli", # "koyeb/tap/koyeb", # Koyeb CLI @@ -343,12 +344,13 @@ [packages.homebrew.personal] casks = [ # Browsers - "brave-browser", - "comet", + "aside", # agentic browser + "brave-browser", # traditional browser + # "comet", # agentic browser # "google-chrome", - # "helium-browser", - # "thebrowsercompany-dia", # Dia Browser - "zen", # Browser + # "helium-browser", # traditional browser + # "thebrowsercompany-dia", # agentic browser + "zen", # traditional browser # Productivity & Knowledge # "anki", From 13b0f326ebda6af8fc80909e4ff62228b07cbede Mon Sep 17 00:00:00 2001 From: chianyungcode Date: Thu, 17 Sep 2026 05:34:33 +0700 Subject: [PATCH 2/8] feat(chezmoi): gate personal resources behind personal feature Require the personal feature for personal macOS apps and repositories, and ignore personal-only config paths when it is disabled. Keep graphical terminal configs available on work Macs and cover both work and personal macOS rendering in tests. --- .../external-mac-apps.toml.tmpl | 2 +- .../.chezmoiexternals/my-project.toml.tmpl | 2 +- chezmoi/.chezmoiignore | 15 +++++ tests/chezmoi-render-config.sh | 55 +++++++++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) diff --git a/chezmoi/.chezmoiexternals/external-mac-apps.toml.tmpl b/chezmoi/.chezmoiexternals/external-mac-apps.toml.tmpl index 1b2d896..5e35f5e 100644 --- a/chezmoi/.chezmoiexternals/external-mac-apps.toml.tmpl +++ b/chezmoi/.chezmoiexternals/external-mac-apps.toml.tmpl @@ -1,4 +1,4 @@ -{{ if and (eq .chezmoi.os "darwin") .features.graphical }} +{{ if and (eq .chezmoi.os "darwin") .features.graphical .features.personal }} {{- range .macos_external_app }} {{- if and .app_name .download_url }} diff --git a/chezmoi/.chezmoiexternals/my-project.toml.tmpl b/chezmoi/.chezmoiexternals/my-project.toml.tmpl index 3d7be79..25fd286 100644 --- a/chezmoi/.chezmoiexternals/my-project.toml.tmpl +++ b/chezmoi/.chezmoiexternals/my-project.toml.tmpl @@ -1,4 +1,4 @@ -{{ if eq .secrets.provider "onepassword" }} +{{ if and (eq .secrets.provider "onepassword") .features.personal }} # If file .pub (public key) exist in ~/.ssh_keys directory {{- if stat (joinPath .chezmoi.homeDir ".ssh_keys" "ghcny.pub") }} diff --git a/chezmoi/.chezmoiignore b/chezmoi/.chezmoiignore index e2d1904..c28d439 100644 --- a/chezmoi/.chezmoiignore +++ b/chezmoi/.chezmoiignore @@ -30,12 +30,27 @@ Library .config/ghostty .config/hypr .config/karabiner +.config/kitty .config/launchpallete .config/rift .config/wezterm Library/Application Support/Leader Key {{ end }} +{{ if not .features.personal }} +# Personal-only configs are opt-in. Company machines without the `personal` +# feature skip these so nothing non-development is deployed. +# Note: `private_` source prefixes are stripped in target paths, so +# `private_hermes` matches `.config/hermes` and `private_agent.toml` +# matches `agent.toml`. +.config/1Password/ssh/agent.toml +.config/bunch +.config/espanso +.config/hermes +.config/launchpallete +.config/zed +{{ end }} + {{- $is_ci := ne (env "CI") "" -}} {{- $skip_encrypted := or (not .encrypted_files.enabled) $is_ci -}} {{ if $skip_encrypted }} diff --git a/tests/chezmoi-render-config.sh b/tests/chezmoi-render-config.sh index 515fcbb..aafac87 100755 --- a/tests/chezmoi-render-config.sh +++ b/tests/chezmoi-render-config.sh @@ -101,6 +101,7 @@ server_data="$tmp_dir/server.json" development_server_data="$tmp_dir/development-server.json" homelab_server_data="$tmp_dir/homelab-server.json" workstation_data="$tmp_dir/workstation.json" +work_mac_data="$tmp_dir/work-mac.json" custom_identity_data="$tmp_dir/custom-identity.json" custom_xdg_data="$tmp_dir/custom-xdg.json" @@ -108,6 +109,8 @@ make_data "$server_data" "$server_base_data" server false false false false none make_data "$development_server_data" "$server_base_data" server true false false false none false /tmp/chezmoi-development make_data "$homelab_server_data" "$server_base_data" server false true false false none false /tmp/chezmoi-homelab make_data "$workstation_data" "$workstation_base_data" workstation true true true true none false /tmp/chezmoi-workstation +# Company Mac: GUI enabled for dev terminals, but no `personal` feature. +make_data "$work_mac_data" "$workstation_base_data" workstation true false false true none false /tmp/chezmoi-work-mac make_data "$custom_identity_data" "$custom_base_data" workstation true false true true none false /tmp/chezmoi-custom make_data "$custom_xdg_data" "$workstation_base_data" workstation true false true true none false /tmp/custom-xdg @@ -119,6 +122,58 @@ render_apply custom-identity "$custom_config_file" "$custom_identity_data" render_apply ci "$server_config_file" "$server_data" true render_apply custom-xdg "$workstation_config_file" "$custom_xdg_data" +# Company Mac (development + graphical, no personal) must ignore +# personal-only configs while keeping dev graphical terminals. +work_mac_ignore=$(chezmoi -S "$source_dir" -c "$workstation_config_file" \ + execute-template --override-data-file "$work_mac_data" \ + --file "$source_dir/.chezmoiignore") +for personal_target in \ + '.config/1Password/ssh/agent.toml' \ + '.config/bunch' \ + '.config/espanso' \ + '.config/hermes' \ + '.config/launchpallete' \ + '.config/zed'; do + printf '%s\n' "$work_mac_ignore" | rg -Fq "$personal_target" || { + printf 'work-mac .chezmoiignore is missing %s\n' "$personal_target" >&2 + exit 1 + } +done +if printf '%s\n' "$work_mac_ignore" | rg -q '^\.config/(ghostty|wezterm|kitty)$'; then + printf 'work-mac unexpectedly ignores dev terminals\n' >&2 + exit 1 +fi + +# Company Mac with 1Password must not clone personal repos or download +# personal macOS apps. +jq '.secrets.provider = "onepassword" | .chezmoi.os = "darwin"' \ + "$work_mac_data" >"$tmp_dir/work-mac-op.json" +work_mac_projects=$(chezmoi -S "$source_dir" \ + execute-template --override-data-file "$tmp_dir/work-mac-op.json" \ + --file "$source_dir/.chezmoiexternals/my-project.toml.tmpl") +if printf '%s\n' "$work_mac_projects" | rg -q 'type = "git-repo"'; then + printf 'work-mac unexpectedly clones personal projects\n' >&2 + exit 1 +fi +work_mac_ext_apps=$(chezmoi -S "$source_dir" \ + execute-template --override-data-file "$tmp_dir/work-mac-op.json" \ + --file "$source_dir/.chezmoiexternals/external-mac-apps.toml.tmpl") +if printf '%s\n' "$work_mac_ext_apps" | rg -q '^\['; then + printf 'work-mac unexpectedly downloads personal mac apps\n' >&2 + exit 1 +fi + +# Personal Mac keeps the personal externals (regression guard). +jq '.chezmoi.os = "darwin"' \ + "$workstation_data" >"$tmp_dir/personal-mac.json" +personal_mac_ext_apps=$(chezmoi -S "$source_dir" \ + execute-template --override-data-file "$tmp_dir/personal-mac.json" \ + --file "$source_dir/.chezmoiexternals/external-mac-apps.toml.tmpl") +printf '%s\n' "$personal_mac_ext_apps" | rg -q 'wisprflow' || { + printf 'personal mac unexpectedly skips external mac apps\n' >&2 + exit 1 +} + server_config=$(<"$server_config_file") if printf '%s\n' "$server_config" | rg -q '^encryption =|^\[age\]'; then printf 'secretless configuration unexpectedly enables Age encryption\n' >&2 From 2a9dd987473e68a616809b938ee99562b5ecd0fa Mon Sep 17 00:00:00 2001 From: chianyungcode Date: Sun, 27 Sep 2026 22:51:57 +0700 Subject: [PATCH 3/8] feat: update fish completions cli script --- .../bin/executable_update-fish-completions | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 chezmoi/bin/executable_update-fish-completions diff --git a/chezmoi/bin/executable_update-fish-completions b/chezmoi/bin/executable_update-fish-completions new file mode 100644 index 0000000..270d83e --- /dev/null +++ b/chezmoi/bin/executable_update-fish-completions @@ -0,0 +1,96 @@ +#!/usr/bin/env bash + +set -euo pipefail + +command -v chezmoi >/dev/null 2>&1 || { + echo "chezmoi is required to locate the source state." >&2 + exit 1 +} +command -v cmp >/dev/null 2>&1 || { + echo "cmp is required to compare completion files." >&2 + exit 1 +} + +source_dir="$(chezmoi source-path)" +completion_source_dir="$source_dir/dot_config/fish/completions" +tmpdir="$(mktemp -d "${TMPDIR:-/tmp}/update-fish-completions.XXXXXXXX")" +trap 'rm -rf "$tmpdir"' EXIT + +generated=() +generated_count=0 + +generate_stdout() { + local cli="$1" + local filename="$2" + shift 2 + + if ! command -v "$cli" >/dev/null 2>&1; then + printf 'Skipping %s: command is not installed.\n' "$cli" + return + fi + + printf 'Generating %s completion...\n' "$cli" + "$@" > "$tmpdir/$filename" + if [[ ! -s "$tmpdir/$filename" ]]; then + printf 'Error: %s generated an empty completion file.\n' "$cli" >&2 + exit 1 + fi + chmod 0644 "$tmpdir/$filename" + generated+=("$filename") + generated_count=$((generated_count + 1)) +} + +generate_stdout herdr herdr.fish herdr completion fish +generate_stdout atuin atuin.fish atuin gen-completions --shell fish +generate_stdout proto proto.fish proto completions --shell fish + +if command -v pueue >/dev/null 2>&1; then + printf 'Generating pueue completion...\n' + pueue completions fish "$tmpdir" + if [[ ! -s "$tmpdir/pueue.fish" ]]; then + echo "Error: pueue did not generate pueue.fish." >&2 + exit 1 + fi + chmod 0644 "$tmpdir/pueue.fish" + generated+=(pueue.fish) + generated_count=$((generated_count + 1)) +else + printf 'Skipping pueue: command is not installed.\n' +fi + +generate_stdout taplo taplo.fish taplo completions fish + +if [[ "$generated_count" -eq 0 ]]; then + printf 'No completion generators are installed.\n' + exit 0 +fi + +changed_count=0 + +for filename in "${generated[@]}"; do + source_filename="$filename" + if [[ "$filename" == atuin.fish ]]; then + source_filename=private_atuin.fish + fi + source_path="$completion_source_dir/$source_filename" + generated_file="$tmpdir/$filename" + if [[ ! -f "$source_path" ]]; then + printf 'Error: managed source file was not found: %s\n' "$source_path" >&2 + exit 1 + fi + + if cmp -s "$generated_file" "$source_path"; then + printf 'Unchanged: %s\n' "$filename" + continue + fi + + cp "$generated_file" "$source_path" + changed_count=$((changed_count + 1)) + printf 'Updated source state: %s\n' "$source_path" +done + +if [[ "$changed_count" -gt 0 ]]; then + printf "Run 'chezmoi apply' to update the installed Fish completions.\n" +else + printf 'Fish completions are already up to date.\n' +fi From f7a24c515ebd9e52b68ec81dc5594c97f56f769b Mon Sep 17 00:00:00 2001 From: chianyungcode Date: Tue, 29 Sep 2026 16:18:21 +0700 Subject: [PATCH 4/8] feat(rift): update config --- chezmoi/dot_config/rift/config.toml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/chezmoi/dot_config/rift/config.toml b/chezmoi/dot_config/rift/config.toml index 65f14ef..159e0ea 100644 --- a/chezmoi/dot_config/rift/config.toml +++ b/chezmoi/dot_config/rift/config.toml @@ -8,15 +8,15 @@ # - animation_fps: frames per second (0.0 = display refresh rate). 60–120 recommended. # ease_in_circ, ease_out_circ, ease_in_out_circ animate = false - animation_duration = 0.3 - animation_fps = 1 + animation_duration = 0.15 + animation_fps = 120 # Space activation behavior # - If true, spaces start inactive (rift does not manage windows there) # and you must toggle activation via a keybind (toggle_space_activated). # - If false, spaces are managed by default and you can disable specific ones. # Default is true; uncomment to change. - #default_disable = false + default_disable = false # Mouse/Focus behavior # - focus_follows_mouse: moving the mouse into a window focuses it @@ -241,11 +241,12 @@ # Workspace-specific rules # - workspace: target workspace by index (integer) or name (string) # - layout: layout mode to use ("traditional", "bsp", "stack", "master_stack", "scrolling") - # workspace_rules = [ - # { workspace = 1, layout = "bsp" }, - # { workspace = "second", layout = "scrolling" } - # ] - workspace_rules = [] + workspace_rules = [ + { workspace = "1", layout = "stack" }, + { workspace = "2", layout = "scrolling" }, + { workspace = "4", layout = "scrolling" }, + { workspace = "5", layout = "scrolling" }, + ] # Default workspace to activate on startup (0-based index). # If omitted, defaults to 0 (first workspace). Must be less than default_workspace_count. @@ -296,7 +297,6 @@ { app_id = "com.figma.Desktop", workspace = 5, floating = false }, { app_id = "com.apple.Music", workspace = 5, floating = true }, { app_id = "com.manytricks.Moom", workspace = 5, floating = true }, - { app_id = "com.jinghaoshe.qspace.pro", workspace = 5, floating = true }, { app_id = "com.philipyoungg.session-setapp", workspace = 5, floating = true }, { app_id = "io.raindrop.macapp", workspace = 5, floating = false }, { app_id = "com.apple.ActivityMonitor", workspace = 5, floating = true }, @@ -312,6 +312,9 @@ # Float only (no workspace assignment in aerospace) { app_id = "com.alienator88.Pearcleaner", floating = true }, + { app_id = "com.tinycast.app", floating = true }, + { app_id = "com.apple.systempreferences", floating = true }, + { app_id = "com.jinghaoshe.qspace.pro", floating = true }, ] # Modifier combinations that can be reused in key bindings @@ -396,7 +399,7 @@ "comb1 + V" = { move_window_to_workspace = 8 } "comb1 + X" = { move_window_to_workspace = 6 } - "Alt + Tab" = "switch_to_last_workspace" + "Alt + Escape" = "switch_to_last_workspace" # commands to change the layout engine of the active workspace "Alt + Ctrl + 1" = { set_workspace_layout = { mode = "stack" } } From 19ca54d6c6aca09c26525168da40810d2baec429 Mon Sep 17 00:00:00 2001 From: chianyungcode Date: Tue, 6 Oct 2026 15:27:26 +0700 Subject: [PATCH 5/8] feat(aerospace): update workspace assignment --- chezmoi/dot_config/aerospace/aerospace.toml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/chezmoi/dot_config/aerospace/aerospace.toml b/chezmoi/dot_config/aerospace/aerospace.toml index b9755a1..c5862e2 100644 --- a/chezmoi/dot_config/aerospace/aerospace.toml +++ b/chezmoi/dot_config/aerospace/aerospace.toml @@ -99,10 +99,6 @@ start-at-login = false if.app-id = "com.apidog.app" run = "move-node-to-workspace 2" -[[on-window-detected]] - if.app-id = "dev.kdrag0n.MacVirt" - run = "move-node-to-workspace 2" - [[on-window-detected]] if.app-id = "com.jetbrains.datagrip" run = "move-node-to-workspace 2" @@ -123,6 +119,10 @@ start-at-login = false if.app-id = "app.zen-browser.zen" run = "move-node-to-workspace 2" +[[on-window-detected]] + if.app-id = "at.studio.AsideBrowser" + run = "move-node-to-workspace 2" + [[on-window-detected]] if.app-id = "company.thebrowser.dia" run = "move-node-to-workspace 2" @@ -143,6 +143,14 @@ start-at-login = false if.app-id = "ai.perplexity.comet" run = "move-node-to-workspace 2" +[[on-window-detected]] + if.app-id = "com.openai.codex" + run = "move-node-to-workspace 3" + +[[on-window-detected]] + if.app-id = "dev.kdrag0n.MacVirt" + run = "move-node-to-workspace 3" + [[on-window-detected]] if.app-id = "notion.id" run = "move-node-to-workspace 4" From 944999479d8c859dbb8bd1db54b876583b707cbd Mon Sep 17 00:00:00 2001 From: chianyungcode Date: Thu, 8 Oct 2026 13:54:54 +0700 Subject: [PATCH 6/8] feat(wezterm): add flexoki-dark theme --- .../wezterm/themes/flexoki-dark.lua | 31 +++++++++++++++++++ chezmoi/dot_config/wezterm/wezterm.lua.tmpl | 3 +- 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 chezmoi/dot_config/wezterm/themes/flexoki-dark.lua diff --git a/chezmoi/dot_config/wezterm/themes/flexoki-dark.lua b/chezmoi/dot_config/wezterm/themes/flexoki-dark.lua new file mode 100644 index 0000000..2abe59d --- /dev/null +++ b/chezmoi/dot_config/wezterm/themes/flexoki-dark.lua @@ -0,0 +1,31 @@ +-- Match Ghostty's bundled Flexoki Dark palette and custom cursor. +-- Source: https://github.com/mbadolato/iTerm2-Color-Schemes/blob/master/ghostty/Flexoki%20Dark +return { + foreground = "#CECDC3", + background = "#100F0F", + cursor_bg = "#00FF98", + cursor_border = "#00FF98", + cursor_fg = "#100F0F", + selection_bg = "#403E3C", + selection_fg = "#CECDC3", + ansi = { + "#100F0F", -- black + "#D14D41", -- red + "#879A39", -- green + "#D0A215", -- yellow + "#4385BE", -- blue + "#CE5D97", -- magenta + "#3AA99F", -- cyan + "#878580", -- white + }, + brights = { + "#575653", -- bright black + "#AF3029", -- bright red + "#66800B", -- bright green + "#AD8301", -- bright yellow + "#205EA6", -- bright blue + "#A02F6F", -- bright magenta + "#24837B", -- bright cyan + "#CECDC3", -- bright white + }, +} diff --git a/chezmoi/dot_config/wezterm/wezterm.lua.tmpl b/chezmoi/dot_config/wezterm/wezterm.lua.tmpl index f876516..ebe1e75 100644 --- a/chezmoi/dot_config/wezterm/wezterm.lua.tmpl +++ b/chezmoi/dot_config/wezterm/wezterm.lua.tmpl @@ -42,8 +42,7 @@ wezterm.on("format-tab-title", function(tab, tabs, panes, config, hover, max_wid end) local config = { - colors = dofile(wezterm.config_dir .. "/themes/oldworld-vibrant.lua"), - -- config.color_scheme = 'Colorful Colors (terminal.sexy)' + colors = dofile(wezterm.config_dir .. "/themes/flexoki-dark.lua"), -- ### Config font ### -- Alternative font: Geist Mono/Fira Code/JetBrains Mono/MonoLisa/MesloLGS Nerd Font Mono/Maple Mono/Cartograph CF From f0d7f79e008a8ed63b6501d49f800d72fc892fa4 Mon Sep 17 00:00:00 2001 From: chianyungcode Date: Sun, 11 Oct 2026 16:12:34 +0700 Subject: [PATCH 7/8] feat(zellij): migrate zellij keybind into tmux style keymap and remap prefix back to `ctrl+b` --- chezmoi/dot_config/herdr/config.toml | 2 +- .../dot_config/kanata/parts/chords.kbd.tmpl | 4 +- chezmoi/dot_config/kanata/parts/core.kbd.tmpl | 6 +- chezmoi/dot_config/kanata/parts/herdr.kbd | 38 +-- chezmoi/dot_config/kanata/parts/tmux.kbd | 2 +- chezmoi/dot_config/kanata/parts/zellij.kbd | 49 --- .../dot_config/kanata/row-staggered.kbd.tmpl | 1 - chezmoi/dot_config/tmux/keybind.conf.tmpl | 5 +- chezmoi/dot_config/zellij/config.kdl | 288 +++++------------- 9 files changed, 111 insertions(+), 284 deletions(-) delete mode 100644 chezmoi/dot_config/kanata/parts/zellij.kbd diff --git a/chezmoi/dot_config/herdr/config.toml b/chezmoi/dot_config/herdr/config.toml index 07f4571..05223dd 100644 --- a/chezmoi/dot_config/herdr/config.toml +++ b/chezmoi/dot_config/herdr/config.toml @@ -15,7 +15,7 @@ onboarding = false tab_bar_position = "bottom" [keys] - prefix = "ctrl+a" + prefix = "ctrl+b" # worktree new_worktree = "prefix+W" diff --git a/chezmoi/dot_config/kanata/parts/chords.kbd.tmpl b/chezmoi/dot_config/kanata/parts/chords.kbd.tmpl index 4127e72..46b4358 100644 --- a/chezmoi/dot_config/kanata/parts/chords.kbd.tmpl +++ b/chezmoi/dot_config/kanata/parts/chords.kbd.tmpl @@ -14,12 +14,12 @@ (defchordsv2 {{- if eq .chezmoi.os "darwin" }} - ;; (m ,) C-a $input-chord-time all-released () + ;; (m ,) C-b $input-chord-time all-released () (i o) A-left 20 all-released () (o p) A-right 20 all-released () {{- else if eq .chezmoi.os "linux" }} - ;; (m ,) C-a $input-chord-time all-released () + ;; (m ,) C-b $input-chord-time all-released () (i o) C-left 20 all-released () (o p) C-right 20 all-released () {{- end }} diff --git a/chezmoi/dot_config/kanata/parts/core.kbd.tmpl b/chezmoi/dot_config/kanata/parts/core.kbd.tmpl index 7bcc033..1f28787 100644 --- a/chezmoi/dot_config/kanata/parts/core.kbd.tmpl +++ b/chezmoi/dot_config/kanata/parts/core.kbd.tmpl @@ -6,7 +6,7 @@ dtn S-C-A-M-f5 ;; Dictation dnd S-C-A-M-f6 ;; Do Not Disturb - ;; Used by the base, tmux, and zellij layers. + ;; Used by the base and tmux layers. lwh_symbols (layer-while-held symbols) thl-spc-symbols (tap-hold $tap-time $hold-time spc @lwh_symbols) ) @@ -23,8 +23,6 @@ thl-ret-herdr (tap-hold $tap-time $hold-time ret @lwh_herdr) thl-sls-tmux (tap-hold $tap-time $hold-time / @lwh_tmux) thl-z-tmux (tap-hold $tap-time $hold-time z @lwh_tmux) - thl-v-zlj (tap-hold $tap-time $hold-time v (layer-while-held zellij)) - thl-m-zlj (tap-hold $tap-time $hold-time m (layer-while-held zellij)) ;; Home-row modifiers and sublayer access. a (tap-hold $tap-time $hold-time a (layer-while-held sublayers)) @@ -49,7 +47,7 @@ grv 1 2 3 4 5 6 7 8 9 0 - = bspc @lmet_tab q w e r t y u i o p [ ] \ @thl-caps-nav @a @s @d @f g h @j @k @l @; ' @thl-ret-herdr - lsft @thl-z-tmux x c @thl-v-zlj b n @thl-m-zlj , . @thl-sls-tmux rsft + lsft @thl-z-tmux x c v b n m , . @thl-sls-tmux rsft lctl lmet lalt @thl-spc-symbols ralt rmet rctl ) diff --git a/chezmoi/dot_config/kanata/parts/herdr.kbd b/chezmoi/dot_config/kanata/parts/herdr.kbd index 882458b..9a70126 100644 --- a/chezmoi/dot_config/kanata/parts/herdr.kbd +++ b/chezmoi/dot_config/kanata/parts/herdr.kbd @@ -1,26 +1,26 @@ ;; HERDR layer and aliases. (defalias - herdr-workspace-1 (macro C-a C-1) - herdr-workspace-2 (macro C-a C-2) - herdr-workspace-3 (macro C-a C-3) - herdr-workspace-4 (macro C-a C-4) - herdr-workspace-5 (macro C-a C-5) - herdr-workspace-6 (macro C-a C-6) - herdr-workspace-7 (macro C-a C-7) - herdr-workspace-8 (macro C-a C-8) - herdr-workspace-9 (macro C-a C-9) + herdr-workspace-1 (macro C-b C-1) + herdr-workspace-2 (macro C-b C-2) + herdr-workspace-3 (macro C-b C-3) + herdr-workspace-4 (macro C-b C-4) + herdr-workspace-5 (macro C-b C-5) + herdr-workspace-6 (macro C-b C-6) + herdr-workspace-7 (macro C-b C-7) + herdr-workspace-8 (macro C-b C-8) + herdr-workspace-9 (macro C-b C-9) - herdr-agent-1 (macro C-a A-1) - herdr-agent-2 (macro C-a A-2) - herdr-agent-3 (macro C-a A-3) - herdr-agent-4 (macro C-a A-4) - herdr-agent-5 (macro C-a A-5) - herdr-agent-6 (macro C-a A-6) - herdr-agent-7 (macro C-a A-7) - herdr-agent-8 (macro C-a A-8) - herdr-agent-9 (macro C-a A-9) + herdr-agent-1 (macro C-b A-1) + herdr-agent-2 (macro C-b A-2) + herdr-agent-3 (macro C-b A-3) + herdr-agent-4 (macro C-b A-4) + herdr-agent-5 (macro C-b A-5) + herdr-agent-6 (macro C-b A-6) + herdr-agent-7 (macro C-b A-7) + herdr-agent-8 (macro C-b A-8) + herdr-agent-9 (macro C-b A-9) - herdr-pane-zoom (macro C-a z) + herdr-pane-zoom (macro C-b z) ) (deflayer herdr diff --git a/chezmoi/dot_config/kanata/parts/tmux.kbd b/chezmoi/dot_config/kanata/parts/tmux.kbd index 3de9f69..37b1a70 100644 --- a/chezmoi/dot_config/kanata/parts/tmux.kbd +++ b/chezmoi/dot_config/kanata/parts/tmux.kbd @@ -1,6 +1,6 @@ ;; TMUX layer and aliases. (defalias - tmux-prefix C-a + tmux-prefix C-b tx-new-window (macro @tmux-prefix c) ;; New window. tx-new-session (macro @tmux-prefix S-s) diff --git a/chezmoi/dot_config/kanata/parts/zellij.kbd b/chezmoi/dot_config/kanata/parts/zellij.kbd deleted file mode 100644 index 275d702..0000000 --- a/chezmoi/dot_config/kanata/parts/zellij.kbd +++ /dev/null @@ -1,49 +0,0 @@ -;; Zellij layer and aliases. -(defalias - zlj-prefix C-a - zlj-rsz (macro @zlj-prefix 25 r) - - ;; Session. - zlj-ses (macro @zlj-prefix 25 o) - zlj-sessions (macro @zlj-prefix 25 o 25 w) ;; session list - zlj-ses-dtch (macro @zlj-prefix 25 o 25 d) ;; session detach - - ;; Tab. - zlj-tab (macro @zlj-prefix 25 t) - zlj-new-tab (macro @zlj-prefix 25 t 25 n) - zlj-tab-qs (macro @zlj-prefix 25 t 10 tab 10 esc) ;; switch last - zlj-tab-cls (macro @zlj-prefix 25 t 25 x) - - zlj-t-1 (macro @zlj-prefix 25 t 25 Digit1) - zlj-t-2 (macro @zlj-prefix 25 t 25 Digit2) - zlj-t-3 (macro @zlj-prefix 25 t 25 Digit3) - zlj-t-4 (macro @zlj-prefix 25 t 25 Digit4) - zlj-t-5 (macro @zlj-prefix 25 t 25 Digit5) - zlj-t-6 (macro @zlj-prefix 25 t 25 Digit6) - zlj-t-7 (macro @zlj-prefix 25 t 25 Digit7) - zlj-t-8 (macro @zlj-prefix 25 t 25 Digit8) - zlj-t-9 (macro @zlj-prefix 25 t 25 Digit9) - - ;; Pane. - zlj-pane (macro @zlj-prefix p) - zlj-pane-cls (macro @zlj-prefix 25 p 25 x) ;; close pane - zlj-pane-qs (macro @zlj-prefix 25 p 25 tab 25 esc) ;; switch last - - ;; Split pane. - zlj-splith (macro @zlj-prefix 25 p 25 -) ;; split horizontal - zlj-splitv (macro @zlj-prefix 25 p 25 S-\) ;; split vertical - - zlj-p-left (macro @zlj-prefix 25 p 25 left esc) - zlj-p-bottom (macro @zlj-prefix 25 p 25 down esc) - zlj-p-top (macro @zlj-prefix 25 p 25 up esc) - zlj-p-right (macro @zlj-prefix 25 p 25 right esc) -) - -(deflayer zellij - πŸ”… πŸ”† @mc @sls @dtn @dnd β—€β—€ ▢⏸ β–Άβ–Ά πŸ”‡ πŸ”‰ πŸ”Š - grv @zlj-t-1 @zlj-t-2 @zlj-t-3 @zlj-t-4 @zlj-t-5 @zlj-t-6 @zlj-t-7 @zlj-t-8 @zlj-t-9 XX @zlj-splith @zlj-splitv XX - tab @zlj-sessions XX @zlj-ses-dtch @zlj-rsz @zlj-tab XX XX XX @zlj-ses @zlj-pane XX XX XX - caps XX @zlj-tab-qs @zlj-pane-qs XX XX @zlj-p-left @zlj-p-bottom @zlj-p-top @zlj-p-right XX XX XX - lsft @zlj-tab-cls @zlj-pane-cls @zlj-new-tab XX XX XX XX XX XX XX XX - lctl lmet lalt spc ralt rmet rctl -) diff --git a/chezmoi/dot_config/kanata/row-staggered.kbd.tmpl b/chezmoi/dot_config/kanata/row-staggered.kbd.tmpl index cd115f1..33db367 100644 --- a/chezmoi/dot_config/kanata/row-staggered.kbd.tmpl +++ b/chezmoi/dot_config/kanata/row-staggered.kbd.tmpl @@ -43,7 +43,6 @@ (include "parts/core.kbd") (include "parts/tmux.kbd") (include "parts/herdr.kbd") -(include "parts/zellij.kbd") {{ if eq .chezmoi.os "darwin" -}} (include "parts/raycast.kbd") diff --git a/chezmoi/dot_config/tmux/keybind.conf.tmpl b/chezmoi/dot_config/tmux/keybind.conf.tmpl index 45d8988..d943d0a 100644 --- a/chezmoi/dot_config/tmux/keybind.conf.tmpl +++ b/chezmoi/dot_config/tmux/keybind.conf.tmpl @@ -4,9 +4,8 @@ # ------------------------------------------------------------------- # Prefix # ------------------------------------------------------------------- -unbind C-b -set -g prefix C-a -bind-key C-a send-prefix # or: bind-key -T prefix C-a send-prefix +set -g prefix C-b +bind-key C-b send-prefix # ------------------------------------------------------------------- # Configuration diff --git a/chezmoi/dot_config/zellij/config.kdl b/chezmoi/dot_config/zellij/config.kdl index 4d9b9ac..4759fa2 100644 --- a/chezmoi/dot_config/zellij/config.kdl +++ b/chezmoi/dot_config/zellij/config.kdl @@ -3,230 +3,111 @@ // keybinds clear-defaults=true { - locked { - bind "Ctrl a" { SwitchToMode "normal"; } + // Normal mode is the default and acts as pass-through: every unbound key is + // written to the pane, so plain typing behaves exactly like the old locked + // mode. The Kanata tmux layer (parts/tmux.kbd) sends "Ctrl b" + ; + // "Ctrl b" is the tmux-compatible prefix and the tmux block below mirrors + // that Kanata layer 1:1. + normal { + bind "Ctrl b" { SwitchToMode "tmux"; } } - pane { - bind "left" { MoveFocus "left"; } - bind "down" { MoveFocus "down"; } - bind "up" { MoveFocus "up"; } - bind "right" { MoveFocus "right"; } - bind "r" { SwitchToMode "renamepane"; PaneNameInput 0; } - bind "-" { NewPane "down"; SwitchToMode "locked"; } - bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "locked"; } - bind "f" { ToggleFocusFullscreen; SwitchToMode "locked"; } - bind "h" { MoveFocus "left"; } - bind "i" { TogglePanePinned; SwitchToMode "locked"; } - bind "j" { MoveFocus "down"; } - bind "k" { MoveFocus "up"; } - bind "l" { MoveFocus "right"; } - bind "n" { NewPane; SwitchToMode "locked"; } - bind "p" { SwitchToMode "normal"; } - bind "|" { NewPane "right"; SwitchToMode "locked"; } - bind "s" { NewPane "stacked"; SwitchToMode "locked"; } - bind "w" { ToggleFloatingPanes; SwitchToMode "locked"; } - bind "x" { CloseFocus; SwitchToMode "locked"; } - bind "z" { TogglePaneFrames; SwitchToMode "locked"; } - bind "tab" { SwitchFocus; } - } - tab { - bind "left" { GoToPreviousTab; } - bind "down" { GoToNextTab; } - bind "up" { GoToPreviousTab; } - bind "right" { GoToNextTab; } - 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 "[" { BreakPaneLeft; SwitchToMode "locked"; } - bind "]" { BreakPaneRight; SwitchToMode "locked"; } - bind "b" { BreakPane; SwitchToMode "locked"; } - bind "h" { GoToPreviousTab; } - bind "j" { GoToNextTab; } - bind "k" { GoToPreviousTab; } - bind "l" { GoToNextTab; } - bind "n" { NewTab; SwitchToMode "locked"; } - bind "r" { SwitchToMode "renametab"; TabNameInput 0; } - bind "s" { ToggleActiveSyncTab; SwitchToMode "locked"; } - bind "t" { SwitchToMode "normal"; } - bind "x" { CloseTab; SwitchToMode "locked"; } - 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 "H" { Resize "Decrease left"; } - bind "J" { Resize "Decrease down"; } - bind "K" { Resize "Decrease up"; } - bind "L" { Resize "Decrease right"; } - bind "h" { Resize "Increase left"; } - bind "j" { Resize "Increase down"; } - bind "k" { Resize "Increase up"; } - bind "l" { Resize "Increase right"; } - bind "r" { SwitchToMode "normal"; } - } - move { - bind "left" { MovePane "left"; } - bind "down" { MovePane "down"; } - bind "up" { MovePane "up"; } - bind "right" { MovePane "right"; } - bind "h" { MovePane "left"; } - bind "j" { MovePane "down"; } - bind "k" { MovePane "up"; } - bind "l" { MovePane "right"; } - bind "m" { SwitchToMode "normal"; } - bind "n" { MovePane; } - bind "p" { MovePaneBackwards; } - bind "tab" { MovePane; } - } - scroll { - bind "Alt left" { MoveFocusOrTab "left"; SwitchToMode "locked"; } - bind "Alt down" { MoveFocus "down"; SwitchToMode "locked"; } - bind "Alt up" { MoveFocus "up"; SwitchToMode "locked"; } - bind "Alt right" { MoveFocusOrTab "right"; SwitchToMode "locked"; } - bind "e" { EditScrollback; SwitchToMode "locked"; } - bind "f" { SwitchToMode "entersearch"; SearchInput 0; } - bind "Alt h" { MoveFocusOrTab "left"; SwitchToMode "locked"; } - bind "Alt j" { MoveFocus "down"; SwitchToMode "locked"; } - bind "Alt k" { MoveFocus "up"; SwitchToMode "locked"; } - bind "Alt l" { MoveFocusOrTab "right"; SwitchToMode "locked"; } - bind "s" { SwitchToMode "normal"; } - } - search { - bind "c" { SearchToggleOption "CaseSensitivity"; } - bind "n" { Search "down"; } - bind "o" { SearchToggleOption "WholeWord"; } - bind "p" { Search "up"; } - bind "w" { SearchToggleOption "Wrap"; } - } - session { - bind "a" { - LaunchOrFocusPlugin "zellij:about" { - floating true - move_to_focused_tab true - } - SwitchToMode "locked" - } - bind "c" { - LaunchOrFocusPlugin "configuration" { - floating true - move_to_focused_tab true - } - SwitchToMode "locked" - } - bind "d" { Detach; } - bind "o" { SwitchToMode "normal"; } - bind "p" { - LaunchOrFocusPlugin "plugin-manager" { - floating true - move_to_focused_tab true - } - SwitchToMode "locked" - } - bind "s" { - LaunchOrFocusPlugin "zellij:share" { + + // Prefix key-table, entered with Ctrl b. Each action is one-shot and + // returns to normal mode, like tmux's key-table expiry. + tmux { + bind "Ctrl b" { Write 2; SwitchToMode "normal"; } // send-prefix + bind "esc" "enter" { SwitchToMode "normal"; } // cancel + + // Session. + // S: new-session, $: rename-session, A: last session - zellij has no + // bindable actions for these, so all three open the session-manager. + bind "S" "Shift s" "$" "Shift 4" "A" "Shift a" { + LaunchOrFocusPlugin "session-manager" { floating true move_to_focused_tab true } - SwitchToMode "locked" + SwitchToMode "normal" } - bind "w" { + bind "s" { // select session (sesh picker in tmux) LaunchOrFocusPlugin "session-manager" { floating true move_to_focused_tab true } - SwitchToMode "locked" + SwitchToMode "normal" } + bind "g" { Quit; } // kill-session + bind "d" { Detach; } // detach-client + + // Windows -> tabs. + bind "c" { NewTab; SwitchToMode "normal"; } // new-window + bind "a" { ToggleTab; SwitchToMode "normal"; } // last-window + bind "&" "Shift 7" { CloseTab; SwitchToMode "normal"; } // kill-window + bind "1" { GoToTab 1; SwitchToMode "normal"; } + bind "2" { GoToTab 2; SwitchToMode "normal"; } + bind "3" { GoToTab 3; SwitchToMode "normal"; } + bind "4" { GoToTab 4; SwitchToMode "normal"; } + bind "5" { GoToTab 5; SwitchToMode "normal"; } + bind "6" { GoToTab 6; SwitchToMode "normal"; } + bind "7" { GoToTab 7; SwitchToMode "normal"; } + bind "8" { GoToTab 8; SwitchToMode "normal"; } + bind "," { SwitchToMode "renametab"; TabNameInput 0; } // rename-window + + // Panes. + bind "-" { NewPane "Down"; SwitchToMode "normal"; } // split-window -v + bind "|" "Shift \\" { NewPane "Right"; SwitchToMode "normal"; } // split-window -h + bind "x" { CloseFocus; SwitchToMode "normal"; } // kill-pane + bind "q" { FocusLastPane; SwitchToMode "normal"; } // last-pane + bind "h" { MoveFocus "Left"; SwitchToMode "normal"; } + bind "j" { MoveFocus "Down"; SwitchToMode "normal"; } + bind "k" { MoveFocus "Up"; SwitchToMode "normal"; } + bind "l" { MoveFocus "Right"; SwitchToMode "normal"; } + bind "left" { Resize "Increase Left"; SwitchToMode "normal"; } + bind "down" { Resize "Increase Down"; SwitchToMode "normal"; } + bind "up" { Resize "Increase Up"; SwitchToMode "normal"; } + bind "right" { Resize "Increase Right"; SwitchToMode "normal"; } + bind "{" "Shift [" { MovePaneBackwards; SwitchToMode "normal"; } // swap-pane -U + bind "}" "Shift ]" { MovePane; SwitchToMode "normal"; } // swap-pane -D + bind "u" { SwitchToMode "renamepane"; PaneNameInput 0; } // rename-pane + + // Copy-mode parity. + bind "[" { SwitchToMode "scroll"; } // copy-mode + bind "F" "Shift f" { EditScrollback; SwitchToMode "normal"; } // flash-copy substitute + // w (worktree picker) intentionally unbound: workmux is tmux-only. } - shared_among "normal" "locked" { - bind "Alt left" { MoveFocusOrTab "left"; } - bind "Alt down" { MoveFocus "down"; } - bind "Alt up" { MoveFocus "up"; } - bind "Alt right" { MoveFocusOrTab "right"; } - bind "Alt +" { Resize "Increase"; } - bind "Alt -" { Resize "Decrease"; } - bind "Alt =" { Resize "Increase"; } - bind "Alt [" { PreviousSwapLayout; } - bind "Alt ]" { NextSwapLayout; } - // bind "Alt f" { ToggleFloatingPanes; } - bind "Alt h" { MoveFocusOrTab "left"; } - // bind "Alt i" { MoveTab "left"; } - bind "Alt j" { MoveFocus "down"; } - bind "Alt k" { MoveFocus "up"; } - bind "Alt l" { MoveFocusOrTab "right"; } - bind "Alt n" { NewPane; } - // bind "Alt o" { MoveTab "right"; } - bind "Alt p" { TogglePaneInGroup; } - bind "Alt Shift p" { ToggleGroupMarking; } - } - shared_except "locked" "renametab" "renamepane" { - bind "Ctrl a" { SwitchToMode "locked"; } - bind "Ctrl q" { Quit; } - } - shared_except "locked" "entersearch" { - bind "enter" { SwitchToMode "locked"; } - } - shared_except "locked" "entersearch" "renametab" "renamepane" { - bind "esc" { SwitchToMode "locked"; } - } - shared_except "locked" "entersearch" "renametab" "renamepane" "move" { - bind "m" { SwitchToMode "move"; } - } - shared_except "locked" "entersearch" "search" "renametab" "renamepane" "session" { - bind "o" { SwitchToMode "session"; } - } - shared_except "locked" "tab" "entersearch" "renametab" "renamepane" { - bind "t" { SwitchToMode "tab"; } - } - shared_among "normal" "resize" "tab" "scroll" "prompt" "tmux" { - bind "p" { SwitchToMode "pane"; } - } - shared_among "normal" "resize" "search" "move" "prompt" "tmux" { - bind "s" { SwitchToMode "scroll"; } - } - shared_except "locked" "resize" "pane" "tab" "entersearch" "renametab" "renamepane" { - bind "r" { SwitchToMode "resize"; } - } - shared_among "scroll" "search" { - bind "PageDown" { PageScrollDown; } - bind "PageUp" { PageScrollUp; } - bind "left" { PageScrollUp; } - bind "down" { ScrollDown; } - bind "up" { ScrollUp; } - bind "right" { PageScrollDown; } - bind "Ctrl b" { PageScrollUp; } - bind "Ctrl c" { ScrollToBottom; SwitchToMode "locked"; } + + // copy-mode stand-in: vi keys, q/Esc/Enter leave. + scroll { + bind "q" "esc" "enter" { SwitchToMode "normal"; } + bind "left" "h" { PageScrollUp; } + bind "down" "j" { ScrollDown; } + bind "up" "k" { ScrollUp; } + bind "right" "l" { PageScrollDown; } bind "d" { HalfPageScrollDown; } - bind "Ctrl f" { PageScrollDown; } - bind "h" { PageScrollUp; } - bind "j" { ScrollDown; } - bind "k" { ScrollUp; } - bind "l" { PageScrollDown; } bind "u" { HalfPageScrollUp; } + bind "PageDown" { PageScrollDown; } + bind "PageUp" { PageScrollUp; } + bind "e" { EditScrollback; SwitchToMode "normal"; } + bind "f" { SwitchToMode "entersearch"; SearchInput 0; } } entersearch { - bind "Ctrl c" { SwitchToMode "scroll"; } bind "esc" { SwitchToMode "scroll"; } bind "enter" { SwitchToMode "search"; } } - renametab { - bind "esc" { UndoRenameTab; SwitchToMode "tab"; } + search { + bind "c" { SearchToggleOption "CaseSensitivity"; } + bind "n" { Search "down"; } + bind "o" { SearchToggleOption "WholeWord"; } + bind "p" { Search "up"; } + bind "w" { SearchToggleOption "Wrap"; } + bind "esc" "enter" "q" { SwitchToMode "scroll"; } } - shared_among "renametab" "renamepane" { - bind "Ctrl c" { SwitchToMode "locked"; } + renametab { + bind "enter" { SwitchToMode "normal"; } + bind "esc" { UndoRenameTab; SwitchToMode "normal"; } } renamepane { - bind "esc" { UndoRenamePane; SwitchToMode "pane"; } + bind "enter" { SwitchToMode "normal"; } + bind "esc" { UndoRenamePane; SwitchToMode "normal"; } } } @@ -274,7 +155,6 @@ theme "catppuccin-macchiato" // Choose the base input mode of zellij. // Default: normal // -default_mode "locked" // Choose the path to the default shell that zellij will use for opening new panes // Default: $SHELL From 34fd261f490e0c6225ae991a09b68386cef282c0 Mon Sep 17 00:00:00 2001 From: chianyungcode Date: Sun, 11 Oct 2026 17:08:36 +0700 Subject: [PATCH 8/8] feat(packages): add spotatui package --- chezmoi/.chezmoidata/packages-system.toml | 7 +++++++ chezmoi/dot_config/fish/conf.d/90_jw.fish | 1 + chezmoi/dot_config/zsh/conf.d/third-party/jw.sh | 1 + .../zsh/conf.d/third-party/{90_sk-git.sh => sk-git.sh} | 0 .../zsh/conf.d/third-party/{99_skim.sh => skim.sh} | 0 5 files changed, 9 insertions(+) create mode 100644 chezmoi/dot_config/fish/conf.d/90_jw.fish create mode 100644 chezmoi/dot_config/zsh/conf.d/third-party/jw.sh rename chezmoi/dot_config/zsh/conf.d/third-party/{90_sk-git.sh => sk-git.sh} (100%) rename chezmoi/dot_config/zsh/conf.d/third-party/{99_skim.sh => skim.sh} (100%) diff --git a/chezmoi/.chezmoidata/packages-system.toml b/chezmoi/.chezmoidata/packages-system.toml index 58cf998..b98d414 100644 --- a/chezmoi/.chezmoidata/packages-system.toml +++ b/chezmoi/.chezmoidata/packages-system.toml @@ -453,6 +453,10 @@ "presenterm", # Presentation in CLI "tuxedo", # task management TUI + + # Media + "LargeModGames/spotatui/spotatui", # Terminal music player + # Window Management "felixkratz/formulae/borders", @@ -650,6 +654,9 @@ "asciinema", # record your terminal "superfile", # file manager in terminal + # Media + "spotatui-bin", # Terminal music player + # Development Tools "opencode-bin", "fd", diff --git a/chezmoi/dot_config/fish/conf.d/90_jw.fish b/chezmoi/dot_config/fish/conf.d/90_jw.fish new file mode 100644 index 0000000..bedf662 --- /dev/null +++ b/chezmoi/dot_config/fish/conf.d/90_jw.fish @@ -0,0 +1 @@ +jw shell init fish | source diff --git a/chezmoi/dot_config/zsh/conf.d/third-party/jw.sh b/chezmoi/dot_config/zsh/conf.d/third-party/jw.sh new file mode 100644 index 0000000..77e3b9b --- /dev/null +++ b/chezmoi/dot_config/zsh/conf.d/third-party/jw.sh @@ -0,0 +1 @@ +eval "$(jw shell init zsh)" diff --git a/chezmoi/dot_config/zsh/conf.d/third-party/90_sk-git.sh b/chezmoi/dot_config/zsh/conf.d/third-party/sk-git.sh similarity index 100% rename from chezmoi/dot_config/zsh/conf.d/third-party/90_sk-git.sh rename to chezmoi/dot_config/zsh/conf.d/third-party/sk-git.sh diff --git a/chezmoi/dot_config/zsh/conf.d/third-party/99_skim.sh b/chezmoi/dot_config/zsh/conf.d/third-party/skim.sh similarity index 100% rename from chezmoi/dot_config/zsh/conf.d/third-party/99_skim.sh rename to chezmoi/dot_config/zsh/conf.d/third-party/skim.sh