Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Shell and terminal

bromigOS opens kitty as its terminal and provides a zsh shell setup. The prompt shows where you are and, in a project, its Git branch and language version.

Choose a prompt

Open Settings → Default apps and change Prompt, or run:

bromigos shell prompt mehshell

The choices are mehshell, starship and none. Open a new zsh shell after changing the choice. none gives you a plain prompt with your current folder. Starship needs its package first:

sudo pacman -S starship
bromigos shell prompt starship

New installs use mehshell. Existing installs keep their startup files and prompt. To use the bromigOS choice on an existing install, replace your prompt engine’s initialisation line in ~/.zshrc with this line:

source /usr/share/bromigos/default/zsh/bromigos.zsh

Source it once. Remove any separate mehshell or Starship initialisation first. It also loads bromigOS’s login banner and folder shortcuts.

The choice is saved in ~/.config/bromigos/shell.toml. Your prompt’s other options stay in its own config. mehshell uses ~/.config/mehshell/config.

On Linux text consoles, mehshell uses text labels, simple prompt marks and basic colours. Its startup cache is separate from the desktop’s, so desktop icons do not appear during console login. Your desktop style and icon settings stay saved. Basic terminals (TERM=dumb) receive a prompt without colour formatting.

Clipboard in persistent terminals

Herdr, tmux and GNU Screen can keep running when you leave a text console or restart the desktop. Their old panes may lack the display settings that apps need to paste images. The bromigOS zsh setup recovers those settings at shell startup and before commands run. It discovers the current Wayland socket and, when present, the matching Xwayland display. No display number is hard-coded.

This applies to new commands, including Codex and Claude Code. An already-running app keeps its original environment; exit it and resume its conversation after loading the updated shell setup:

source /usr/share/bromigos/default/zsh/bromigos.zsh

Working display connections, including nested desktops, are preserved. SSH sessions and non-interactive shells are left alone. No clipboard contents are read by the hook. Set BROMIGOS_SESSION_REFRESH=off before sourcing the setup to disable recovery.

Configure and check mehshell

Preview the current prompt at the width of a split terminal:

bromigos shell preview --width 40
bromigos shell preview --style rainbow --width 80

Preview changes no settings. To save a style or brand choice:

bromigos shell configure style lean
bromigos shell configure brand bromigos

Styles are lean, classic and rainbow. Brand choices are auto, bromigos, os and none. Auto shows the bromigOS text badge on bromigOS and the OS icon elsewhere. Text consoles use plain text. These commands configure mehshell without switching your selected prompt engine. Comments and theme colours are preserved.

The prompt adapts to narrow windows. It shortens paths and removes optional details before dropping your current folder or session identity. Git shows changed file counts, ahead/behind counts, conflicts and active operations. wt: identifies a linked worktree. status? means Git could not be read within the prompt’s time or output limit; upstream? means the comparison is unavailable. Counts use local information and never trigger a fetch.

SSH sessions show the user and host; root shows ROOT. A failed command shows a red exit:N, where N is its exit code. This reports a command run in the current shell. Startup checks and the cached prompt do not carry an old failure into a new terminal. Pressing Enter on an empty line or Ctrl+C while editing clears the status. Interrupting a running command with Ctrl+C normally returns code 130 and shows a grey interrupted label.

A small GAME label reflects the local game-mode record. Turn off session, command status or game-mode labels with bromigos shell configure session false, status false or game false, respectively. All indicators use local information.

Check configuration and terminal fallback, or measure slow local prompt segments:

bromigos shell doctor
bromigos shell doctor --timings

--json gives structured output. The doctor reports configuration issues without printing their values. It does not test the installed font’s glyph coverage or inspect your running shell’s hooks. It never queries your lab or prints credentials. Style and segment changes appear at the next prompt; open a new shell after changing hook options or updating mehshell. To load updated hooks in the current zsh shell, run:

eval "$(mehshell init zsh)"

Reloading mehshell keeps one copy of its hooks.

Match the theme

mehshell follows every bromigOS theme. A theme change updates its colours, and its next prompt reads them automatically. Your segment and style options stay in place. Restart zsh after changing instant prompt, transient prompt or vi mode options in mehshell’s config.

Install mehshell

The signed bromigOS package repository at pkgs.bromigos.org includes mehshell. Once that repository is configured, run:

sudo pacman -S mehshell

Other systems can use the installation instructions in mehshell’s repository.

Make text consoles readable

The text console you reach with Ctrl+Alt+F3 has its own font, separate from kitty. Check its saved setting, then choose a size:

bromigos console status
sudo bromigos console font medium

Choose small, medium or large for Terminus glyphs 16, 24 or 32 pixels tall. sudo bromigos console font default removes the saved font choice. The setting takes effect after reboot. The command keeps your keyboard layout and other console settings, and leaves the running console alone.

The bromigos-settings package includes Terminus. On a core-only installation, install it first with sudo pacman -S terminus-font. Text consoles support fewer symbols than a graphical terminal; changing the size does not add Nerd Font icons.

The early boot or disk-unlock screen may still use a font stored in the initramfs until that image is rebuilt separately. This command does not rebuild it. A vconsole.font kernel option also takes precedence over the saved setting. If you have custom FONT_MAP or FONT_UNIMAP settings, review them before choosing a Terminus size; the command refuses to combine them. default preserves them.