Qt-Anwendungen in GTK-Desktops integrieren

  Fabian Schaar   Lesezeit: 6 Minuten  🗪 4 Kommentare

Mit ein paar Tricks können Qt-Anwendungen besser in GTK-Desktops integriert werden.

qt-anwendungen in gtk-desktops integrieren

Anwendungen, die auf das Qt-Toolkit setzen, integrieren sich nicht immer angenehm in einen GTK-basierten Desktop. Wer Desktop-unabhängige Anwendungen wie SimpleScreenRecorder, Clementine, oder Focuswriter auf einem GTK-Desktop nutzen möchte, kann sich aber mit ein paar Tricks behelfen.

GNOME

GNOME verfügt über eine Kompatibilitätsschicht, die Qt-Anwendungen zumindest optisch an GTK-Programme angleichen soll: Adwaita-qt ist für die meisten Distributionen in den offiziellen Paketquellen verfügbar. Wer diese nutzen möchte sollte sich aber im klaren sein, dass nur mit dem Adwaita-Theme ein konsistenter Desktop erreicht wird:

Unter Debian-basierten Distributionen erfolgt die Installation über ein einfaches Kommando:

sudo apt install adwaita-qt

Sobald das Paket installiert wurde, kann der Adwaita-Stil auf Qt-Anwendungen angewandt werden. Für eine systemweite Integration muss dazu in die Datei /etc/environment eine Zeile hinzugefügt werden:

QT_STYLE_OVERRIDE=Adwaita

Anstelle von „Adwaita“ kann auch „Adwaita-Dark“ verwendet werden. Dann erscheinen die Qt-Anwendungen in dunklen Farbtönen. Das hier installierte Paket stellt dabei die nötigen Integrationen für Qt5-Anwendungen zur Verfügung. Mittlerweile existiert auch eine Portierung auf Qt6, wobei diese noch nicht in allen LTS-Distributionen verfügbar ist.

Quellen:
https://packages.debian.org/bullseye/adwaita-qt
https://packages.debian.org/bookworm/adwaita-qt6

Xfce und Mate (LTS-Distributionen)

Adwaita-qt bietet derzeit die wohl am besten integrierte Lösung für GNOME-Anwenderinnen. Nutzer anderer GTK-Oberflächen sollten stattdessen auf ein sogenanntes qt-platformtheme setzen. Qt5 kann so den GTK2-Stil des Systems zu imitieren. Unter Debian-basierten Systemen müssen dazu die folgenden Pakete installiert werden:

sudo apt install qt5-gtk-platformtheme qt5-gtk2-platformtheme qt5ct

Das Paket „qt5ct“ stellt ein einfaches Konfigurationswerkzeug für Qt5-Anwendungen zur Verfügung. Darüber lässt sich auch der Qt-Stil anpassen und auf GTK2 setzen. Um dies systemweit zu ermöglichen, trägt man in die Datei /etc/environment die folgende Zeile ein:

QT_QPA_PLATFORMTHEME=qt5ct

Auf diese Weise erklärt man Qt, dass es sich an das über qt5ct gesetzte Erscheinungsbild halten soll. Die Bedienung des Programms ist dabei selbsterklärend und in verschiedene Reiter gegliedert. Über das Programm können auch die Schriftarten, die Qt-Programme verwenden, konfiguriert werden.

Hierbei muss man beachten, dass Qt5 relativ schlecht mit dezimalen Schriftgrößen umgehen kann. Es empfiehlt sich also, ganzzahlige Schriftgrößen für GTK- und Qt-Programme zu setzen. Dann kann über die Erscheinungsbild-Optionen der jeweiligen Arbeitsumgebung eine grafische Skalierung auf eine bestimmte dpi-Zahl eingestellt werden.

Unter Xfce kann dafür das Einstellungsmodul „Erscheinungsbild“ verwendet werden. Der Mate-Desktop ermöglicht dies auch, dazu muss im Schriftarten-Menü des Einstellungsmoduls zum Erscheinungsbild die Option „Erweitert…“ gewählt und entsprechend angepasst werden.

Quellen:
https://packages.debian.org/bullseye/qt5-gtk2-platformtheme
https://packages.debian.org/bullseye/qt5-gtk-platformtheme
https://packages.debian.org/bullseye/qt5ct

Xfce und Mate (rollende Distributionen)

Die oben beschriebene Vorgehensweise kann nur auf Qt5-Programme angewandt werden. Für die meisten LTS-Distributionen ist das derzeit vollkommen ausreichend. In den Repositories von Debian 11, Ubuntu 20.04, Ubuntu 22.04 und Linux Mint 21 finden sich noch sehr wenige Qt6-Programme.

