Drive a Hyprland / Omarchy desktop and your AI agents with a PS5 DualSense: radial menus, push-to-talk…
PS One Shot
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Use a PlayStation 5 DualSense to drive a Hyprland desktop and the AI agents running on it.
With it you can:
- switch workspaces and move between windows,
- open your favorite apps and everything else from radial menus you steer with a stick,
- navigate launcher menus and answer agent prompts (Enter, Escape, arrow keys),
- talk to an agent and fire the prompt off with one pull of R2 — the "one shot",
- take dictation back with the adaptive L2 trigger,
- change an agent's thinking level from the controller,
- switch the dictation language and audio devices from a radial menu,
- use the touchpad as a mouse,
- see AI-agent status on the lightbar, and feel and hear when an agent needs you.
Works on any Hyprland setup. On Omarchy it also uses Omarchy's own menus and commands.
Features
Windows and the desktop
- **Workspaces and windows.** L1/R1 step to the previous/next workspace, empty ones included, and the D-pad moves focus. A □ tap makes the window full width (maximized: bar and gaps stay, like Omarchy's Super+Alt+F); hold □ for real fullscreen, which kicks in by itself after about half a second. Hold □ and press another button right away for the window layer: the same buttons then move the window, and on Omarchy ○ switches the workspace layout between dwindle and scrolling (Super+L; also in L3 → System → Window → Layout).
- **On-the-fly adjustments (hold ○).** While ○ is held:
- D-pad ↑/↓ changes volume, ←/→ screen brightness (laptop backlight, or DDC/CI on external monitors via Omarchy). Hold either to keep going: a slow DDC monitor gets one update at a time, always to the latest value, so it glides instead of lagging behind;
- the left stick ↑/↓ steps the system text size (Omarchy: the same knob as Text size in its monitor panel, for the shell, GTK apps and terminals; elsewhere GTK's text scaling), and clicking it (L3) resets it. Open foot windows (herdr's terminals) follow right away, even though foot can't reload its config: PS One Shot watches foot.ini and zooms each open window by the difference, without focusing it, whoever changed the size;
- the right stick ↑/↓ zooms just the focused window, for fine-tuning one terminal or page, and clicking it (R3) resets that.
A short ○ press is still Escape. Window zoom presses the app's own keys on the keypad (Ctrl+Keypad +/−, Ctrl+0; Kitty's Ctrl+Shift ones), which type the same on every keyboard layout. It works in terminals (including herdr's), browsers and editors; L3 → System → Window has Text bigger / smaller / reset too.
- **Couch Coding Mode.** L3 → PS One Shot → **Couch mode** scales the whole screen up by 1.5 (scale 2 → 3), so terminals, browsers, the bar and the overlays all grow for reading from across the room. The bar has less room then, so on Omarchy the [couch] bar_hide widgets leave it for the duration (by default Omarchy's own extras: keyboard layout, weather, updates, tray, Tailscale, agents, Bluetooth, monitor) and return to their places afterwards. Switching it off restores your monitor config. [couch] also sets the factor, the monitors, and actions to run once the screen has changed (the Omarchy preset restarts VoxType's waveform OSD there so it measures the new size).
- **Menu mode.** While a launcher menu is open (Omarchy menu, rofi, wofi, walker, fuzzel), the D-pad works as arrow keys, ✕ as Enter, ○ as Escape and L1/R1 as Page Up/Down. On Omarchy this covers its pickers too: the theme and background grids, clipboard history, emojis, the keybindings panel and password prompts ([menu] namespaces, matched against layer-shell namespaces).
- **Touchpad mouse.** One finger moves the cursor and two fingers scroll. Press the touchpad to click (two fingers pressed = right click, hold and move to drag); a light tap clicks too.
- **Stick scrolling.** The right stick scrolls smoothly, with hi-res wheel events.
Talking to agents
- **Agent prompts.** ✕ is Enter, ○ is Escape and the left stick sends arrow keys (with auto-repeat), so you can pick options in an agent's prompt and submit it without a keyboard.
- **Talk and shoot (R2).** Hold R2 lightly to dictate (Omarchy: voxtype, same as F9); the lightbar pulses fast and red while you talk. Let go to just type the text. Pull through the trigger's click instead to stop and send it: the recording stops right away, and Enter goes in as soon as VoxType has finished typing (it reads VoxType's state file, so a long dictation never gets cut off). A quick pull straight through, with nothing said, just sends what's already typed, like ✕. Every shot kicks back: a hard rumble, and the trigger itself buzzes under your finger for a moment.