Reference
Configuration
Where desk stores workspaces, and the environment variables it reads.
Data root#
desk keeps its data under ~/.desk, outside your project files:
| Path | Contents |
|---|---|
workspaces/ | Scratch directories and independent Git clones |
state/NAME.json | Workspace activity and lifecycle metadata |
preferences.json | Per-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 pathdefault: ~/.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 valueStops 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.