Configuration

Editors

Configure which editor uxd code opens, using a preset name or a custom template.

uxd <project> <ref> code opens the workspace in the editor configured for that project, falling back to defaults.editor.

~/.uxd/my-project.toml
editor = "zed"

Override for one invocation:

uxd my-project 42 code --editor vim

Presets

PresetLaunchesuxd waits?
zedzed <path>no
codecode --new-window <path>no
cursorcursor --new-window <path>no
windsurfwindsurf <path>no
idea · webstorm · phpstorm · goland<name> <path>no
vim · nvim · helix · hx<name> <path>yes
terminal$SHELL, with the workspace as the working directoryyes

GUI presets are detached, so uxd code returns immediately. Terminal editors and terminal stay in the foreground until they exit.

uxd doctor checks that the configured editor's binary is on PATH and warns when it is not — the failure would otherwise only show up the first time you run code.

Custom templates

Anything that is not a preset name is treated as a template and must contain {path}. It runs through bash -c, with {path} shell-escaped for you:

editor = "emacsclient -n {path}"

All the usual template variables are available, not just {path}.

Staying in the foreground

Append :wait to a template to keep uxd running until the editor exits — useful when uxd code is part of a script.

editor = "kak {path}:wait"

Without :wait, a template is launched detached and uxd returns immediately. Presets carry their own waiting behaviour, shown in the table above.

Checking what would launch

--dry-run prints the exact argv without opening anything:

uxd my-project feat/login code --dry-run

--json is not supported for code — it opens a program rather than producing data, and asking for both exits 2.