Skip to content

Concept: add fish shell and zellij session backend defaults#1

Draft
Pyrobrick wants to merge 5 commits into
mainfrom
concept/fish-zellij-defaults
Draft

Concept: add fish shell and zellij session backend defaults#1
Pyrobrick wants to merge 5 commits into
mainfrom
concept/fish-zellij-defaults

Conversation

@Pyrobrick

Copy link
Copy Markdown
Owner

Concept

This is a concept implementation for making the add-on more beginner-friendly and less tmux/ZSH-opinionated by introducing selectable shell and session backend options.

What changed

  • Adds a new shell option with fish, zsh, and bash choices.
  • Defaults new installations to shell: fish.
  • Keeps the old zsh boolean as a legacy fallback for existing configurations that do not yet define shell.
  • Adds a new session_backend option with zellij and tmux choices.
  • Defaults new installations to session_backend: zellij.
  • Installs Fish and Zellij in the image.
  • Generates Fish history persistence and Fish Supervisor-token setup.
  • Updates the Web Terminal startup logic to use the selected shell/backend.
  • Updates SSH login handoff so the configured non-root SSH user uses a neutral /bin/sh wrapper and hands off to the selected root login shell via sudo -i.

Why

Fish has much better beginner ergonomics for interactive CLI use: helpful completions, autosuggestions, syntax highlighting, and generally fewer papercuts for people who only occasionally need a terminal.

Zellij is a more discoverable terminal workspace than tmux for casual Home Assistant users. It should make shared sessions and terminal panes easier to understand without expecting users to know tmux keybindings.

Notes / caveats

This is intentionally a concept PR, not a polished upstream-ready patch yet.

Things to verify before treating this as production-ready:

  • Whether fish and zellij are available in the target Alpine repositories for both supported architectures.
  • Whether the unpinned fish and zellij package additions should be pinned to match the current Dockerfile style.
  • Whether zellij attach --create homeassistant options --default-shell <shell> behaves exactly as intended in the ttyd ingress environment.
  • Whether shared SSH/Web Terminal sessions behave correctly for all combinations:
    • shell: fish, session_backend: zellij
    • shell: fish, session_backend: tmux
    • shell: zsh, session_backend: zellij
    • shell: bash, session_backend: tmux
  • Whether the legacy zsh option should eventually be deprecated in documentation or removed in a future breaking release.

In short: this is the UX direction I would want to test first, not a claim that the exact implementation is already perfect.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant