Common issues and how to resolve them.
“nux: unknown command” or “command not found”#
The nux binary is not on your PATH. Verify the install:
which nux
nux versionIf you installed via go install, make sure $(go env GOPATH)/bin is in your PATH. If you installed via Homebrew, run brew link nux.
“cannot start session from inside tmux”#
nux refuses to start new sessions from inside an existing tmux session to prevent nested session confusion. Options:
- Detach from the current session first (
prefix + d), then runnux. - Override the guard with
--force:
nux --force blogSession name doesn’t match the config filename#
nux normalizes session names for tmux compatibility:
- Dots (
.), colons (:), and spaces become underscores (_) - Leading dashes are stripped
- Consecutive underscores are collapsed
For example, my.api-server.yaml becomes session my_api-server. Run nux list to see the mapping between config names and session names.
Commands not running in panes#
If pane commands in your config aren’t executing:
Check that
pane_initcommands in global config aren’t interfering. nux sendspane_initcommands before each pane’s command viaSendKeys. If apane_initcommand starts an interactive process, subsequent commands won’t reach the shell.Verify with
--dry-runto see exactly what tmux commands nux sends:
nux --dry-run blog- Check that the
rootdirectory exists. If the directory doesn’t exist, the pane’s shell may start in a fallback directory and commands may fail.
on_start runs before all windows exist#
This is by design. on_start fires after the session and first window are created but before windows 2..N. If your startup command needs all windows to exist, use on_ready instead - it runs once at the end of the full session build.
Picker doesn’t appear#
The interactive picker requires two conditions:
picker_on_bare: truein global config- You run bare
nux(no arguments) from outside a recognized project directory
If you’re inside any configured project_dirs path, nux auto-detects the project instead of showing the picker. Move to a directory outside those paths and try again.
Also verify your picker binary is installed:
which fzf # or: which gum
nux doctor # checks picker availabilityZoxide-resolved projects have no layout#
When a project resolves through zoxide (no config file), nux builds the session from the default_session template in global config. If no default_session is configured, you get a bare single-window session.
To add a layout, create a config file:
nux new my-projectConfig changes not picked up#
Running sessions don’t re-read configs automatically. After editing a config:
nux restart blog # full session restart
nux restart blog:editor # restart just one window“project not found”#
nux resolves project names in this order:
- Config file at
~/.config/nux/projects/<name>.yaml - Zoxide query (if enabled)
- Directory at
<project_dirs>/<name>for each configuredproject_dirsroot (nux checks every entry)
If none match, you get this error. Check:
- The config filename matches (without
.yaml) - The directory exists under any configured
project_dirspath - Zoxide knows about the directory (
zoxide query <name>)
Run nux doctor for a full environment check.
--dry-run still talks to tmux#
--dry-run prints the tmux commands nux would execute, but it still queries the live tmux server for session state (has-session) and option values (base-index, pane-base-index). This keeps the output accurate - it shows whether a session would be created or attached based on real state. If tmux is not running, the dry-run output will reflect that (all sessions treated as new).
nux show displays interpolated values#
nux show prints the fully resolved config after variable and environment expansion. If your config contains secrets in env or vars, the expanded values will appear in the output. Use --raw to print the config before interpolation:
nux show blog --rawtmux version too old#
nux requires tmux 3.0 or newer. Check your version:
tmux -VOn macOS with Homebrew: brew upgrade tmux. On Linux, check your package manager or build from source.