"Hell auf dunkel" Modus
-
(Vorbemerkung: das Folgende bezieht sich auf Linux-PCs (hier Xubuntu 20.4). Meine vorgeschlagene Lösung sollte auch für andere Umgebungen funktionieren - ob sie aber für Windows- und Mac-Umgebungen überhaupt nötig ist, ist mir nicht klar.)
Wie viele Menschen meines Alters leide ich an einer leichten Linsentrübung:
Katarakt oder grauer StarIch konnte im Lauf der letzten Jahre meinen PC-Arbeitsplatz so einrichten, dass das Problem der Überstrahlung mehr oder weniger dunklen Textes durch helle Umgebung nicht mehr auftritt.
Dabei sind mE die folgenden Punkte entscheidend:
- der Raum mit meinem Display ist abgedunkelt
- alle meine Programme laufen mit heller Schrift auf dunklem Grund (oder fast alle …)
Systemweit benutze ich die GTK-Themes “Adwaita-dark” (Erscheinungsbild) und “Greybird-dark” (Fenstermanager-Einstellungen)
Manche Programme bringen eigene Einstellungen mit (zB TV-Browser, Mousepad).
Für die Browser (Waterfox und Opera beta) benütze ich die “Dark Reader” Erweiterung.Nun zu MView (13.7.1):
ich starte mview mit der folgenden Option als letzter Zeile in der MediathekView.vmoptions Datei:-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel
was meine Themes-Einstellungen weitgehend auch in mview funktionieren macht.
Nachdem MenchenSued in dem Vorläufer-Thread (in "Ideen,Anregungen …) dieses schrieb:
“Ich habe gerade mal im Code nachgeschaut, eine Farbe für den Hintergrund ist derzeit nicht definiert”habe ich jetzt mal einen Screenshot gemacht, um die verbliebenen Problemzonen zu demonstrieren:
Button- & Statusleiste
Beschreibungsfeld unten
alle Unterfenster (bis auf die Bandbreite)Meine laienhafte Vorstellung: wenn man alle Farbeinstellungen, inklusive jener erst noch zu definierenden, aus der mediathek.xml in eine eigene Datei auslagert, könnte man ja gleich zwei davon mitliefern (zB hell.xml und dunkel.xml) und per einer Option in den Einstellungen eine davon auswählen?
Ich wäre gern bereit, die Farben für die dunkel.xml zu liefern.
Nichts eilt … -
Kann die folgende Feststellung unaufwendig bestätigt oder verworfen werden? “Stimmt” oder “stimmt nicht” wären ausreichend:
Dieses ist in MediathekView nicht auf einfache Weise möglich:
global allen Hintergünden die Eigenschaft/das Attribut (oder wie auch immer) “Farbe” zuweisen.
“Nein” für: das ist nicht so einfach rauszufinden ;-))
-
@zajaa Dunkelmodus ist nicht trivial umzusetzen.
In deinem Screenshot sind die dunklen Anteile quasi der “alte” Swing-UI Anteil, welcher nicht mit modernen hohen Auflösungen klar kommt. Du nutzt gem. Deiner Angabe das GTK L&F, welches innerhalb von Java das am schlechtesten gepflegte und fehlerbehafteste ist. Deswegen habe ich per default auch für die App Nimbus gewählt. Würde MV noch komplett Swing beinhalten wären für dich die Probleme beseitigt.
Die hellen Anteile im Screenshot (zzgl. Bandbreitenansicht) sind die modernen Anteile, die mit JavaFX neu implementiert wurden damit auch hohe Auflösungen etc funktionieren. Diese nutzen keine Swing L&F sondern einen eigenen Mechanismus. Damit aber nicht genug.Die Erkennung ob ein Nutzer Dark Mode nutzt oder nicht funktioniert nur zuverlässig unter Windows und macOS. Meine Suche nach funktionalen APIs um das für GNOME oder KDE zu bewerkstelligen hat bisher nichts ergeben. Eine Erkennung über angepasste Desktop-Themes scheidet aus - da ist der Aufwand einfach viel zu hoch.
Deshalb wird es vorerst keinen Dark Mode für MediathekView geben.
-
@derreisende77
tut mir leid, dass ich noch einmal nerve, aber dein “Die Erkennung ob ein Nutzer Dark Mode nutzt oder nicht …” lässt mich befürchten, dass ich mich (wie immer …) zu wenig strukturiert und zu kompliziert ausgedrückt habe.Dass ich GTK und meine Linux-GUI Einstellungen erwähnte, wäre für meine Fragen nicht wirklich nötig gewesen.
Ich möchte aber ausschliessen, dass eine Lösung, die unterhalb von “automatische Integration in die bestehende Oberfläche” vielleicht möglich wäre, nicht wenigstens wahrgenommen wird.
Darum habe ich jetzt mal ein mockup gemacht:
Meine Frage ist:
wäre das, was ich da oben in der roten Ellipse andeute, nicht eine Möglichkeit, Benutzern die Möglichkeit zu geben, sich ihren Dark Mode selbst zu basteln, unabhängig von irgendwelchen Voreinstellungen des Betriebssystems?Wenn das für euch nur mit mehr als geringem Aufwand möglich ist, dann lasst es durchaus sein, ich brauche auch keine Begründung dafür.
Ihr macht auch ohne Dark Mode einen tolle Sache
-
@derreisende77
Der mtplayer verwendet einfach zwei unterschiedliche CSS Dateien.
https://github.com/xaverW/MTPlayer/tree/master/src/main/resources/de/p2tools/mtplayer
Ich habe aber keine Erfahrung, ob sich so etwas auch ohne Aufwand im MediathekView realisieren ließe. Ansonsten wäre der Vorschlag von @zaJaa einen Versuch wert. Hier würde es “lediglich” zweier neuer Parameter bedürfen. Vielleicht kannst Du uns kurz sagen, wie Du es siehst, ausprobieren könnte es dann ggf. auch jemand anders, wenn er weiß, an welchen Stellen diese zwei Parameter eingesetzt werden müssen.
-
@menchensued Stimmt, mtplayer nutzt aber auch durchgängig JavaFX und erhebt nicht den Anspruch, auf den jeweiligen OS halbwegs kompatibel auszusehen. Damit ist es dann auch ein leichtes die Farben hin- und herzuwechseln.
Die Grenzen der obigen Ansätze erkennt man z.B. unter Windows und macOS. Deren Themes scheren sich einen Dreck ob Dark mode aktiv ist oder nicht. Somit ist das ganze schon mal nicht wirklich trivial auf den Plattformen umzusetzen, auf denen man zumindest einen Dark Mode erkennen kann.
Das Anpassen der Farben ist für die meisten Swing Themes undokumentiert und somit ein sehr umfängliches Ratespiel.
Davon abgesehen gibt es eine Unmenge an (kommerzieller) Software die derzeit auch noch kein Dark mode beherrscht.Ich bleibe daher (bis man mich eines besseren belehrt) bei meiner Meinung das die ganze Sache zukünftig wünschenswert, aber derzeit nicht trivial umzusetzen ist.
-
@derreisende77
Danke für die Analyse. Wenn es nicht mit “einer Zeile Code” getan ist, ist es natürlich berechtigt, kein Risiko einzugehen und lieber auf dieses Feature zu verzichten. Vielleicht kann man es auch die ToDo-Liste setzen für den Fall, dass der gesamte Code neu geschrieben wird. Es war ja mal die Rede von C++, oder? -
@menchensued ja c++ steht im Raum. Aber momentan habe ich beruflich so viel zu tun dass ich auch einen 72h Tag locker füllen könnte