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

← Articles

Moteur de thème dynamique et gestion des couleurs OLED pour Quickshell

Note —

Méthodes pour appliquer instantanément les vrais noirs OLED, Catppuccin, Tokyo Night et des palettes de couleurs personnalisées dans tout Quickshell sans rechargement.

· 2 min de lecture
Sommaire

Résumé : Dans Quickshell, le moyen de changer de thème sans redémarrer l'application est un fichier Theme.qml défini avec pragma Singleton : tous les composants y lisent leurs couleurs, et l'appel Theme.setTheme() fait passer l'écran instantanément à la nouvelle palette. L'article donne aussi les couleurs principales des quatre thèmes OLED que j'ai préparés pour Omarchy.

Dans l'esthétique du bureau, changer de thème nécessite le plus souvent de modifier des fichiers de configuration et de redémarrer l'application. Grâce à Quickshell, au patron QML Singleton et à la liaison dynamique de propriétés (dynamic property binding), il est possible de changer le schéma de couleurs de tout le bureau avec une seule commande et instantanément.

Dans cet article, nous examinons comment les thèmes à fort contraste optimisés en particulier pour les panneaux OLED (#000000) sont configurés dans Quickshell et comment ils sont intégrés au moteur de thèmes Omarchy.

1. Le Singleton de thème global : Theme.qml

Un fichier défini avec pragma Singleton dans QML est directement accessible par tous les composants enfants :

pragma Singleton
import QtQuick 2.15

QtObject {
    id: theme
    
    // Aktif tema adı
    property string current: "oled-black"
    
    // Dinamik renk paletleri
    property color background: current === "oled-black" ? "#000000" : "#0f141c"
    property color surface:    current === "oled-black" ? "#0a0a0a" : "#171d27"
    property color border:     current === "oled-black" ? "#222222" : "#2a3442"
    property color text:       "#f4f4f5"
    property color textMuted:  "#71717a"
    property color accent:     "#00ffcc"
    
    // Temayı anında değiştir
    function setTheme(name) {
        current = name;
    }
}

Comme toutes les barres et tous les widgets sont définis sous la forme color: Theme.background, dès que Theme.setTheme("tokyo-night") est appelé, tout l'écran adopte les nouvelles couleurs sans nécessiter de redémarrage.

2. Thèmes OLED officiels d'Omarchy

Quatre thèmes OLED essentiels que nous avons conçus pour l'écosystème Omarchy et qui fonctionnent avec le moteur Quickshell :

  1. Thème Turquie : équilibre entre le rouge écarlate du croissant et de l'étoile (#e11d48) et le turquoise méditerranéen (#00ffcc).
  2. Steam Machine Edition : l'orange mécanique hérité de Valve (#f97316) et le bleu Steam (#38bdf8).
  3. Thème Ankara : l'ambre chaud (#f59e0b) et le bleu marine de la capitale (#1e3a8a).
  4. Thème Istanbul : le turquoise de la céramique d'İznik et le rouge corail (#fb7185).

Tous ces thèmes permettent aux pixels de s'éteindre complètement sur les écrans OLED, ce qui assure à la fois des économies d'énergie et un contraste absolu.

Ma lecture

  • Les couleurs doivent venir d'un seul endroit : lorsque les composants sont liés à l'objet de thème plutôt qu'à des couleurs fixes, le changement est instantané.
  • Sur OLED, le noir doit vraiment être noir : un arrière-plan #000000 éteint les pixels, ce qui apporte économies d'énergie et contraste.