Anders sieht die Situation dagegen bei rollenden Distributionen aus. Da Anwender hier in der Regel sehr aktuelle Softwarestände offeriert bekommen, liefern Arch und Konsorten mittlerweile einige Qt6-basierte Anwendungen aus.

Im Moment ist mir kein Qt6-Plattformthema zur Imitation des GTK2-Stils bekannt. Alternativ kann die Theming-Engine „Kvantum“ verwendet werden. Ein Nachteil dieser Methode ist, dass Kvantum auf eine bestimmte Auswahl an Themen limitiert ist. Trotzdem können populäre Themen wie „Yaru“ oder „Arc“ problemlos für Qt5- und Qt6-Anwendungen benutzt werden.

Unter Arch Linux installiert man dazu folgende Pakete:

sudo pacman -S kvantum qt6-svg

Das Paket „qt6-svg“ ist eine optionale Abhängigkeit, die die Kompatibilität für Qt6-Anwendungen gewährleistet.

Sobald die Pakete installiert wurde, kann die Konfiguration angewandt werden. Dazu trägt man in die Datei /etc/environment die folgende Zeile ein:

QT_STYLE_OVERRIDE=kvantum

Einmal konfiguriert kann der Kvantum-Stil mit dem gleichnamigen grafischen Werkzeug angepasst werden. Dieses wird automatisch mit den oben aufgezählten Paketen installiert. Wie auch mit dem qt5-gtk2-platformtheme ist es über Kvantum nicht möglich, den Stil von Kirigami/KDE-Anwendungen anzupassen.

Eine ausführliche Erklärung zur Integration von GTK und Qt bietet auch das englischsprachige Arch-Wiki: https://wiki.archlinux.org/title/Uniform_look_for_Qt_and_GTK_applications

Kvantum-Paket:
https://archlinux.org/packages/community/x86_64/kvantum/

Bild: Qt Project, Public domain, via Wikimedia Commons

Tags

GTK, Qt, GNOME, Xfce, MATE

linmob
Geschrieben von linmob am 1. März 2023 um 07:25

Die Frage, die man sich hier stellen sollte, ist: Will man das? Meiner Erfahrung nach fehlen Adwaita so einige Icons, die Breeze mitbringt, was dann zu enttäuschenden Apps ohne erkennbare Schaltflächen führt, wie zB von Tobias Bernard kürzlich beschrieben: https://mastodon.social/@tbernard/109897404484985777

Mit Glück kann man mit der Maus noch irgendwelche Tooltips sehen, aber auf einem Touchscreen ist man an diesem Punkt schon total verloren. Ich empfehle daher, Breeze und Breeze Iconset für KDE Apps zu nutzen.

kamome
Geschrieben von kamome am 1. März 2023 um 08:35

Andersrum (genau genommen Gnome-Apps unter z. B. Plasma) ist eine angenehme Integration nicht möglich, oder? Man müsste ja die Gnome-Apps dazu bringen, ihre eignen Dekorationen nicht zu zeichnen und dann die vom System vorgegebenen zu akzeptieren und sich ein normales App-Menü verpassen zu lassen … Oder hatte da jemand Erfolg?

Fabian Schaar
Geschrieben von Fabian Schaar am 1. März 2023 um 16:05

Bei regulären GTK4-Anwendungen sollte das kein Problem sein, wenn du das Breeze-GTK-Thema benutzt. Schau dazu mal in die Plasma-Systemeinstellungen.

Schwierig wird es bei den Libadwaita-Programmen. Diese setzen auf ein integriertes Stylesheet, welches sich schlecht über Themes anpassen lässt. Vielleicht wird das ja in Plasma 6 eingebaut.

kamome
Geschrieben von kamome am 1. März 2023 um 22:57

Danke, aber das GTK-Theme (habe ich schon) reicht mir nicht (für eine gute Integration) – zumindest mit Gnome-3-Programmen (z. B. eog unter Debian 11) sieht es mir dennoch fremd aus: Zwar haben die Buttons ein ähnliches Design (mit Breeze) und ziehen teilweise auf die korrekte Seite mit um, aber sie sind kleiner … Das Auffälligste ist aber, dass es eben keine Trennung von Titelleiste und Werkzeugleiste gibt, das finde ich störend (obwohl ich sogar unter Plasma den Menü-Button in der Titelleiste verwende, aber die Werkzeutleiste mag ich separat).