Scaling bei 4k Monitoren: Wer hat Verantwortung?

KDE, Gnome, Windowmanager, X11, Grafiktreiber und alles was dazu notwendig ist. Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
buhtz
Beiträge: 1208
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Scaling bei 4k Monitoren: Wer hat Verantwortung?

Beitrag von buhtz » 28.11.2024 09:07:40

Hi,
es geht hier um eine Grundsatzfrage, die mich aus der Perspektive als upstream maintainer einer Qt Anwendung beschäftigt.

Diverse Anwendungen haben auf 4k Monitoren ein Scaling Problem und z.B. Schriften werden zu klein angezeigt. Ich habe grob verstanden, warum das so ist. Trolltech selbst beschreibt das in diesem Dokument: https://doc.qt.io/qt-5/highdpi.html

Wie gesagt, durchdringe ich das Thema nicht vollständig und vielleicht bin ich da schief gewickelt. Genau deswegen frage ich ja hier.

Ich sehe es nicht ein, dass einzelne Anwendungen sich um User mit 4k Monitoren kümmern müssen und dafür extra Code, Doku und Maintainer Ressourcen aufwenden. Ist das nicht Aufgabe des Window Managers oder einer anderen Komponente des Desktop Environments, sich um solche Details zu kümmern, zumal ein DE dass dann auch global für alle Anwendungen regeln könnte?

Natürlich mag es DEs geben, die noch nicht mit 4K umgehen können und man daher für einzelne Anwendungen Workarounds verwendet. Aber diese Sonderfälle lassen wir mal Außen vor.

Danke schon mal für eure Gedanken dazu.
Christian
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Benutzeravatar
ralli
Beiträge: 4380
Registriert: 02.03.2008 08:03:02

Re: Scaling bei 4k Monitoren: Wer hat Verantwortung?

Beitrag von ralli » 28.11.2024 09:20:06

Das Problem kenne ich, nicht nur bei 4k. Ich benutze dann qt5ct (extra Paket) und kann damit die gewünschte Schriftgröße für alle qt Programme einstellen.

Gruß ralli

Benutzeravatar
TRex
Moderator
Beiträge: 8325
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Scaling bei 4k Monitoren: Wer hat Verantwortung?

Beitrag von TRex » 28.11.2024 09:21:33

Ohne jetzt den QT-Artikel gelesen zu haben: unter Xorg ist das ein ziemliches Durcheinander, erst mit wayland wird das "reformiert". Es gibt IMHO keine zentrale Verantwortung, jedes Toolkit hat seine eigenen Lösungen und entsprechend inkonsistent ist es für User.

Quelle: ich mit meinen 2 4k Bildschirmen (seit rund 6-7 Jahren) und dem Festhalten an awesomewm (was nicht mit wayland kompatibel ist).
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
MSfree
Beiträge: 11605
Registriert: 25.09.2007 19:59:30

Re: Scaling bei 4k Monitoren: Wer hat Verantwortung?

Beitrag von MSfree » 28.11.2024 09:36:20

buhtz hat geschrieben: ↑ zum Beitrag ↑
28.11.2024 09:07:40
Ist das nicht Aufgabe des Window Managers
Nein. Der Windowmanager kümmert sich nur um die Fenstergeomerien, also Breite, Höhe und Position von (neuen) Fenstern.
oder einer anderen Komponente des Desktop Environments, sich um solche Details zu kümmern
Eine Anwendung weiß im allgemeinen nichts darüber, welcher Desktop läuft. Nur so ist auch gewährleistet, daß ein Qt/KDE-Programm auch unter Gnome oder sogar in einem Fenster eines primitiven Windowmanageers wie twm lauffähig ist.

Eine Anwendung kann versuchen, mit dem Desktop zu kommunizieren und gewisse Defautls wie Font und Fontgröße abzufragen. Eine Anwendung muß aber immer auch dann funktionieren, wenn diese Abfragen fehlschlagen.
zumal ein DE dass dann auch global für alle Anwendungen regeln könnte?
Solange die Anwendung nur einen Font braucht, könnte das global geregelt werden. Viele Anwendugnen benötigen aber mehr als einen Font bzw. eine Fontgröße. Eine Textverarbeitung braucht z.B. unterschiedliche Fontgrößen für Überschriften, normalen Text und das sprichwörtliche Kleingedruckte.
Natürlich mag es DEs geben, die noch nicht mit 4K umgehen können und man daher für einzelne Anwendungen Workarounds verwendet. Aber diese Sonderfälle lassen wir mal Außen vor.
Gerade Qt/KDE war jahrelang nicht in der Lage, Fonts brauchbar zu skalieren, Qt konnte lange Zeit nur ganzzahlige Skalierung also Faktor 1, 2, 3.... Vor allen für High-DPI-Monitore ist aber oft eine Skalierung um 1.25 oder 1.5 viel sinnvoller.

