Reference

Configuration

Where desk stores workspaces, and the environment variables it reads.

Data root#

desk keeps its data under ~/.desk, outside your project files:

PathContents
workspaces/Scratch directories and independent Git clones
state/NAME.jsonWorkspace activity and lifecycle metadata
preferences.jsonPer-repository reuse preferences
garbage/Removed workspaces retained for 72 hours from removal

desk new REPOSITORY --reuse remembers a preference for the most recently used workspace for that repository. --choose overrides it for one invocation. You don't need to edit the preferences file yourself. There is no daemon; expired garbage is silently collected by every desk invocation.

Environment Variables#

DESK_HOMEabsolute path

default: ~/.desk

Overrides the entire data root, including workspaces, state, preferences, and garbage. Must be an absolute path. Changing it does not move existing data.

DESK_PROMPT_DISABLEany value

Stops shell integration from changing your prompt.

Don't keep work you want to return to in OS-managed temporary storage such as /tmp.

Git#

desk runs your installed git with your normal configuration, credentials, and SSH setup. It ignores inherited GIT_DIR, GIT_WORK_TREE, and GIT_INDEX_FILE, so running it from a Git hook can't point it at a different repository.

Earlier Versions#

Earlier versions kept a registry, locks, and quarantine in the data root and named workspaces with 12-character IDs. These are not the current state/ and garbage/ layout. Old workspaces can still appear under their IDs; use desk rename when you want a more useful name. Cleanup considers only managed workspaces, not arbitrary directories.

An existing workspace without state is not a cleanup candidate until you explicitly enter it through desk switch, select it with desk new, or mark it with desk finish. This starts managed state; listing alone does not.

Platform-specific roots from before ~/.desk became the default (~/.local/share/desk on Linux, ~/Library/Application Support/desk on macOS) are not read. Set DESK_HOME to an old root, or move its workspaces/ directory into ~/.desk.