A lightweight workspace manager for the shell that switches project contexts with custom aliases, functions, and environment variables.
Desk is a lightweight workspace manager for the shell that helps developers switch between different project contexts efficiently. It allows users to define project-specific aliases, functions, and environment variables in Deskfiles, which are sourced when activating a desk. This eliminates the need to manually reconfigure the shell for each project and reduces reliance on shell history for command recall.
Developers and system administrators who work with multiple projects or codebases simultaneously and want to streamline their shell environment management. It's particularly useful for those using bash, zsh, or fish who need quick context switches.
Desk offers a simple, dependency-free solution for managing shell workspaces, with easy setup and extensive customization through shell scripts. Unlike more complex tools, it focuses on practicality and integrates seamlessly with existing shell workflows.
A lightweight workspace manager for the shell
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Desk is essentially a single shell script with no external dependencies beyond bash, making installation and execution straightforward, as highlighted in the README.
It is explicitly tested with bash, zsh, and fish, ensuring broad compatibility across popular shells without additional setup.
Desk integrates with tools like 'pass' to load sensitive API keys into environment variables without persisting to shell history, enhancing security for sensitive data.
Deskfiles are enriched shell scripts, allowing endless customization for project-specific aliases, functions, and configurations, as demonstrated in the terraform example.
With commands like 'desk . name', users can instantly switch directories, activate virtual environments, and load all project settings in one step, streamlining workflow.
Users must edit shell rc files (e.g., .bashrc, .zshrc) to enable desk, which can be error-prone and cumbersome, especially on OS X where .bash_profile issues arise.
Activating a desk starts a new shell process, and deactivating requires exiting that shell, which can disrupt workflow in complex or nested terminal sessions.
Effective use demands proficiency in shell scripting to create and manage Deskfiles, limiting accessibility for beginners or those unfamiliar with shell commands.
Desk does not offer automatic context detection, GUI interfaces, or session persistence, relying solely on manual command execution for all operations.