/toggle-panes hides and shows the panes of the mods that listen to it

A clean, organized dotfiles repository using symlinks for easy management and deployment.
This dotfiles system uses a unified YAML configuration for symlink management:
symlinks.yml file with OS-specific sectionsdots link updates everything automatically (removes broken symlinks + creates new ones)"common/.local/bin/*": "~/.local/bin")SSH access to GitHub via ProtonPass is required before cloning.
See install/README.md for the full bootstrap guide.
Quick version:
git clone git@github.com:nikbrunner/dots.git ~/repos/nikbrunner/dots
cd ~/repos/nikbrunner/dots
./install/install.sh
Flags: --dry-run (preview), --debug (diagnostics)
dots — Dotfiles management (pull, push, link, chores, purge). Run dots with no args for usage.dots pull — Installs missing mise and platform-native packages without upgrading existing packages. Add --upgrade to upgrade declared packages.dots chores — Refreshes the mise lock metadata and stages config.toml with mise.lock alongside routine changes. It does not bump fuzzy version selectors.dots purge — Reviews undeclared Homebrew, mise, and Arch entries. Nothing is selected by default; removal requires explicit selection and confirmation. Use --dry-run to inspect candidates without changes.mole uninstall — Separate macOS application cleanup. It does not replace dots purge for package-manager entries.shiplog — AI-powered git operations (commit, branch). Run shiplog --help for usage.helm — External tool for multi-repo management. Invoked by dots pull and dots push.common/ (cross-platform) or macos//arch/ (OS-specific), mirroring home directory structuresymlinks.yml in the appropriate sectiondots linksymlinks.ymldots link (broken symlinks are automatically cleaned up)dots link (old symlink removed, new one created)dots link --dry-run --verbose
When you run dots link:
symlinks.yml file for your platform"common/.local/bin/*": "~/.local/bin"--no-backup is used)Options:
--dry-run: Preview what would happen without making changes--no-backup: Overwrite existing files instead of backing them up--verbose: Show detailed output for each symlink operationPlace OS-specific files in macos/, linux/, or arch/ following the home directory structure. The system uses the symlinks.yml configuration file with OS-specific sections to define which files get symlinked.
Important: The YAML section names must match the OS detection output:
| Detected OS | YAML Section | Description |
|---|---|---|
common | common: | Always processed on all platforms |
macos | macos: | macOS systems |
arch | arch: | Arch Linux systems |
The system always processes the common section first, then adds the platform-specific section if it exists. OS detection is handled by scripts/dots/detect-os.sh.
Black Atom Livery owns theme provisioning. The tracked configuration at common/.config/black-atom/livery/config.json records the active theme and enabled app integrations.
dots pull runs livery reapply after linking files and refreshing repositories when the configuration contains setup data and an active theme. Run livery apply to choose a different theme interactively.
hooks/register.ts 18 lines1import { atom, update } from 'claude-code'
2import type { Register } from 'claude-code'
3
4const isHidden = atom({ plugin: 'toggle-panes', key: 'isHidden' } as const, false)
5
6export const register: Register = on => {
7 on('session.start', async ($, e, next) => {
8 await $.command.register({ name: 'toggle-panes', description: 'Hide or show the mod panes' })
9 return next(e)
10 })
11
12 on('command.run', { command: 'toggle-panes' }, async $ => {
13 let hidden = false
14 await update($, isHidden, h => (hidden = !h))
15 return { text: hidden ? 'Panes hidden.' : 'Panes shown.' }
16 })
17}
18types/index.d.ts 7 lines1declare module 'claude-code' {
2 interface PluginState {
3 'toggle-panes': { isHidden: boolean }
4 }
5}
6
7