Maschinelle Übersetzung aus dem Türkischen (Cloudflare Workers AI), vom Autor nicht geprüft. Türkisches Original lesen

← Beiträge

Dynamische Theme-Engine und OLED-Farbverwaltung für Quickshell

Bewertung —

Methoden, um echte OLED-Schwarztöne, Catppuccin, Tokyo Night und benutzerdefinierte Farbpaletten quickshell-weit ohne Neuladen sofort anzuwenden.

· 2 Min. Lesezeit
Inhalt

Zusammenfassung: Der Weg, das Theme in Quickshell ohne Neustart der Anwendung zu wechseln, ist eine mit pragma Singleton definierte Datei Theme.qml: Alle Komponenten lesen ihre Farben von dort, und der Aufruf Theme.setTheme() stellt den Bildschirm sofort auf die neue Palette um. Der Artikel nennt außerdem die Hauptfarben der vier OLED-Themes, die ich für Omarchy vorbereitet habe.

Bei der Desktop-Ästhetik erfordert ein Theme-Wechsel meist das Bearbeiten von Konfigurationsdateien und einen Neustart der Anwendung. Quickshell ermöglicht dank des QML-Singleton-Musters und der dynamischen Eigenschaftsbindung (dynamic property binding), das Farbschema des gesamten Desktops mit einem einzigen Befehl und sofort zu ändern.

In diesem Artikel behandeln wir, wie insbesondere für OLED (#000000)-Panels optimierte kontrastreiche Themes in Quickshell konfiguriert und in die Omarchy-Theme-Engine integriert werden.

1. Das globale Theme-Singleton: Theme.qml

Eine in QML mit pragma Singleton definierte Datei ist für alle untergeordneten Komponenten direkt erreichbar:

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

Da alle Balken und Widgets als color: Theme.background definiert sind, nimmt der gesamte Bildschirm in dem Moment, in dem Theme.setTheme("tokyo-night") aufgerufen wird, die neuen Farben an, ohne dass ein Neustart erforderlich ist.

2. Offizielle OLED-Themes von Omarchy

Vier grundlegende OLED-Themes, die wir für das Omarchy-Ökosystem entworfen haben und die mit der Quickshell-Engine laufen:

  1. Türkiye-Theme: Die Balance aus Mond-Stern-Rot (#e11d48) und Mittelmeer-Türkis (#00ffcc).
  2. Steam Machine Edition: Das Valve-Erbe in mechanischem Orange (#f97316) und Steam-Blau (#38bdf8).
  3. Ankara-Theme: Warmes Bernstein (#f59e0b) und Hauptstadt-Marineblau (#1e3a8a).
  4. Istanbul-Theme: Iznik-Fliesen-Türkis und Korallenrot (#fb7185).

All diese Themes sorgen dafür, dass sich die Pixel auf OLED-Bildschirmen vollständig abschalten, was sowohl Energie spart als auch absoluten Kontrast bietet.

Meine Lesart

  • Farben sollten aus einer einzigen Quelle kommen: Wenn Komponenten statt fester Farben an das Theme-Objekt gebunden werden, erfolgt die Änderung sofort.
  • Schwarz sollte auf OLED wirklich schwarz sein: #000000 schaltet die Hintergrundpixel ab und sorgt für Energieeinsparung und Kontrast.