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.
Inhalt
Zusammenfassung: Der Weg, das Theme in Quickshell ohne Neustart der Anwendung zu wechseln, ist eine mit
pragma Singletondefinierte DateiTheme.qml: Alle Komponenten lesen ihre Farben von dort, und der AufrufTheme.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:
- Türkiye-Theme: Die Balance aus Mond-Stern-Rot (#e11d48) und Mittelmeer-Türkis (#00ffcc).
- Steam Machine Edition: Das Valve-Erbe in mechanischem Orange (#f97316) und Steam-Blau (#38bdf8).
- Ankara-Theme: Warmes Bernstein (#f59e0b) und Hauptstadt-Marineblau (#1e3a8a).
- 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.