Anwendungen müssen ebenfalls gutmütig auf andere Fonts/Fontgrößen reagieren. Leider sind aber in der Vergangenheit viele Schaltflächen nicht dynamisch programmiert wordern sondern mit fester Größe wie 200 Pixel breit und 30 Pixel hoch. Da paßt dann ein 2-fach skalierter Text gar nicht mehr rein, weil die Schaltfläche auch skalieren müßte. Eine skalierende Schaltfläche bedeutet aber, daß benachbarte GUI-Elemente abenfalls gutmütig reagieren müssen, also sich in der Position und Größe derart verändern müssen, daß das Gesamtbild der GUI stimmig bleibt, bis hin zur Skalierung der eigentlichen Fensters.

All das kann kein Desktop gewährleisten, das muß immer die Anwendung selbst regeln.

Glaub mir, ich weiß wovon ich spreche, nutze selber Qt als Programmierumgebung und habe einige zig Anwendungen auf High-DPI testen und umprogrammieren müssen. Das sogar unter Windows, das angeblich so gut mit High-DPI umgehen kann (Pustekuchen).

Benutzeravatar
ralli
Beiträge: 4380
Registriert: 02.03.2008 08:03:02

Re: Scaling bei 4k Monitoren: Wer hat Verantwortung?

Beitrag von ralli » 29.11.2024 17:14:18

Leider habe ich etwas mißverstanden, denn es geht ja nicht um die Font Skalierung. Gelernt habe ich, das in der GUI Programmierung grundsätzlich nicht für eine bestimmte Auflösung programmiert wird, sondern immer die native Auflösung benutzt wird. Für die Skalierung ist dann letztendlich der Anwender zuständig. Ich habe mal einen 4 K Monitor von meinem Sohn geschenkt bekommen. Die Skalierung unter den verschiedenen Linux Desktops fand ich anstrengend und schwierig, weil noch nicht ganz ausgereift. Das ist aber auch ein paar Jahre her. Aktuell habe ich einen 27 Zoll Monitor, der aber kein 4 k kann. Das brauche ich auch nicht.

Gruß ralli

Benutzeravatar
MSfree
Beiträge: 11605
Registriert: 25.09.2007 19:59:30

Re: Scaling bei 4k Monitoren: Wer hat Verantwortung?

Beitrag von MSfree » 29.11.2024 17:39:46

ralli hat geschrieben: ↑ zum Beitrag ↑
29.11.2024 17:14:18
Leider habe ich etwas mißverstanden, denn es geht ja nicht um die Font Skalierung.
Doch, es geht bei der Skalierung hauptsächlich um Fonts und nebensächlich um die Größe von Symbolbildern (aka Icons).

Fonts werden zumindest in Linux noch in Pixel gemessen, ein typischer Font hat eine Höhe von 12 Pixeln. Je kleiner die Pixel werden, desto kleiner werden die Buchstaben. Stellst du einen größeren Font ein, werden Texte wieder leichter lesbar. Ähnliches gilt für Icons.
Gelernt habe ich, das in der GUI Programmierung grundsätzlich nicht für eine bestimmte Auflösung programmiert wird, sondern immer die native Auflösung benutzt wird.
Programme sollten so programmiert sein, daß sie mit beliebiger Fenstergröße, also Anzahl Pixel, funktionieren. Die sollten also genauso gut im Fullscreen wie auch im Fenster mit nur z.B. 400*500 Pixel funktionieren. Wenn du ein Fenster also größer ziehst oder kleiner machst, dann müssen sich alle Elemente in dem Fenster neu anordnen und zwar so, daß das Gesamtbild stimmig bleibt. Natürlich kann sich dabei eine minimale Anzahl Pixel in der Breite und in der Höhe ergeben, unter die man ein Fenster nicht verkleinern kann.

Erlaubt man nun zusätzlich, die Fonst variabel einstellbar zu machen, muß so ein Programm nicht nur die Größenänderung durch den Benutzer sauber unterstützen sondern auch noch die Größe der Schaltflächen an den Font anpaßbar unterstützen. Das kann zu geometrischen Konflikten führen.
Für die Skalierung ist dann letztendlich der Anwender zuständig.
Nein. Der Anwender mag für das Größer- und Kleinerziehen der Fenster zuständig sein, die Skalierung der Schlatflächen kann der Anwender nur durch ändern der Fontgröße beeinflussen.
Die Skalierung unter den verschiedenen Linux Desktops fand ich anstrengend und schwierig, weil noch nicht ganz ausgereift.
Wie gesagt, die Skalierung muß die Anwendung unterstützen. GUI-Toolkits wie GTK, Qt ud KDE können den Programmierer dabei unterstützen, man kann als Programmierer aber auch jede Menge falsch machen, z.B. in dem er einer Schaltfläche (Pushbutton oder Menüeintrag) mit fester Anzahl Pixel vorgibt, so daß große Fonts nicht mehr in die Schaltflächen passen.

Windows sorgt bei einem Skalierungsfaktor von beispielsweise 1.5 nur dafür, daß statt 12 Pixel Fonts, 18 Pixel Fonts verwendet werden. So funktionieren GTK (Gnome) und Qt (KDE) letzten Endes auch. Wer aber Anwendungen startet, die die Skalierung nicht unterstützen, dann werden die halt mit 12 Pixel Fonts dargestellt, was eben kleine Schriften bewirkt.

Antworten