From f81c7896839b28d90686fe3cbce81f01b70faed3 Mon Sep 17 00:00:00 2001 From: Jane Alesi Date: Thu, 21 May 2026 09:25:30 +0200 Subject: [PATCH] feat(docs): add Hyprland keybindings and screenshot cheatsheet --- docs/hyprland-keybindings.md | 120 ++++++++++++++++++++++++++++++++++ docs/screenshot-cheatsheet.md | 102 +++++++++++++++++++++++++++++ 2 files changed, 222 insertions(+) create mode 100644 docs/hyprland-keybindings.md create mode 100644 docs/screenshot-cheatsheet.md diff --git a/docs/hyprland-keybindings.md b/docs/hyprland-keybindings.md new file mode 100644 index 0000000..0dc3174 --- /dev/null +++ b/docs/hyprland-keybindings.md @@ -0,0 +1,120 @@ +# Hyprland Keybindings — Full Cheatsheet + +**Layout:** German (de) | **Mod key:** SUPER (Windows key) | **Source:** `hyprctl binds` live + +--- + +## General + +| Shortcut | Action | Details | +|----------|--------|---------| +| `SUPER+Q` | Open terminal | kitty | +| `SUPER+C` | Kill active window | killactive | +| `SUPER+M` | Exit Hyprland | exit | +| `SUPER+E` | File manager | dolphin | +| `SUPER+V` | Toggle floating | togglefloating | +| `SUPER+D` | App launcher | hyprlauncher | +| `SUPER+P` | Toggle pseudo-split | pseudo | +| `SUPER+J` | Toggle split direction | layoutmsg togglesplit | +| `SUPER+F` | Toggle fullscreen | fullscreen 0 | +| `SUPER+R` | Reload config | hyprctl reload | +| `SUPER+SPACE` | Toggle float (popup) | togglefloating | +| `SUPER+TAB` | Cycle next window | cyclenext | +| `SUPER+SHIFT+TAB` | Cycle previous window | cyclenext prev | +| `SUPER+` `` ` `` (Grave) | Toggle scratchpad | togglespecialworkspace | +| `SUPER+SHIFT+` `` ` `` | Send window to scratchpad | movetoworkspace special | +| `SUPER+CTRL+K` | Keybind cheat menu | *(broken — pipelines to grep+fuzzel)* | +| `SUPER+CTRL+L` | Lock screen | hyprlock | +| `SUPER+B` | Web browser | google-chrome-stable | + +## Navigation / Focus + +| Shortcut | Action | +|----------|--------| +| `SUPER+TAB` | Cycle next window | +| `SUPER+SHIFT+TAB` | Cycle previous window | +| `SUPER+H` | Move focus left | +| `SUPER+L` | Move focus right | +| `SUPER+left arrow` | Move focus left | +| `SUPER+right arrow` | Move focus right | +| `SUPER+up arrow` | Move focus up | +| `SUPER+down arrow` | Move focus down | + +## Window Movement + +| Shortcut | Action | +|----------|--------| +| `SUPER+SHIFT+H` | Move window left | +| `SUPER+SHIFT+L` | Move window right | +| `SUPER+SHIFT+K` | Move window up | +| `SUPER+SHIFT+J` | Move window down | +| `SUPER+SHIFT+left` | Move window left | +| `SUPER+SHIFT+right` | Move window right | +| `SUPER+SHIFT+up` | Move window up | +| `SUPER+SHIFT+down` | Move window down | + +## Window Resize + +| Shortcut | Action | +|----------|--------| +| `SUPER+ALT+H` | Resize active: width -40 | +| `SUPER+ALT+L` | Resize active: width +40 | +| `SUPER+ALT+K` | Resize active: height -40 | +| `SUPER+ALT+J` | Resize active: height +40 | + +## Screenshots + +| Shortcut | Action | Tool | +|----------|--------|------| +| `Print` | Area select → save + copy | grimblast copysave area | +| `SUPER+Print` | Active window → save + copy | grimblast copysave active | +| `SUPER+SHIFT+Print` | Full monitor → save + copy | grimblast copysave output | +| `SUPER+ALT+Print` | Area select → annotate | grim | slurp | satty | + +## Workspaces + +| Shortcut | Action | +|----------|--------| +| `SUPER+1..9` | Switch to workspace 1-9 | +| `SUPER+SHIFT+1..9` | Move active window to workspace 1-9 | +| `SUPER+` `` ` `` | Toggle scratchpad (togglespecialworkspace) | +| `SUPER+SHIFT+` `` ` `` | Move to scratchpad (movetoworkspace special) | + +### Workspace Layout + +| Workspace | Monitor | Position | +|-----------|---------|----------| +| 1 | DP-1 (TERRA 3280W) | Left, 2560x1440@144 | +| 2 | DVI-D-1 (BenQ BL2405) | Center, 1920x1080@60 rotated 90deg | +| 3 | HDMI-A-1 (TERRA 3280W) | Right, 2560x1440@144 | + +## Notes + +- `SUPER+CTRL+K` (keybind menu) does **not work** — the `sed` pipeline breaks. Needs fix. +- The `sed` pipeline `sed 's/^bind\s*=\s*\$mainMod/SUPER/;s/\s*#/#/'` fails silently because the unescaped `$` in the `sed` command gets interpreted as a variable. + +## Troubleshooting + +| Issue | Check | +|-------|-------| +| Print key not working | `hyprctl binds | grep Print` | +| `SUPER+R` not working | `hyprctl binds | grep 'reload'` | +| Screenshots fail | `which grimblast satty slurp grim` | +| Clipboard empty | `echo test | wl-copy && wl-paste` | + +## Satty Editor Shortcuts + +| Action | Shortcut | +|--------|----------| +| Freehand | F | +| Rectangle | R | +| Ellipse | E | +| Line/Arrow | L | +| Text | T | +| Blur | B | +| Crop | C | +| Undo | Ctrl+Z | +| Redo | Ctrl+Shift+Z | +| Copy | Ctrl+C | +| Save | Ctrl+S | +| Quit | Esc or Ctrl+Q | diff --git a/docs/screenshot-cheatsheet.md b/docs/screenshot-cheatsheet.md new file mode 100644 index 0000000..423c3d2 --- /dev/null +++ b/docs/screenshot-cheatsheet.md @@ -0,0 +1,102 @@ +# Screenshot Cheatsheet — Hyprland + grimblast + satty + +## Quick Reference (German Keyboard Layout) + +| Key Combo | Action | Tool | Pipeline | +|-----------|--------|------|----------| +| `Print` | Select area → save to file + clipboard | grimblast | area → copysave | +| `SUPER + Print` | Active window → save to file + clipboard | grimblast | active window → copysave | +| `SUPER + SHIFT + Print` | Full monitor → save to file + clipboard | grimblast | output → copysave | +| `SUPER + ALT + Print` | Select area → open in satty for annotation | grim+satty | area → satty editor | + +## Test Checklist + +Run through these to verify everything works: + +### Test 1: Area Screenshot (Print) +1. Press `Print` +2. Drag to select a region +3. Expected: Screenshot saved to `~/Pictures/` AND copied to clipboard +4. Verify: Paste clipboard into a test doc + +### Test 2: Current Window (SUPER+Print) +1. Focus any window +2. Press `SUPER+Print` +3. Expected: That window captured, saved + copied + +### Test 3: Full Monitor (SUPER+SHIFT+Print) +1. Press `SUPER+SHIFT+Print` +2. Expected: Current monitor captured, saved + copied + +### Test 4: Annotate in Satty (SUPER+ALT+Print) +1. Press `SUPER+ALT+Print` +2. Drag to select a region +3. Expected: Satty window opens with the screenshot +4. Try these Satty actions: + - Freehand drawing (left toolbar) + - Rectangle/Arrow annotations + - Blur/redact sections + - Copy annotated result to clipboard + - Save annotated result to file +5. Exit Satty with `Esc` or `Ctrl+Q` + +## Manual CLI Commands + +If keybindings fail, test tools directly: + +```bash +# Capture area and save to specific file +grim -g "$(slurp)" ~/Pictures/test-area.png + +# Capture area and pipe to satty for editing +grim -g "$(slurp)" - | satty -f - + +# Capture full screen and pipe to satty +grim - | satty -f - + +# Copy area screenshot to clipboard +grim -g "$(slurp)" - | wl-copy + +# grimblast manual modes +grimblast copysave area # area +grimblast copysave active # current window +grimblast copysave output # current monitor +grimblast save area ~/Pictures/test-grimblast.png # save only +``` + +## Satty Editor Shortcuts + +| Action | Shortcut | +|--------|----------| +| Freehand | `F` | +| Rectangle | `R` | +| Ellipse | `E` | +| Line/Arrow | `L` | +| Text | `T` | +| Blur | `B` | +| Crop | `C` | +| Undo | `Ctrl+Z` | +| Redo | `Ctrl+Shift+Z` | +| Copy to clipboard | `Ctrl+C` | +| Save to file | `Ctrl+S` | +| Save As | `Ctrl+Shift+S` | +| Quit | `Esc` or `Ctrl+Q` | + +## Dependencies + +| Tool | Purpose | Status | +|------|---------|--------| +| grim | Wayland screenshot capture | Installed | +| slurp | Region/window selection | Installed | +| wl-clipboard | Clipboard support | Installed | +| satty | Annotation editor | Installed | +| grimblast | Hyprland screenshot helper | Installed | +| hyprshot | Alternative screenshot tool | Installed (not used in keybinds) | + +## Troubleshooting + +- **Print key not working**: Verify binding with `hyprctl binds | grep Print` +- **satty won't open**: Check `which satty` and `echo $XDG_SESSION_TYPE` (must be wayland) +- **slurp selector invisible**: Check if `grim` and `slurp` are in PATH +- **Screenshots not saving**: Check `~/Pictures/` directory exists +- **Clipboard empty**: Verify `wl-copy` and `wl-paste` work (`echo test | wl-copy && wl-paste`)