ubuntuusers.de

Java: winzige UI auf HiDPI-Display

Status: Ungelöst | Ubuntu-Version: Ubuntu 19.10 (Eoan Ermine)
Antworten |

Punkt_Punkt_Punkt

Anmeldungsdatum:
3. Januar 2020

Beiträge: 3

Liebe Ubuntuusers-Community,
ich habe Ubuntu (19.10, 5.4.6-surface Kernel) auf meinem Microsoft Surface Go (4GB RAM, eMMC) installiert. Meine Java-Version ist die folgende:

$ java -version
openjdk version "13" 2019-09-17
OpenJDK Runtime Environment (build 13+33-Ubuntu-1)
OpenJDK 64-Bit Server VM (build 13+33-Ubuntu-1, mixed mode)

Nun habe ich folgendes Problem. Wenn ich zkn3 ausführe, so ist die grafische Oberfläche so winzig, man kann es kaum benutzen. Durch Google konnte ich einige Dinge in Erfahrung bringen. Dennoch stellen sich mir einige Fragen und es wäre nett, wenn mir jemand helfen könnte.

  • Wenn man das Programm mit dem "-Dsun.java2d.uiScale=2.0"-Argument startet, so wird es nutzbarer. Nun ist die Oberfläche aber leider zu groß. Eine Skalierung von 1.5 wäre ideal, nur leider sind (soweit ich sehe) nur ganze Zahlen als Faktor zulässig. Kennt jemand einen Befehl, der den erwünschten Effekt erzielen würde?

  • Ich habe in den Update-Notes gelesen, dass Oracle JDK 9 das Problem behoben hätte. Unterscheiden sich Oracle Java und OpenJDK soweit, dass sich ein solches Feature nicht in meinem OpenJDK13 findet?

  • Wenn ich Oracle JDK (statt OpenJDK) installieren sollte, um das Problem zu lösen: Würden auch Oracle JDK 11 und 13 das Problem beheben (Oracle JDK 9 wird nicht mehr unterstützt)?

Für jede Hilfe bin ich dankbar!

Udalrich

Anmeldungsdatum:
15. Mai 2019

Beiträge: 533

Seit der JDK-Langzeitversion 11 ist Oracles freies OpenJDK mit dem kommerziellen OracleJDK technisch gleich bis hin zur visuellen Pixelgleichheit, was zuvor noch nicht der Fall war. Wörtlich schrieb Oracle damals: „Oracles OpenJDK 11 unter der GPL-Lizenz bietet dieselbe Ausstattung und Leistung wie Oracles kommerzielles JDK 11.“

Zu den anderen Fragen weiß ich noch keine Antwort, interessiere mich aber ebenfalls für etwaige Antworten.

homer65

Avatar von homer65

Anmeldungsdatum:
8. November 2005

Beiträge: 577

Wohnort: bochum, germany

Habe zwar selber keine Erfahrung damit. Aber laut https://news.kynosarges.org/2019/03/24/swing-high-dpi-properties/ kann man die X und Y Größe der GUI mittels Parameter sehr wohl Prozent genau oder in DPI angeben.

Udalrich

Anmeldungsdatum:
15. Mai 2019

Beiträge: 533

homer65 schrieb:

Habe zwar selber keine Erfahrung damit. Aber laut https://news.kynosarges.org/2019/03/24/swing-high-dpi-properties/ kann man die X und Y Größe der GUI mittels Parameter sehr wohl Prozent genau oder in DPI angeben.

Die dort erwähnten Eigenschaften "-Dsun.java2d.win.uiScaleX=xx" und "-Dsun.java2d.win.uiScaleY=yy" scheinen nur unter Windows zu funktionieren und unter meinem OpenJDK11 aus Ubuntu 18 LTS nicht?

