Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scratchpad Deck

Named drop-down scratchpads for Omarchy v4 ("Quattro") on Hyprland: one bar chip per slot — click to summon, click to dismiss, and if the app is not running it launches straight into place.

Each slot is a named Hyprland special workspace (special:pad-<name>), so summon/dismiss uses the compositor's native special-workspace animation and Super+S-style semantics. Windows land floated, centered, and sized via a named runtime window rule — no Hyprland config file is ever touched, and the rules re-register automatically after every config reload.

  • Chips — one per slot; lit while its scratchpad is visible, dimmed while nothing is running in it. Tooltips show the state.
  • Spawn-if-missing — clicking a dead slot launches its command (terminal slots via xdg-terminal-exec with a per-slot app id, GUI slots via their own window class) and reveals the workspace as it appears.
  • Event-driven — visibility and liveness ride the Hyprland socket2 event stream; the widget never polls.

Install

omarchy plugin add https://github.com/devmobasa/omarchy-scratchpad-deck --enable

If the widget does not appear, add { "id": "community.scratchpad-deck" } to a bar section in ~/.config/omarchy/shell.json.

Slots

Defaults (no configuration needed): a plain terminal, btop, and a second terminal for notes. Configure your own inline on the widget's entry in ~/.config/omarchy/shell.json:

{
  "id": "community.scratchpad-deck",
  "settings": {
    "slots": [
      { "name": "term", "icon": "󰆍", "command": "", "kind": "tui" },
      { "name": "notes", "icon": "󰂿", "command": "nvim ~/notes.md", "kind": "tui" },
      { "name": "music", "icon": "󰎈", "command": "spotify", "kind": "gui", "class": "Spotify" },
      { "name": "mixer", "command": "wiremix", "kind": "tui", "width": 0.5, "height": 0.5 }
    ]
  }
}
Field Default Meaning
name required Slot id, [a-z0-9-], unique; also the workspace name special:pad-<name>
command "" What to run when the slot is dead; empty tui command = a plain terminal
kind "tui" tui runs in a terminal with a per-slot app id; gui launches the command directly
class pad app id For gui slots: the window class to capture into the slot
icon 󰒍 Chip glyph
width / height 0.62 / 0.6 Window size as a fraction of the monitor (0.2–0.95)

Up to six slots; invalid entries are dropped.

Keybindings

Every slot is scriptable, so you can bind chips to keys in ~/.config/hypr/bindings.lua:

o.bind("SUPER + T", "Terminal scratchpad", "omarchy-shell community.scratchpad-deck toggle term")

omarchy-shell community.scratchpad-deck status reports every slot as JSON.

Notes

  • Only one special workspace is visible per monitor — summoning one slot hides another, which is the expected deck behavior.
  • Hyprland closes a special workspace when its last window exits (misc:close_special_on_empty), so a slot whose app quits simply shows as dead again.
  • Omarchy's default Super+S scratchpad (special:scratchpad) is separate and unaffected.

Tests

./test/all   # node model + contract + static QML checks, manifest, qmllint

License

MIT

About

Named drop-down scratchpads on Hyprland special workspaces: summon, dismiss, spawn-if-missing

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages