One-command setup for a Warp-like notes system in Wave Terminal.
After running the installer, you'll have a new sidebar widget in Wave Terminal:
| Widget | Description |
|---|---|
| note | Creates a timestamped markdown note and opens it in Wave's editor |
brew tap qbandev/wave-notes-setup
brew install wave-notes-setup
wave-notes-setupcurl -fsSL https://raw.githubusercontent.com/qbandev/wave-notes-setup/main/install.sh | bashgit clone https://github.com/qbandev/wave-notes-setup.git
cd wave-notes-setup
./install.shThe installer works with sensible defaults, but you can customize paths:
export WAVE_NOTES_DIR="$HOME/Dropbox/Notes"
export WAVE_BIN_DIR="$HOME/.local/bin"
wave-notes-setupCreate ~/.wave-notes.conf:
NOTES_DIR="$HOME/Documents/MyNotes"
BIN_DIR="$HOME/bin"wave-notes-setup [options]
Options:
-f, --force Overwrite existing files without prompt
-v, --verbose Enable verbose logging
-u, --uninstall Run uninstall procedure
--version Print version and exit
-h, --help Show help message
wave-notes-setup --uninstall
# or
wave-notes-uninstallThe uninstaller will:
- Remove widgets from Wave Terminal
- Remove the scratchpad script
- Optionally delete your notes folder (with confirmation)
- Optionally delete the config file
Move your notes to iCloud for automatic sync across Macs:
# Move notes to iCloud
mv ~/Documents/WaveNotes ~/Library/Mobile\ Documents/com~apple~CloudDocs/WaveNotes
# Create symlink so scripts still work
ln -s ~/Library/Mobile\ Documents/com~apple~CloudDocs/WaveNotes ~/Documents/WaveNotes- macOS
- Wave Terminal
jq(optional, falls back to Python if missing)
The installer implements several security measures:
- Path validation - User-configurable paths must be under
$HOMEand cannot target protected directories - Symlink protection - Files are checked for symlinks before writing to prevent redirect attacks
- Safe deletion - Directory removal blocks system paths (
/,/etc,/usr,$HOME, etc.) - No command injection - All paths are passed safely to subprocesses, never embedded in code strings
These protections ensure the installer cannot be tricked into overwriting system files or deleting critical directories, even with malicious configuration.
The installer:
- Creates a notes directory (
~/Documents/WaveNotes) - Installs a scratchpad script (
~/bin/wave-scratch.sh) - Adds a custom widget to Wave's
~/.config/waveterm/widgets.json
All modifications are reversible with the uninstaller.
The project includes a comprehensive test suite using bats:
# Install bats
brew install bats-core
# Run all tests (77 tests)
./test/run_tests.sh
# Or run bats directly
bats test/*.bats# Install shellcheck
brew install shellcheck
# Run linter
shellcheck install.sh uninstall.shwave-notes-setup/
├── install.sh # Main installer
├── uninstall.sh # Standalone uninstaller
├── README.md # This file
├── LICENSE # MIT License
├── .wave-notes.conf.example # Config template
├── Formula/
│ └── wave-notes-setup.rb # Homebrew formula
├── test/
│ ├── test_helper.bash # Test utilities
│ ├── install.bats # Install tests
│ ├── uninstall.bats # Uninstall tests
│ └── run_tests.sh # Test runner
└── .github/
└── workflows/
└── test.yml # CI workflow
MIT License - see LICENSE for details.
Issues and pull requests welcome at github.com/qbandev/wave-notes-setup.
Please ensure all tests pass and shellcheck reports no issues before submitting a PR.