Skip to content
Merged
44 changes: 44 additions & 0 deletions docs/zellij-future-changes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Zellij: Future Changes to Watch

Tracking upstream features and plugins that would improve the zellij setup once available.

## Auto Tab Rename (blocked on zellij release)

**Plugin:** [vmaerten/zellij-tab-rename](https://github.com/vmaerten/zellij-tab-rename)

Automatically renames tabs based on CWD, running process, or git root. Closest thing to tmux's `automatic-rename` behavior. Supports `source "process"` mode which shows `nvim`, `cargo`, etc. and falls back to directory name for shells.

**Blocked on:** `CwdChanged` event from [zellij PR #4546](https://github.com/zellij-org/zellij/pull/4546) — not yet in a release. Current zellij 0.43.1 does not support it.

**When available:** Add to `load_plugins` in `config.kdl.tmpl` with `source "process"` and `git_root "true"`.

## Clickable Session Name (zjstatus feature request)

zjstatus's `{session}` widget has no click behavior. Clicking it to open the session manager (`zellij:session-manager`) would match the UX of `{tabs}` (click to switch) and `{swap_layout}` (click to cycle).

**Status:** Not implemented. Would need a feature request on [dj95/zjstatus](https://github.com/dj95/zjstatus/issues).

## Autolock Status Indicator

The `zellij-autolock` plugin's enabled/disabled state is invisible to other plugins. `MessagePlugin` from keybindings sends `CustomMessage` events, but zjstatus pipes expect `PipeMessage` events — they're different event types in zellij's architecture.

**What would fix it:**
- zellij adding a silent `Run` action for keybindings (no pane opened)
- zellij unifying `CustomMessage` and `PipeMessage` so `MessagePlugin` can reach zjstatus pipes
- autolock exposing its state via a file or pipe

## Mouse Button Bindings

Zellij's keybinding system only supports keyboard inputs. No mouse button bindings (middle-click to close tab, right-click context menu). Mouse events are either passthrough to terminal apps or internal UI only.

**Status:** No known proposal. Would need a zellij core feature request.

## Image Support in Multiplexers (yazi/superfile)

Terminal image protocols (Kitty graphics, sixel) don't pass through zellij correctly. Tools like yazi and superfile that rely on inline image rendering show broken or no images inside zellij panes.

**Status:** Known zellij limitation. Partial sixel support exists but Kitty graphics protocol passthrough is incomplete. Track [zellij-org/zellij#2790](https://github.com/zellij-org/zellij/issues/2790) and related issues.

## Independent Pane Border Colors

Pane border colors are tied to the theme's component system (`frame_selected`, `frame_unselected`, `frame_highlight`). The current custom theme (`catppuccin-mocha-subtle`) uses surface0/1/2 for subtle borders. If zellij adds dedicated border color settings independent of the component theme, the workaround theme could be simplified.
2 changes: 2 additions & 0 deletions dot_config/fish/conf.d/zz_03_interactive.fish
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,6 @@ if status is-interactive

# Set simple hostname for prompt display
set -gx HOST (string split -f1 '.' $hostname)


Copy link

Copilot AI Mar 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are two consecutive blank lines added before end, which makes the block look like it has trailing whitespace. Consider removing the extra empty lines to keep the interactive config tight/consistent.

Suggested change

Copilot uses AI. Check for mistakes.
end
38 changes: 20 additions & 18 deletions dot_config/fish/conf.d/zz_04_abbr.fish
Original file line number Diff line number Diff line change
Expand Up @@ -7,67 +7,69 @@ if status is-interactive
# --- Compatible syntax (flags mostly work the same) ---

# Eza for ls
abbr --add ls 'eza'
abbr --add ls eza
abbr --add ll 'eza -l --icons=auto --group-directories-first'
abbr --add l. 'eza -d .*'
abbr --add l1 'eza -1'
abbr --add la 'eza -la --icons=auto --group-directories-first'
abbr --add lt 'eza --tree --level=2'

# Bat for cat
abbr --add cat 'bat'
abbr --add cat bat

# Trash for rm (safer delete)
abbr --add rm 'trash'
abbr --add rm trash

# Difftastic for diff
abbr --add diff 'difft'
abbr --add diff difft

# Duf for df (beautiful disk free)
abbr --add df 'duf'
abbr --add df duf

# Dust for du (visual disk usage)
abbr --add du 'dust'
abbr --add du dust

# Gping for ping (graph visualization)
abbr --add ping 'gping'
abbr --add ping gping

# --- Different syntax (forces learning the new tool) ---

# Ripgrep for grep
abbr --add grep 'rg'
abbr --add grep rg

# fd for find
abbr --add find 'fd'
abbr --add find fd

# sd for sed
abbr --add sed 'sd'
abbr --add sed sd

# xh for curl
abbr --add curl 'xh'
abbr --add curl xh

# --- Editor (force neovim) ---

abbr --add vim 'nvim'
abbr --add vi 'nvim'
abbr --add vim nvim
abbr --add vi nvim

# --- Shorthand for modern tools ---

# Chezmoi
abbr --add cz 'chezmoi'
abbr --add cz chezmoi

# Lazygit
abbr --add lg 'lazygit'
abbr --add lg lazygit

# Broot
abbr --add br 'broot'
abbr --add br broot

# --- Container management (distrobox) ---

abbr --add db 'distrobox'
abbr --add db distrobox
abbr --add dbe 'distrobox enter'
abbr --add dbl 'distrobox list'
abbr --add dbs 'distrobox stop'
abbr --add dbrm 'distrobox rm'
abbr --add dbc 'distrobox create'

# Zellij
abbr --add zj zellij
end
Loading