From Fedora Project Wiki
(Created a new page)
 
m (Add trackers)
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
 
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
= Firefox Wayland By Default On Gnome <!-- The name of your change proposal --> =
+
= Qt Wayland By Default On Gnome <!-- The name of your change proposal --> =
  
 
== Summary ==
 
== Summary ==
 
<!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release.  
 
<!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release.  
 
Note that motivation for the change should be in the Motivation section below, and this part should answer the question "What?" rather than "Why?". -->
 
Note that motivation for the change should be in the Motivation section below, and this part should answer the question "What?" rather than "Why?". -->
Firefox is going to run natively on Gnome Wayland session and won't use XWayland/X11 Gtk+ backend by default. The XWayland/X11 Gtk+ backend can be still used via additional firefox-x11 package. This change affects Gnome only and won't be enabled for other Wayland compositors (KDE Plasma, Sway).
+
Make Qt applications to run natively on Gnome Wayland session, using the Qt Wayland platform plugin instead of the XCB plugin which is used for X11/XWayland. Other desktop environments already run natively on Wayland sessions, only Gnome is excluded by Qt.
  
 
== Owner ==
 
== Owner ==
Line 12: Line 12:
 
This should link to your home wiki page so we know who you are.  
 
This should link to your home wiki page so we know who you are.  
 
-->
 
-->
* Name: [[User:stransky| Martin Stransky]]
+
* Name: [[User:jgrulich| Jan Grulich]]
 
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
 
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
* Email: <stransky@redhat.com>
+
* Email: <jgrulich@redhat.com>
 
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
 
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
 
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
 
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
Line 34: Line 34:
 
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
 
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
 
-->
 
-->
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1678453 #1678453]
+
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1732129 #1732129]
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/301 #301]
+
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/367 #367]
  
 
== Detailed Description ==
 
== Detailed Description ==
 
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
 
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
  
Firefox with native Wayland backend has been available for last two Fedora releases as an optional package. It grown over the time and we can deploy it now as a default to bring all Wayland benefits to Fedora users.  
+
Qt Wayland plugin has been available for a long time, but it hasn't been in condition where it could be enabled by default. With Qt 5.12 the state of the Wayland plugin is much better and it's becoming more and more reliable. It now supports all the needed protocols and has been enabled by default for non-Gnome Wayland sessions.
 +
With Qt Wayland on Gnome Wayland session we need to support CSD, it's actually the only way how decorations are going to work in Qt apps right now. Qt Wayland implements basic decorations, which really doesn't match Gnome Adwaita theme, therefore there are new CSD being implemented as part of QGnomePlatform.
 +
 
 +
To make Qt applications run natively on Wayland we need to modify Qt 5, specifically '''qt5-qtbase''' module, where we allow the Wayland plugin to be used also for Gnome sessions.  The new decorations from QGnomePlatform will be used automatically once they are fully implemented and updated in Fedora.
  
 
== Benefit to Fedora ==
 
== Benefit to Fedora ==
Running Firefox natively on Wayland is generally faster and smoother on Wayland enabled sessions like Gnome Wayland and better supports HiDPI displays (respects desktop scale) .
+
Qt applications running with the Wayland plugin run generally faster and smoother on Wayland enabled sessions like Gnome Wayland and better support HiDPI displays (respects desktop scale) .
  
 
== Scope ==
 
== Scope ==
* Proposal owners: Firefox already uses Wayland as a default backend on Fedora 30 / Gnoma Wayland session.
+
* Proposal owners:
 +
# Update Qt 5
 +
## Use [https://jgrulich.fedorapeople.org/fedora-qt-wayland-default/qtbase-use-wayland-on-gnome.patch this patch for qtbase] to force using Wayland platform plugin when available on Gnome Wayland sessions. This can be manually invoked when using '''-platform wayland''' option to any Qt 5 based application
 +
## Use [https://jgrulich.fedorapeople.org/fedora-qt-wayland-default/qtwayland-use-gnome-platform-theme-on-gnome-based-desktops.patch this patch] for qtwayland to use Gnome platform theme for better integration with Gnome. This platform theme is automatically used when xcb plugin is loaded, but not used from some reason on Wayland. This can be manually invoked when using '''-platformtheme qgnomeplatform''' option to any Qt 5 based application
 +
# Update QGnomePlatform with upcoming upstream release including window decorations, which will be automatically used when QGnomePlatform theme is loaded
  
* Other developers: N/A (not a System Wide Change)
+
* Other developers:
 +