Was man aber bei Java generell tun kann, ist die Schriftgrößen manuell zu setzen. Bilder bleiben gleich groß wie vorher (aber vielleicht kann man es mit ""-Dsun.java2d.uiScale=x" kombinieren?).

java -Dswing.plaf.metal.controlFont="Dejavu Sans Condensed 18" -Dswing.plaf.metal.userFont="Dejavu Sans Condensed 18" -Dswing.plaf.metal.systemFont="Dejavu Sans Condensed 18" -jar Programm.jar

Den Schriftnamen kann man auch durch ein Kürzel ersetzen, dann wird die Standardschrift genommen und dies in der manuell angegebenen Größe.

java -Dswing.plaf.metal.controlFont="Fo 18" -Dswing.plaf.metal.userFont="Fo 18" -Dswing.plaf.metal.systemFont="Fo 18" -jar Programm.jar

Punkt_Punkt_Punkt

(Themenstarter)

Anmeldungsdatum:
3. Januar 2020

Beiträge: 3

Danke für eure Antworten! Die Parameter zur Skalierung in den X- und Y-Dimensionen hatte ich auch schon gefunden. Nur scheinen sie bei mir keinerlei Effekt zu haben. Ich habe folgende Variationen versucht:

$ java -jar -Dsun.java2d.win.uiScaleX=1.25 -Dsun.java2d.win.uiScaleY=1.25 zettelkasten.jar
$ java -jar -Dsun.java2d.win.uiScaleX=125% -Dsun.java2d.win.uiScaleY=125% zettelkasten.jar
$ java -jar -Dsun.java2d.win.uiScaleX=120dpi -Dsun.java2d.win.uiScaleY=120dpi zettelkasten.jar
$ java -jar -Dsun.java2d.uiScaleX=1.25 -Dsun.java2d.uiScaleY=1.25 zettelkasten.jar

Die GUI bleibt winzig. Mache ich etwas falsch?

EDIT: Ich hatte Udalrichs Beitrag noch nicht gesehen. Scheint wohl daran zu liegen, dass die Parameter nur unter Windows funktionieren. Die manuelle Setzung der Schriftgröße hat bei mir auch keinen Effekt. Ich schätze das liegt daran, dass zkn3 standardmäßig Nimbus (nicht Metal) nutzt?
Ich hatte in den zkn3-Einstellungen bereits mit der Schriftgröße und -art herumgespielt. Leider konnte ich keine befriedigende Konfiguration finden. Falls eine Skalierung möglich ist, würde ich diese Lösung auf jeden Fall vorziehen.

Udalrich

Anmeldungsdatum:
15. Mai 2019

Beiträge: 533

Punkt_Punkt_Punkt schrieb:

EDIT: Ich hatte Udalrichs Beitrag noch nicht gesehen. Scheint wohl daran zu liegen, dass die Parameter nur unter Windows funktionieren.

Ja, dies befürchtete der von Homer65 zitierte Autor auch.

Die manuelle Setzung der Schriftgröße hat bei mir auch keinen Effekt. Ich schätze das liegt daran, dass zkn3 standardmäßig Nimbus (nicht Metal) nutzt?

Ja, daran wird es liegen, und leider weiß ich nicht, ob man die Parameter für den standardmäßigen Metalstil abgeändert anwenden kann für Nimbus. Oft ist der Metalstil viel flexibler als die anderen Stile, aber vielleicht weiß eine kurze Suche im Netz mehr?

Andererseits betrifft das ja sowieso nur die Schriften, nicht die Symbole, Bilder, usw, daher:

Ich hatte in den zkn3-Einstellungen bereits mit der Schriftgröße und -art herumgespielt. Leider konnte ich keine befriedigende Konfiguration finden. Falls eine Skalierung möglich ist, würde ich diese Lösung auf jeden Fall vorziehen.

Verständlicherweise.

Schade, daß ich noch kein HiDPI habe, denn die Themen-Problematik hier werde ich auch erleben, da ich mehrere Java-GUI-Programme einsetze. Wie Netbeans, wo bereits an HiDPI gearbeitet wird.

mhe

Anmeldungsdatum:
29. Dezember 2007

Beiträge: 210

Ich kenne mich mit Java nicht aus .. hab es aber für den SQL-Developer wie hier beschrieben gelöst .. http://return42.github.io/handsOn/oracle/sqldeveloper.html#gui-setup

Punkt_Punkt_Punkt

(Themenstarter)

Anmeldungsdatum:
3. Januar 2020

Beiträge: 3

Danke für eure weiteren Antworten! Ich habe noch die JetBrains Runtime Environment (JBR) gefunden. JetBrains beansprucht für sich, Probleme weitaus schneller in Angriff zu nehmen als Oracle und vor allem, dass HiDPI unterstützt würde (hier und hier).
Kennt sich jemand mit JBR aus? Verhält es sich wie eine "normale" Java-Umgebung (so dass es nach der Installation durch "java -jar ..." meine Datei ausführen könnte)?

TobiasH

Anmeldungsdatum:
4. Oktober 2006

Beiträge: 72

Vielen Dank an den Nutzer Udalrich für den Hinweis zur Fontkonfiguration bei Java-Programmen. Ich habe mir ebenfalls den Zettelkasten 3 installiert unter Ubuntu 18.04 mit OpenJDK 11. Nur wenn ich "Metal" im Menüpunkt "Einstellungen" wähle, kann ich Größe und Art des Menü-Fonts mit Parametern wie "-Dswing.plaf.metal.controlFont="Roboto 16" (entsprechend für userFont und systemFont) beim Aufruf des Programms beeinflussen. Auf die Look-and-Feel-Optionen "Nimbus", "GTK+" und "CDE/Motif" haben die entsprechend angepassten Parameter bei mir leider keinen Einfluss. Immerhin ändert sich aber das Aussehen der Programmoberfläche, das ist bei JabRef z. B. nicht der Fall. Über das folgende Startskript gestartet kann ich mir Zettelkasten 3 mit "Metal"-Look-and-Feel auch längere Zeit anschauen:

1
2
3
4
#!/bin/bash
export JAVA_FONTS=/usr/share/fonts/truetype
export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=lcd -Dswing.aatext=true -Dswing.plaf.metal.controlFont="Roboto 16" -Dswing.plaf.metal.userFont="Roboto 16" -Dswing.plaf.metal.systemFont="Roboto 16"'
java -jar /home/user/.Java_Programme/Zettelkasten.jar

Antworten |