Traduction automatique du turc (Cloudflare Workers AI), non relue par l'auteur. Lire l'original en turc

← Articles

Intégration du Game Mode et du HUD/OSD de Quickshell pour le joueur Linux

Note —

Détection du plein écran, gestion automatique des ressources, panneau OSD FPS/température et suppression des notifications dans les jeux Steam et Proton.

· 2 min de lecture
Sommaire

Résumé : J'explique comment Quickshell détecte un jeu en plein écran et fait passer le bureau en mode jeu : mise en sourdine des notifications et masquage de la barre supérieure, réglage des priorités du processeur, du GPU et des E/S avec Feral GameMode, et un petit indicateur de FPS et de température ouvert par raccourci.

Jouer sous Linux est devenu une expérience fluide après les avancées de Proton et de Wayland. Cependant, le fait que les shells de bureau affichent négligemment des notifications pendant le jeu, occupent la mémoire du GPU en dessinant des animations en arrière-plan ou provoquent des micro-blocages (stutter) dans le temps de frame constitue un problème sérieux.

Quickshell détecte instantanément le lancement d'un jeu en plein écran au niveau des protocoles Wayland et fait automatiquement passer le bureau en état Game Mode.

1. Détection du plein écran et « Do Not Disturb » (DND) automatique

Lorsque des fenêtres en plein écran sont déclenchées sur Hyprland, l'écouteur d'événements de Quickshell entre en jeu :

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;
        }
    }
}

Ainsi, au moment le plus palpitant du jeu, aucune notification pop-up n'apparaît au milieu de l'écran ; la barre supérieure est entièrement désactivée et la carte graphique consacre tout son budget de rendu au jeu.

2. Feral GameMode et gestion du CPU/GPU

Lorsque le Game Mode est déclenché, une poignée de main s'effectue en arrière-plan avec gamemoded via D-Bus :

  • CPU Governor : passage en mode performance, les fluctuations de fréquence des cœurs sont évitées.
  • Profil d'alimentation GPU : verrouillé sur le niveau haute performance.
  • Priorité d'E/S : une priorité temps réel (RT) est attribuée au processus du jeu.

3. Widget OSD compact à la manière de MangoHud

Une fenêtre de télémétrie QML minimale, ouvrable à la demande par un raccourci clavier dans un coin de l'écran, présente la fréquence d'images (FPS) en jeu, la température du GPU et l'utilisation de la mémoire dans une couche transparente.

Mon analyse

  • Le bureau doit s'effacer pendant le jeu : la mise en sourdine des notifications et la fermeture de la barre lors de la détection du plein écran laissent à la fois l'attention et le budget de rendu au jeu.
  • La gestion des ressources est automatique : avec GameMode, le processeur passe en mode performance, le GPU est verrouillé sur un profil élevé et la priorité est donnée au jeu ; rien à faire manuellement pour cela.
  • La mesure toujours à portée de main : le panneau OSD ouvert par raccourci affiche la fréquence d'images, la température du GPU et l'utilisation de la mémoire sans interrompre le jeu.