# Test and watch for regressions.
  
 
* Release engineering: [https://pagure.io/releng/issues #Releng issue number] (a check of an impact with Release Engineering is needed) <!-- REQUIRED FOR SYSTEM WIDE AS WELL AS FOR SELF CONTAINED CHANGES -->
 
* Release engineering: [https://pagure.io/releng/issues #Releng issue number] (a check of an impact with Release Engineering is needed) <!-- REQUIRED FOR SYSTEM WIDE AS WELL AS FOR SELF CONTAINED CHANGES -->
Line 86: Line 94:
 
N/A (not a System Wide Change)  
 
N/A (not a System Wide Change)  
  
Run Firefox on Gnome Wayland session and check any issues you may see.
+
Run any Qt application on Gnome Wayland session and check any issues you may see.
  
 
== User Experience ==
 
== User Experience ==
* Faster Firefox run on Gnome Wayland session
+
* Smoother font rendering compared to Qt applications using XCB plugin
* Smoother font rendering compared to non-Wayland Firefox version
 
 
* Honor display scale, better user experience on HiDPI and semi-HiDPI desktops.
 
* Honor display scale, better user experience on HiDPI and semi-HiDPI desktops.
  
Line 113: Line 120:
  
 
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
 
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism:  Switch back default X11 backend.
+
* Contingency mechanism:  Switch back default to XCB plugin.
 
* Contingency deadline: Beta Freeze
 
* Contingency deadline: Beta Freeze
 
* Blocks release? No
 
* Blocks release? No
Line 119: Line 126:
  
 
== Documentation ==
 
== Documentation ==
* Mozilla Firefox Wayland Bug tracker: https://bugzilla.mozilla.org/show_bug.cgi?id=635134
 
* Mozilla release calendar:  https://wiki.mozilla.org/RapidRelease/Calendar
 
  
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
 
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->

Latest revision as of 18:31, 22 July 2019

Qt Wayland By Default On Gnome

Summary

Make Qt applications to run natively on Gnome Wayland session, using the Qt Wayland platform plugin instead of the XCB plugin which is used for X11/XWayland. Other desktop environments already run natively on Wayland sessions, only Gnome is excluded by Qt.

Owner

  • Name: Jan Grulich
  • Email: <jgrulich@redhat.com>
  • Release notes owner:
  • Product: Spins / Workstation
  • Responsible WG: Desktop

Current status

Detailed Description

Qt Wayland plugin has been available for a long time, but it hasn't been in condition where it could be enabled by default. With Qt 5.12 the state of the Wayland plugin is much better and it's becoming more and more reliable. It now supports all the needed protocols and has been enabled by default for non-Gnome Wayland sessions. With Qt Wayland on Gnome Wayland session we need to support CSD, it's actually the only way how decorations are going to work in Qt apps right now. Qt Wayland implements basic decorations, which really doesn't match Gnome Adwaita theme, therefore there are new CSD being implemented as part of QGnomePlatform.

To make Qt applications run natively on Wayland we need to modify Qt 5, specifically qt5-qtbase module, where we allow the Wayland plugin to be used also for Gnome sessions. The new decorations from QGnomePlatform will be used automatically once they are fully implemented and updated in Fedora.

Benefit to Fedora

Qt applications running with the Wayland plugin run generally faster and smoother on Wayland enabled sessions like Gnome Wayland and better support HiDPI displays (respects desktop scale) .

Scope

  • Proposal owners:
  1. Update Qt 5
    1. Use this patch for qtbase to force using Wayland platform plugin when available on Gnome Wayland sessions. This can be manually invoked when using -platform wayland option to any Qt 5 based application
    2. Use this patch for qtwayland to use Gnome platform theme for better integration with Gnome. This platform theme is automatically used when xcb plugin is loaded, but not used from some reason on Wayland. This can be manually invoked when using -platformtheme qgnomeplatform option to any Qt 5 based application
  2. Update QGnomePlatform with upcoming upstream release including window decorations, which will be automatically used when QGnomePlatform theme is loaded
  • Other developers:
  1. Test and watch for regressions.
  • Policies and guidelines: N/A (not a System Wide Change)
  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

N/A (not a System Wide Change)

Run any Qt application on Gnome Wayland session and check any issues you may see.

User Experience

  • Smoother font rendering compared to Qt applications using XCB plugin
  • Honor display scale, better user experience on HiDPI and semi-HiDPI desktops.


Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: Switch back default to XCB plugin.
  • Contingency deadline: Beta Freeze
  • Blocks release? No
  • Blocks product? product No

Documentation

N/A (not a System Wide Change)

Release Notes