Skip to content

Automatic F-key pass-through for nested Zellij and F-key TUIs #5

Description

@blooop

Destination

The outer Zellij hands F1–F11 to whatever actually wants them — a nested Zellij reached
over SSH, and local F-key TUIs like htop and Midnight Commander — automatically, in place
of today's manual Ctrl+; d. Reached when that behaviour is applied in the dotfiles and
documented, or consciously abandoned.

Notes

Domain: chezmoi-managed dotfiles (this repo). Read the repo's CLAUDE.md first — it
governs capability-flag gating, the no-hardcoded-/home/<user> rule, and the standing
requirement that any keybinding or shell-command change updates the README cheatsheet.

Execution override: this map carries execution. It ends at the change applied in
private_dot_bash_env, not at a spec.

Background in the config itself: dot_config/zellij/config.kdl.tmpl binds F1–F11 in
shared_except "tmux", and the tmux mode is deliberately emptied out to serve as the
pass-through layer — both comment blocks are worth reading before touching anything. The
cost of that hot path is already named there: applications inside Zellij never see a
function key.

Decisions so far

Not yet specified

  • Whether nested Zellij is pleasant enough to keep once the F-keys are handled. The
    known costs are two status bars, plugins loaded twice on the remote's CPU, and an
    inner Locked mode with no manual escape because F12 belongs to the outer. Graduates
    once the pass-through has actually been lived with.
  • Whether mosh, distrobox enter, devpod ssh and similar wrappers each need their
    own entry in the trigger list. Depends on what each reports as the shell's direct
    foreground child, which is only knowable by trying them.

Out of scope

  • Forking zellij-autolock in Rust to drive the mode per-pane from a plugin. Ruled out
    as disproportionate to a config repo — it would need a wasm build, a release pipeline
    for .chezmoiexternal.toml to fetch, and a permission grant, and the shell-hook route
    reaches the same destination without any of it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions