swing-menus_featured

Korrekte Javas Swing Menüs im GTK LaF von Linux Mint

Seit Einführung von GTK 3 in den gängigen GNU/Linux Distributionen, zeigen Javas Swing Anwendungen, die im GTK Look and Feel (LaF) laufen, bei der Darstellung in den Menüs Fehler

Bei Linux Mint Cinnamon:

  • Keinen Rahmen um die Dropdown- und Kontextmenüs
  • Falsche Schriftfarbe bei aktiven Checkbox- und Radiobutton-Menüeinträgen (Schrift hat die Hintergrundfarbe und ist nicht sichtbar)
  • Keine Menü-Separatoren

Im Netz gibt es einigen Lösungsvorschläge für Ubuntu und Mint. Allerdings hat nur einer wirklich das Problem bei meinem Linux Mint gelöst (siehe „Interessante Links“ w.u.) .

Dieses How-to zeigt nicht nur, wie man die o.g. Fehler in Linux Mint 17.x Cinnamon beseitigt, sondern liefert auch ein Bash-Skript (swing-menu-corr.sh), das die Einstellungen automatisch vornimmt.

Für Ubuntu ist es ähnlich. Ein Hinweis ist w.u. zu finden.

Die unten dargestellte Screenshot-Animation zeigt das Problem an einem Beispielprogramm vor der Fehlerbeseitigung und die korrigierte Darstellung nach Anwendung des Skripts.

Menübug in Swings GTK LaF vor und nach der Fehlerbeseitigung
Menübug in Swings GTK LaF vor und nach der Fehlerbeseitigung

Das Problem sind Einstellungen in den „menus.rc“ Dateien der einzelnen Mint-Themes unter /usr/share/themes/[mint-theme]/gtk-2.0/style.

Unter Ubuntu sind es andere Konfigurationsdateien (gtkrc), z.B. /usr/share/themes/Adwaita/gtk-2.0/gtkrc. Die Einträge sind dort aber ähnlich. Suche nach dem Abschnitt styles „menu“ und dort nach den Einträgen xthickness und ythickness und setze sie auf „1„. Alternativ installiere die Globale Menü/HUD-Unterstützung für Java Swing Apps, wenn du Unity verwendest (siehe Natives Java GTK-Look-and-Feel in Ubuntu.

Manuelle Korrektur

Man öffnet sich im Pfad /usr/share/themes/[mint-theme]/gtk-2.0/style  den verwendeten Mint-Theme-Ordner (z.B. „Mint-X“) als root und editiert die Datei menus.rc.

Im Bereich style „menu“ ändert man:

xthickness = 0
ythickness = 0
text[ACTIVE] = @base_color

zu:

xthickness = 1
ythickness = 1
text[ACTIVE] = @fg_color

Im Bereich style „menu-item-separator“ muss der Eintrag:

ythickness = 0

nach:

ythickness = 1

geändert werden.

Damit hat man das Problem für ein Theme gelöst. Um alle Mint-Themes anzupassen empfehle ich das Skript „swing-menu-corr.sh“ (s.w.u).

Die Änderungen der Theme-Dateien hatten keine negativen Auswirkungen auf klassische GTK-Programme.

Automatische Korrektur

Das manuelle Anpassen aller menus.rc Dateien in allen Mint-Themes ist mühsam und zeitaufwendig.

Das Bash-Skript „swing-menu-corr.sh“ ändert die Einträge in Linux Mints Themes automatisch.

Swing-menu-corr.sh-Skript
Swing-menu-corr.sh-Skript

Es werden nur Änderungen in den in Version 17 mitgelieferten Mint-Themes vorgenommen! Das Skript funktioniert gut mit den Cinnamon und Xfce Versionen.

Das Skript legt Sicherheitskopien der Originaldateien an, die wiederum mit meinem Skript „swing-menu-undo.sh“ zurück gespielt werden können, um den Ausgangszustand wieder herzustellen.

Das Skript überprüft, ob es unter Linux Mint 17.x läuft und gibt ggf. eine Warnmeldung aus. Kaputtmachen kann das Skript nichts, da man zur Not den Originalzustand der Konfigurationsdateien mit dem „Undo“-Skript wieder herstellen kann.

Download

logo_mint „swing-menu-corr.sh“ auf GitHub
Logo Java Java-Testprogramm „Menutest.tar.gz

 

Ein Gedanke zu „Korrekte Javas Swing Menüs im GTK LaF von Linux Mint“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.