| Configuration | ||
| Installation | ||
| Launch summary.png | ||
| LICENSE | ||
| MangoHud overlay selection.png | ||
| Previous settings prompt.png | ||
| README.md | ||
| Requirements | ||
| Resolution selection.png | ||
| Screenshots | ||
| Usage | ||
W.O.P.R – Steam Gaming Mode for Hyprland
“Shall we play a game?”
W.O.P.R is a Hyprland-centric “gaming mode” launcher for Arch-based systems (designed on Omarchy).
It installs a pair of helper scripts and Hyprland keybinds that:
- Start gamescope in a full-screen gaming session
- Launch Steam in Big Picture / Gamepad UI mode
- Apply CPU & GPU performance tweaks
- Optionally show a MangoHud overlay
- Restore everything cleanly when you quit
Once installed you get:
Super + Shift + S→ Enter Gaming Mode (W.O.P.R TUI, then Steam)Super + Shift + R→ Exit Gaming Mode (restore governors, GPU states, idle, etc.)
Features
-
🖥 Resolution presets
The TUI detects your current monitor and lets you choose:
- Native resolution (best quality)
- 1440p upscaled (1080p → 1440p)
- 1440p native (2560×1440)
- 4K upscaled (1440p → 4K)
- 4K/UHD native (3840×2160)
Internally it configures gamescope’s render and output sizes to match.
-
📊 MangoHud presets
- Off – cleanest view
- Minimal – FPS counter only
- Full Stats – FPS, frametime, CPU/GPU temps, power, RAM, etc.
-
⚙️ Performance mode
When
PERFORMANCE_MODE=enabled(default):- Uses gamemoderun to wrap gamescope/Steam
- Can add
--rt --immediate-flipsto gamescope for lower latency - Optionally grants
cap_sys_nicetogamescope(if you accept the prompt) - Switches CPU governor to performance-oriented mode while gaming
- Applies GPU performance tweaks and records original settings
On exit, CPU governor, GPU power/perf modes and idle behaviour are restored.
-
🎮 Steam launch modes
Configurable via
/etc/gaming-mode.confor~/.gaming-mode.conf:STEAM_LAUNCH_MODE=bigpicture→steam -tenfoot(default)STEAM_LAUNCH_MODE=gamepadui→steam -gamepadui
-
🧠 Smart GPU support
Detects GPU(s) via
lspciand helper functions:- NVIDIA – installs Vulkan loader, 32-bit libs and video drivers
- AMD – installs RADV Vulkan stack, 32-bit libs and VAAPI/VDPAU
- Intel Arc (xe) – installs lean Vulkan + compute stack and applies
a
GSK_RENDERER=glfix for GTK4 apps on Arc - Intel iGPU (i915/Xe) – installs the full Intel media/Vulkan stack
On first run it can also add you to relevant groups (e.g.
video,input,gamemodeetc.), and will warn that you need to log out and back in. -
🎨 Omarchy-aware theming
If available, it reads colours from:
~/.config/omarchy/current/theme/ghostty.conf~/.config/omarchy/current/theme/colors.sh
and uses them to style the gum TUI. If those aren’t present, it falls back to a neutral dark theme.
-
🪟 Tidy Hyprland integration
- Automatically finds your Hyprland config:
~/.config/hypr/bindings.conf~/.config/hypr/keybinds.conf~/.config/hypr/hyprland.conf
- Appends a clearly-marked block of bindings and window rules
- Makes the W.O.P.R terminal floating, centred and pinned
- Automatically finds your Hyprland config:
How it works
The installer script (WOPR.sh):
-
Validates environment
- Requires
pacman,hyprctland a Hyprland config under~/.config/hypr/.
- Requires
-
Checks Steam + GPU dependencies
- Refreshes pacman DB (
pacman -Syy) - Optionally offers a full system upgrade (
pacman -Syu) - Verifies the multilib repository is enabled (needed for 32-bit Steam)
- Assembles a list of core packages (Steam, Vulkan loaders, 32-bit libs etc.) plus GPU-specific packages, then offers to install anything missing.
- Refreshes pacman DB (
-
Installs core tools (if needed)
Through
setup_requirements()it ensures:steam,gamescope,mangohud,gumpython,pciutils,libcap,gamemode- plus whatever is needed by your GPU
-
Deploys launcher scripts
Creates:
~/.local/share/steam-launcher/enter-gamesmode~/.local/share/steam-launcher/leave-gamesmode
These manage:
- Session state (
~/.cache/gaming-session) - CPU governor / GPU perf modes
- Hypridle (suspend/lock) behaviour
- gamescope + Steam start/stop
- MangoHud configuration
-
Adds Hyprland keybinds
Appends a block like:
# Gaming Mode bindings - added by installation script windowrulev2 = float, class:(WOPR-Terminal) windowrulev2 = size 800 600, class:(WOPR-Terminal) windowrulev2 = center, class:(WOPR-Terminal) windowrulev2 = pin, class:(WOPR-Terminal) bindd = SUPER SHIFT, S, Steam Gaming Mode, exec, <your-terminal> ~/.local/share/steam-launcher/enter-gamesmode bindd = SUPER SHIFT, R, Exit Gaming Mode, exec, ~/.local/share/steam-launcher/leave-gamesmode # End Gaming Mode bindings (It auto-detects whether your config uses bind or bindd.) -
Validation
A final check confirms: • Launcher scripts exist and are executable • The bindings block is present in your Hypr config • gamescope capabilities are compatible with PERFORMANCE_MODE