Files
streamdeck-go/OMARCHY.md
2026-03-15 10:10:13 -06:00

5.8 KiB

streamdeck-go — Omarchy Integration

Omarchy-specific commands and config examples for streamdeck-go. All commands run via sh -c on key press unless marked priv: (requires the privileged helper — see README § Privileged commands).


Terminal (Ghostty)

keys:
  0:
    icon: ghostty.png
    command: ghostty

  # Open a new window with a specific command
  1:
    icon: ssh.png
    command: "ghostty -e ssh user@homeserver"

  # Open in a specific directory
  2:
    icon: projects.png
    command: "ghostty --working-directory=~/projects"

Walker (app launcher)

keys:
  3:
    icon: walker.png
    command: walker

  # Open walker directly in a specific mode
  4:
    icon: calc.png
    command: "walker --modules calc"

Hyprland

Hyprland exposes everything via hyprctl dispatch. No privileges needed.

Workspaces

keys:
  0:
    icon: ws1.png
    command: "hyprctl dispatch workspace 1"
  1:
    icon: ws2.png
    command: "hyprctl dispatch workspace 2"
  2:
    icon: ws3.png
    command: "hyprctl dispatch workspace 3"

  # Move active window to a workspace
  8:
    icon: move.png
    command: "hyprctl dispatch movetoworkspace 2"

  # Toggle floating on the active window
  9:
    icon: float.png
    command: "hyprctl dispatch togglefloating"

  # Fullscreen
  10:
    icon: fullscreen.png
    command: "hyprctl dispatch fullscreen 0"

  # Kill active window
  11:
    icon: close.png
    command: "hyprctl dispatch killactive"

Multi-monitor

keys:
  16:
    icon: monitor-left.png
    command: "hyprctl dispatch focusmonitor l"
  17:
    icon: monitor-right.png
    command: "hyprctl dispatch focusmonitor r"

  # Move window to other monitor
  18:
    icon: move-monitor.png
    command: "hyprctl dispatch movewindow mon:next"

Hyprlock (screen lock)

keys:
  31:
    icon: lock.png
    command: hyprlock

Hypridle (idle inhibitor)

keys:
  30:
    icon: idle-off.png
    # Toggle idle inhibitor — stops screen from locking during presentations
    command: "pkill hypridle || hypridle &"

Hyprpaper (wallpaper)

keys:
  24:
    icon: wallpaper.png
    # Cycle to a specific wallpaper on the active monitor
    command: "hyprctl hyprpaper wallpaper 'eDP-1,~/wallpapers/mountain.jpg'"

Waybar

keys:
  7:
    icon: waybar-reload.png
    # Reload Waybar config and style without restarting
    command: "pkill -SIGUSR2 waybar"

  15:
    icon: waybar-toggle.png
    # Show/hide the bar
    command: "pkill -SIGUSR1 waybar"

  # Full restart (if SIGUSR2 isn't enough after big config changes)
  23:
    icon: waybar-restart.png
    command: "pkill waybar; waybar &"

Mako (notifications)

keys:
  5:
    icon: notif-dismiss.png
    # Dismiss all notifications
    command: "makoctl dismiss --all"

  6:
    icon: notif-invoke.png
    # Invoke the default action on the last notification
    command: "makoctl invoke"

  # Toggle do-not-disturb
  13:
    icon: dnd.png
    command: "makoctl set-mode $([ $(makoctl get-mode) = 'do-not-disturb' ] && echo default || echo do-not-disturb)"

Audio (PipeWire / wpctl)

keys:
  16:
    icon: vol-up.png
    command: "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
  17:
    icon: vol-down.png
    command: "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
  18:
    icon: mute.png
    command: "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"

  # Mic mute (useful for calls)
  19:
    icon: mic-mute.png
    command: "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"

Brightness (brightnessctl)

keys:
  20:
    icon: bright-up.png
    command: "brightnessctl set +10%"
  21:
    icon: bright-down.png
    command: "brightnessctl set 10%-"
  22:
    icon: bright-max.png
    command: "brightnessctl set 100%"

Screenshots (grimblast / hyprshot)

Omarchy ships with grimblast. Output goes to ~/Pictures/Screenshots/ by default.

keys:
  8:
    icon: screenshot.png
    # Fullscreen screenshot
    command: "grimblast save screen"

  9:
    icon: screenshot-area.png
    # Select area
    command: "grimblast save area"

  10:
    icon: screenshot-window.png
    # Active window
    command: "grimblast save active"

  # Copy to clipboard instead of saving
  11:
    icon: screenshot-clip.png
    command: "grimblast copy area"

Night light (hyprsunset / wlsunset)

keys:
  25:
    icon: nightlight.png
    command: "pkill hyprsunset; hyprsunset -t 3500 &"
  26:
    icon: nightlight-off.png
    command: "pkill hyprsunset"

Power (privileged — requires helper)

These use the priv: prefix and must be added to /etc/streamdeck-go/privileged.yaml.

# /etc/streamdeck-go/privileged.yaml
commands:
  suspend:  "systemctl suspend"
  hibernate: "systemctl hibernate"
  reboot:   "systemctl reboot"
  poweroff: "systemctl poweroff"
# ~/.config/streamdeck-go/config.yaml
keys:
  28:
    icon: suspend.png
    command: "priv:suspend"
  29:
    icon: reboot.png
    command: "priv:reboot"
  30:
    icon: poweroff.png
    command: "priv:poweroff"

Media (playerctl)

Works with Spotify, Firefox, mpv, and anything that exposes MPRIS.

keys:
  20:
    icon: prev.png
    command: "playerctl previous"
  21:
    icon: playpause.png
    command: "playerctl play-pause"
  22:
    icon: next.png
    command: "playerctl next"
  23:
    icon: stop.png
    command: "playerctl stop"

Useful hyprctl one-liners

What Command
List all windows hyprctl clients
Active window info hyprctl activewindow
List monitors hyprctl monitors
Reload Hyprland config hyprctl reload
Toggle special workspace hyprctl dispatch togglespecialworkspace
Focus next window hyprctl dispatch cyclenext
Rotate layout hyprctl dispatch layoutmsg orientationcycle