Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

workspace.fish

A fish shell plugin for managing date-based workspace directories.

Organizes your work into Y{year}/M{month}/D{day}/ directories, providing quick navigation, browsing, and glob search across workspaces.

Requirements

  • macOS (uses date -v for date arithmetic)
  • fish shell 4.x+
  • bash (used internally by wsg for glob expansion)

Linux is not officially supported. If you're on Linux, you'll need to replace date -v-{N}d with the GNU equivalent (date -d "-N days") yourself.

Install

# Symlink into fish config
ln -sf /path/to/workspace.fish ~/.config/fish/conf.d/workspace.fish

New fish sessions will auto-load the plugin. Run source ~/.config/fish/conf.d/workspace.fish to load in the current session.

Configuration

Set WS_ROOT to change the root directory (defaults to $HOME):

set -Ux WS_ROOT ~/projects

This makes all commands operate under ~/projects/Y{year}/M{month}/D{day}/.

Commands

ws [name] [--dry-run]

Jump to today's workspace. Creates the directory hierarchy if it doesn't exist.

ws              # cd to ~/Y2026/M04/D11/
ws myproject    # cd to ~/Y2026/M04/D11/myproject/
ws --dry-run    # print the path without creating or changing directory

wsl

List projects in today's workspace.

wsl
# workspace-extensions

wsl2

Browse workspaces from the past 15 days.

wsl2            # reverse chronological (default)
wsl2 --asc      # chronological

wsl3

Browse this month's workspaces.

wsl3

wsl4 / wsl5 / wsl6

Browse longer ranges: 30 days / 90 days / 365 days.

wsl4            # past 30 days
wsl5 --asc      # past 90 days, chronological
wsl6            # past year

All wsl* commands output reverse chronological by default. Pass --asc for chronological order.

wsg <pattern> [--asc]

Glob search across all workspaces. Outputs ls -lhd for each match.

The pattern matches against the project level. Missing directory levels are auto-filled with wildcards. The Y/M/D levels are strictly validated (Y[0-9]{4}/M[0-9]{2}/D[0-9]{2}).

wsg '*.git'                   # all git repos
wsg 'claude*'                 # projects starting with "claude"
wsg 'Y2026/M03/*/claude*'    # March 2026 only
wsg '*/M04/D01/*'             # every April 1st across years
wsg '*.rkt' --asc             # all racket projects, chronological

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages