ws
is a CLI to manage and interpret small YAML files that specify tasks to open a project like opening an editor, launching a server or visiting a chat or documentation in the browser. It can be used to efficiently switch between work and side projects.
bash
cargo install workspace
Then setup the ws
command in your shell:
- bash: Add this line to your .bashrc
bash
eval $(workspace shell bash)
- fish: Add this line to your config.fish
fish
workspace shell fish | source
- PowerShell: Add this line to your profile.ps1
powershell
Invoke-Expression "$(workspace shell posh)"
workspace shell
prints a shell functionws
that delegates output fromworkspace
but intercepts commands to run. This lets you change the directory and run commands directly in the shell, e.g. if they need user input.
For the CLI, see:
ws --help
Workspaces can have the following fields:
- path
, list of strings
path to the workspace
- tabs
, list of strings
tabs to open in $BROWSER
- commands
, table
- local
, list of strings
commands execute in the current shell
- background
, list of strings
commands execute as background processes
- external
, list of strings
commands to execute in a new $TERMINAL
Note:
path
is mandatory and created automatically byws new
For example, this is the workspace I use for my blog: ``` path: /home/matthias/code/web/blog/
commands: local: - git status - sudo systemctl start nginx background: - code -r . external: - gulp
tabs:
- https://developer.mozilla.org/en-US/
- localhost
``
It will
cdinto
~/code/web/blog/, print the git status, open the directory in visual studio code, start the
gulpbuild in a new terminal, launch
nginxto serve the files and open
localhost` and MDN in the browser.