Quickshell Game Mode and HUD/OSD Integration for the Linux Gamer
Score —Fullscreen detection in Steam and Proton games, automatic resource management, FPS/temperature OSD panel, and notification suppression.
Contents
Summary: I explain how Quickshell detects a full-screen game and switches the desktop into game mode: muting notifications and hiding the top bar, setting CPU, GPU and I/O priorities with Feral GameMode, and a small FPS and temperature indicator opened with a shortcut.
Gaming on Linux has become a smooth experience after the advances in Proton and Wayland. However, desktop shells carelessly showing notifications during gameplay, drawing animations in the background and occupying GPU memory, or causing micro-stutters in frame time is a serious problem.
Quickshell instantly detects that a full-screen game has been launched at the Wayland protocol level and automatically switches the desktop into Game Mode.
1. Full-Screen Detection and Automatic “Do Not Disturb” (DND)
When full-screen windows are triggered on Hyprland, Quickshell’s event listener kicks in:
import QtQuick 2.15
import Quickshell.Hyprland 1.0
Item {
id: gameDetector
readonly property bool isGameActive: {
const win = Hyprland.activeWindow;
return win && win.fullscreen && (win.class.includes("steam_app") || win.class.includes("gamescope"));
}
onIsGameActiveChanged: {
if (isGameActive) {
console.log("[Quickshell] Game Mode aktif: Bildirimler bastırılıyor.");
NotificationManager.mute();
TopBar.exclusiveZone = 0;
TopBar.visible = false;
} else {
console.log("[Quickshell] Game Mode pasif: Masaüstü panelleri geri yüklendi.");
NotificationManager.unmute();
TopBar.exclusiveZone = 36;
TopBar.visible = true;
}
}
}
This way, pop-up notifications do not appear in the middle of the screen at the most exciting moment of the game; the top bar is completely disabled, and the graphics card transfers its entire drawing budget to the game.
2. Feral GameMode and CPU/GPU Management
When Game Mode is triggered, a handshake is performed in the background with gamemoded over D-Bus:
- CPU Governor: Set to
performancemode, core frequency fluctuations are prevented. - GPU Power Profile: Locked to the high performance level.
- I/O Priority: Real-time (RT) priority is allocated to the game process.
3. MangoHud-Like Compact OSD Widget
A minimal QML telemetry window that can be opened in the corner of the screen with a keyboard shortcut when desired presents the in-game frame rate (FPS), GPU temperature and memory usage in a transparent layer.
My reading
- The desktop should step back during gaming: Silencing notifications and closing the bar when full screen is detected leaves both attention and the drawing budget to the game.
- Resource management is automatic: With GameMode, the processor is set to performance mode, the GPU is locked to a high profile and priority is given to the game; nothing needs to be done manually for these.
- Measurement is always at hand: The OSD panel opened with a shortcut shows the frame rate, GPU temperature and memory usage without interrupting the game.