From fc7293493e2f16668c21b33fcfd1fd708d6f78bd Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Tue, 10 Feb 2026 22:54:04 -0800 Subject: [PATCH] Don't save plans --- .../plans/2026-02-10-hyprscratch-migration.md | 201 ------------------ 1 file changed, 201 deletions(-) delete mode 100644 nixos/docs/plans/2026-02-10-hyprscratch-migration.md diff --git a/nixos/docs/plans/2026-02-10-hyprscratch-migration.md b/nixos/docs/plans/2026-02-10-hyprscratch-migration.md deleted file mode 100644 index ebeaf474..00000000 --- a/nixos/docs/plans/2026-02-10-hyprscratch-migration.md +++ /dev/null @@ -1,201 +0,0 @@ -# Hyprscratch Migration Plan - -> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. - -**Goal:** Replace custom toggle-scratchpad.sh + windowrulev2 scratchpad setup with hyprscratch, gaining auto-dismiss on workspace change via `clean` mode. - -**Architecture:** Add hyprscratch as a flake input, wire its home-manager module into hyprland.nix with all 9 scratchpad definitions, simplify hyprland.conf keybinds, and remove the now-redundant window rules and toggle script. - -**Tech Stack:** NixOS flake, home-manager module, hyprscratch 0.6.4, Hyprland IPC - ---- - -### Task 1: Add hyprscratch flake input - -**Files:** -- Modify: `flake.nix` (add input after `hyprland-plugins` block, ~line 71) - -**Step 1: Add the flake input** - -In `flake.nix`, after the `hyprland-plugins` input block (line 71), add: - -```nix - hyprscratch = { - url = "github:sashetophizika/hyprscratch"; - inputs.nixpkgs.follows = "nixpkgs"; - }; -``` - -**Step 2: Verify flake input resolves** - -Run: `cd /home/imalison/dotfiles/nixos && nix flake lock --update-input hyprscratch` -Expected: Lock file updated, no errors. - ---- - -### Task 2: Wire hyprscratch home-manager module into hyprland.nix - -**Files:** -- Modify: `hyprland.nix` - -**Step 1: Add hyprscratch home-manager module with scratchpad config** - -Replace the existing `home-manager.sharedModules` block (lines 11-18) with one that includes both kanshi and the hyprscratch module: - -```nix - home-manager.sharedModules = [ - inputs.hyprscratch.homeModules.default - { - services.kanshi = { - enable = true; - systemdTarget = "hyprland-session.target"; - }; - - programs.hyprscratch = { - enable = true; - settings = { - daemon_options = "clean"; - global_options = "persist"; - global_rules = "float;size 90% 90%;center"; - - htop = { - command = "alacritty --class htop-scratch --title htop -e htop"; - class = "htop-scratch"; - }; - - volume = { - command = "pavucontrol"; - class = "pavucontrol"; - }; - - spotify = { - command = "spotify"; - class = "spotify"; - }; - - element = { - command = "element-desktop"; - class = "Element"; - }; - - slack = { - command = "slack"; - class = "Slack"; - }; - - transmission = { - command = "transmission-gtk"; - class = "transmission-gtk"; - }; - - dropdown = { - command = "ghostty --config-file=/home/imalison/.config/ghostty/dropdown"; - class = "com.mitchellh.ghostty.dropdown"; - rules = "float;size 100% 50%;move 0 0;noborder;noshadow;animation slide"; - }; - - gmail = { - command = "google-chrome-stable --new-window https://mail.google.com/mail/u/0/#inbox"; - class = "google-chrome"; - title = "Gmail"; - }; - - messages = { - command = "google-chrome-stable --new-window https://messages.google.com/web/conversations"; - class = "google-chrome"; - title = "Messages"; - }; - }; - }; - } - ]; -``` - -Note: `wlsunset` was removed from packages in git status (already handled elsewhere). No change needed there. - ---- - -### Task 3: Update hyprland.conf — remove scratchpad window rules - -**Files:** -- Modify: `~/dotfiles/dotfiles/config/hypr/hyprland.conf` - -**Step 1: Remove all scratchpad windowrulev2 rules** - -Delete lines 210-258 (all `windowrulev2` rules for scratchpad classes: htop-scratch, pavucontrol, spotify, Element, Slack, transmission-gtk, dropdown ghostty, gmail chrome, messages chrome). These are the `workspace special:* silent`, `float`, `size`, `center`, `move`, `noborder`, `noshadow`, `animation` rules for scratchpad windows. - -Keep all other windowrulev2 rules (float dialogs, PiP, Open File, Save File, Confirm — lines 203-208). - ---- - -### Task 4: Update hyprland.conf — replace scratchpad keybinds - -**Files:** -- Modify: `~/dotfiles/dotfiles/config/hypr/hyprland.conf` - -**Step 1: Replace toggle keybinds** - -Replace the scratchpad toggle section (lines 293-302) with simplified hyprscratch calls: - -``` -# Toggle scratchpads -bind = $modAlt, E, exec, hyprscratch toggle element -bind = $modAlt, G, exec, hyprscratch toggle gmail -bind = $modAlt, H, exec, hyprscratch toggle htop -bind = $modAlt, M, exec, hyprscratch toggle messages -bind = $modAlt, K, exec, hyprscratch toggle slack -bind = $modAlt, S, exec, hyprscratch toggle spotify -bind = $modAlt, T, exec, hyprscratch toggle transmission -bind = $modAlt, V, exec, hyprscratch toggle volume -bind = $modAlt, grave, exec, hyprscratch toggle dropdown -``` - -**Step 2: Remove "move to scratchpad" keybinds** - -Delete lines 305-312 (the `movetoworkspace, special:*` bindings). These relied on special workspaces; hyprscratch manages window placement internally. - -**Step 3: Remove commented-out exec-once scratchpad spawns** - -Delete lines 590-598 (the commented-out `exec-once` lines for scratchpad apps). Hyprscratch spawns on first toggle. - ---- - -### Task 5: Build and test - -**Step 1: Build the NixOS configuration** - -Run: `cd /home/imalison/dotfiles/nixos && just switch` -Expected: Successful build and activation. - -**Step 2: Verify hyprscratch service is running** - -Run: `systemctl --user status hyprscratch` -Expected: Active (running). - -**Step 3: Test a scratchpad toggle** - -Run: `hyprscratch toggle htop` -Expected: htop scratchpad appears. Running again hides it. - -**Step 4: Test auto-dismiss on workspace change** - -1. Toggle a scratchpad (e.g. `hyprscratch toggle spotify`) -2. Switch workspace with Mod+2 -3. Expected: Scratchpad auto-hides. - -**Step 5: Commit** - -```bash -git add flake.nix flake.lock hyprland.nix -git add -u ../dotfiles/config/hypr/hyprland.conf -git commit -m "feat: migrate scratchpads to hyprscratch with auto-dismiss on workspace change" -``` - ---- - -## Notes - -- **workspace-history.sh stays** — it tracks workspace back/forth history, unrelated to scratchpad management. -- **toggle-scratchpad.sh can be deleted** after confirming everything works. Not deleted in this plan to keep a rollback path. -- **NSP hidden workspace** (Mod+X / Mod+Shift+X) is unaffected — it uses `togglespecialworkspace` directly, not the scratchpad system. -- **The `special` option** is NOT used — hyprscratch manages windows on normal workspaces by default. The `clean` daemon option handles auto-hiding. If the overlay behavior is preferred, add `special` to `global_options`.