From Fedora Project Wiki

No custom Qt theming for Fedora Workstation

Summary

Fedora Workstation has been using QGnomePlatform and Adwaita-qt projects to apply GNOME-like configuration and styling to Qt applications to match the environment. These projects are now in a state where they are outdated and semi-occasionally broken for some applications and it would be better to default to what Qt upstream has to offer.

Owner

Current status

Detailed Description

QGnomePlatform project is a Qt Platform Theme plugin. It reads GNOME configuration, like fonts or icons and applies this configuration to Qt applications. It also provides implementation of Client-Side Window Decorations or native dialogs. This project partially overlaps with Qt's default GTK Platform Theme plugin, but there are some additions that are existing only in QGnomePlatform, like Client-Side Window Decorations.

Adwaita-qt project is a Qt Style plugin. It implements widget styling (e.g. buttons, checkboxes) to match GNOME's Adwaita style. There is no equivalent of such style in Qt, but given the complexity of Qt Style plugins, this project is now outdated and doesn't match the current Adwaita (GTK4) style. It is also responsible for the most of the issues users are facing while using our custom styling.

Some additional information about these projects and issues:

With this change we would like to stop shipping and using these projects by default on Fedora Workstation and default to Qt default theming and styling. Also, because the GTK Platform Theme in Qt doesn't support everything we have support for in QGnomePlatform, we would like to contribute it to Qt instead. With this work, there shouldn't be any drawbacks when using Qt's GTK Platform Theme and we believe we would even get broader usage and more contributors for things like Client-Side Window Decorations. For Adwaita-qt replacement, we would default to Fusion style or possibly to Breeze style for KDE apps. Both styles have benefit of active upstream and broader usage than our custom style that is only used by Fedora Workstation and not tested by developers.

Feedback

Benefit to Fedora

We will be using more reliable and tested Qt theming/styling instead of our custom solution, which is only used by Fedora Workstation. This brings us closer to upstream with benefit of upstream support for theming and styling issues. This will also eliminate all the issues our users have been experiencing in the past when using Qt applications with Adwaita-qt style on Fedora Workstation.

Scope

  • Proposal owners:
  1. Drop QGnomePlatform and Adwaita-qt from Fedora Workstation compose.
  2. Drop our custom patches making Qt to use QGnomePlatform by default.
  3. Upstream some of the QGnomePlatform features to Qt upstream and backport them to Fedora packages (until released upstream).
  • Other developers: [OPTIONAL] Packagers blacklisting either QGnomePlatform or Adwaita-qt in their packages can stop doing that.
  • Policies and guidelines: N/A (not needed for this Change)
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Community Initiatives:

Upgrade/compatibility impact

We will make QGnomePlatform to not be used by default even when installed. Users will still be able to use it by using a Qt env variable or passing an option specifying what platform theme should be used. For this reason there shouldn't be any extra work needed to be done by the users who upgraded to Fedora 39.

How To Test

Use Qt apps the normal way as before and check if everything works as expected and there are no issues running Qt apps on Fedora Workstation. Qt apps running on Fedora Workstation should:

  • Use native Client-Side Window Decorations
  • Use native dialogs (e.g. FileDialog)
  • Use icon theme, fonts etc. you have configured on your system.

User Experience

The user experience should remain the same or be actually better in case Qt apps they were using were not working properly with QGnomePlatform or Adwaita-qt.

Dependencies

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No


Documentation

N/A (not a System Wide Change)

Release Notes