Package Details: qt6ct-kde 0.11-8

Git Clone URL: https://aur.archlinux.org/qt6ct-kde.git (read-only, click to copy)
Package Base: qt6ct-kde
Description: Qt 6 Configuration Utility, patched to work correctly with KDE applications
Upstream URL: https://www.opencode.net/trialuser/qt6ct
Licenses: BSD
Conflicts: qt6ct
Provides: qt6ct
Submitter: ilya-fedin
Maintainer: ilya-fedin
Last Packager: ilya-fedin
Votes: 60
Popularity: 6.61
First Submitted: 2023-11-08 18:16 (UTC)
Last Updated: 2026-08-13 20:29 (UTC)

Dependencies (4)

Required by (21)

Sources (2)

Pinned Comments

ilya-fedin commented on 2023-11-08 18:17 (UTC) (edited on 2025-03-04 14:40 (UTC) by ilya-fedin)

Some user guide:

My patchset contains multiple fixes/features in comparison to vanilla qt6ct:

  1. KDE color schemes support
  2. KDE QML applications theming support
  3. KDE's icon engine is used, fixing monochrome icons colors (I saw problems with e.g. Adapta Kvantum theme on KDE applications toolbars, like dolphin, they're grey when should be white)

It's important to set a KDE color scheme (marked as (KColorScheme) in the list) for proper theming of KDE apps.

Additionally, if one wants KDE dialogs, this could be reached either with plasma-integration or xdg-desktop-portal (both work with vanilla qt6ct, too).

To get them with plasma-integration:

  1. Install plasma-integration
  2. Choose KDE as standard dialogs in qt6ct configurator

To get them with xdg-desktop-portal-kde:

  1. Install xdg-desktop-portal + xdg-desktop-portal-kde
  2. Configure xdg-desktop-portal's FileChooser to kde, see https://wiki.archlinux.org/title/XDG_Desktop_Portal#Configuration
  3. Ensure that session dbus instance is running correctly
  4. Choose XDG Desktop Portal as standard dialogs in qt6ct configurator

How to ensure that session dbus instance is running correctly when using xinit (DMs should already do the right thing for you):

  1. Ensure you don't have dbus-launch nor dbus-session-run in .xinitrc
  2. Ensure you copied the for f in /etc/X11/xinit/xinitrc.d/?*.sh loop from /etc/X11/xinit/xinitrc to your .xinitrc
  3. Ensure you have no errors in systemctl --user status dbus and the service is running. You shouldn't enable the service, it should be activated by dbus.socket.

In case of Wayland, you may need to integrate your WM with systemd (that's what one of the scripts in /etc/X11/xinit/xinitrc.d does for X11): https://github.com/swaywm/sway/wiki#gtk-applications-take-20-seconds-to-start

Latest Comments

1 2 3 4 5 6 7 Next › Last »

ilya-fedin commented on 2026-08-25 00:06 (UTC)

@Akira-Amatsume do you set the parameters via the GUI app? It also sets widget style and icon theme in kdeglobals, it shouldn't be an issue with that. Moreover, without that, some apps like Dolphin won't inherit your widget style/icon theme even if you don't choose KDE as standard dialogs.

Akira-Amatsume commented on 2026-08-24 10:43 (UTC)

I'm using this package on KDE with Qt 6.11.2, KF6 6.29.0 and QT_QPA_PLATFORMTHEME=qt6ct, I've found that Spectacle loads Breeze icons when qt6ct specifies Papirus-Light and standard_dialogs=kde.

The cause is an initialization-order issue: Spectacle sets Breeze as its fallback before creating QApplication, while qt6ct creates the nested KDE platform theme for native dialogs before qt6ct becomes active. This initializes KIconLoader, and KIconTheme::current() sees and caches the Breeze fallback instead of qt6ct's icon theme.

A possible fix would be to add a follow-up patch that temporarily calls QIcon::setThemeName(m_iconTheme) while constructing the nested platform theme, provided that the application has not explicitly selected an icon theme, and then restores the previous state afterward.

I used LLM to help implement the following patch as a workaround, which may require further review:

diff --git a/src/qt6ct-qtplugin/qt6ctplatformtheme.cpp b/src/qt6ct-qtplugin/qt6ctplatformtheme.cpp
index 78c2eae..ca2a0c6 100644
--- a/src/qt6ct-qtplugin/qt6ctplatformtheme.cpp
+++ b/src/qt6ct-qtplugin/qt6ctplatformtheme.cpp
@@ -48,6 +48,7 @@
 #endif
 #include <QFile>
 #include <QFileSystemWatcher>
+#include <private/qiconloader_p.h>
 #ifdef QT_QUICKCONTROLS2_LIB
 #include <QQuickStyle>
 #endif
@@ -62,6 +63,7 @@
 #ifdef KF_ICONTHEMES_LIB
 #include <KIconEngine>
 #include <KIconLoader>
+#include <KIconTheme>
 #endif

 Q_LOGGING_CATEGORY(lqt6ct, "qt6ct", QtWarningMsg)
@@ -261,6 +263,14 @@ void Qt6CTPlatformTheme::applySettings()

     if(m_update)
     {
+        QIconLoader::instance()->updateSystemTheme();
+#ifdef KF_ICONTHEMES_LIB
+        // KIconLoader keeps a separate theme tree, so refresh it after Qt's
+        // platform theme has picked up the new qt6ct icon theme.
+        KIconTheme::reconfigure();
+        KIconLoader *iconLoader = KIconLoader::global();
+        iconLoader->reconfigure(iconLoader->objectName());
+#endif
         QWindowSystemInterface::handleThemeChange();
         QCoreApplication::postEvent(qGuiApp, new QEvent(QEvent::ApplicationFontChange));
     }
@@ -321,7 +331,22 @@ void Qt6CTPlatformTheme::readSettings()
         if(style.endsWith(u"gtk2"_s) && dialogs == QLatin1String("gtk3"))
             dialogs = u"gtk2"_s;
         if(keys.contains(dialogs))
+        {
+#ifdef KF_ICONTHEMES_LIB
+            // A nested KDE platform theme can initialize KIconLoader before
+            // qt6ct becomes active. Temporarily expose qt6ct's theme so an
+            // application fallback such as Breeze is not cached as current.
+            const bool setTemporaryIconTheme = !m_iconTheme.isEmpty()
+                                                && !QIconLoader::instance()->hasUserTheme();
+            if(setTemporaryIconTheme)
+                QIcon::setThemeName(m_iconTheme);
+#endif
             m_theme.reset(QPlatformThemeFactory::create(dialogs));
+#ifdef KF_ICONTHEMES_LIB
+            if(setTemporaryIconTheme)
+                QIcon::setThemeName({});
+#endif
+        }
     }

     settings.endGroup();

ilya-fedin commented on 2026-08-19 09:17 (UTC)

It's pretty much the same as was on GitHub: PRs are using individual branches while the patch is made with a composed branch called shenanigans like git diff 0.11..shenanigans > qt6ct-shenanigans.patch, hence the name of the patch (it's not just the KDE feature actually but also other fixes that make it work more correct with both Qt and KDE apps)

ReStranger commented on 2026-08-19 06:13 (UTC)

Please tell me where is your upstream patches? On your gitlab As far as I understand, the outdated patch (in comparison with this one)

ilya-fedin commented on 2026-07-05 14:00 (UTC)

@youlanjie thanks for trace, should be fixed now

youlanjie commented on 2026-07-05 02:48 (UTC)

I got segmentation fault on qt6 apps in wayland environment after installing this package (version: 0.11-6). For detail: [[https://bbs.archlinux.org/viewtopic.php?pid=2303691]] .

ilya-fedin commented on 2026-05-11 00:33 (UTC)

@seyfu-t thanks

seyfu-t commented on 2026-05-10 22:43 (UTC)

I kept getting this error whenever something would use qt6: QFont::fromString: Invalid description '(empty)'

The patch file contains a typo in line 445

+    m_fixedFont.fromString(settings.value("fixed_L1").toString());

the "fixed_L1" should be "fixed"_L1, and changing this actually removed the warning

Ari43 commented on 2026-03-29 11:44 (UTC)

I encountered this error and application theming ceased to work.

The libqt6ct.so plugin is compiled against incompatible Qt version (6.10.1).

If you encounter this, cleanbuild the package (makepkg -Cfi). qt6-base may have updated.

markg85 commented on 2026-02-25 17:51 (UTC)

It took me way to long to discover this package and to find out that with this KDE apps are behaving correctly (aka, dark theme) when instructed too. I was previously using vanilla qt6ct (on hyprland) where it looked fine (dark) but opening Dolphin would still pick light. I actually couldn't quite figure out why it behaved the way it did. Till an AI (google ai search out of all places) hinted me to qt6ct-kde to fix the very issue i was facing. And be darned, it actually works! It's annoying that KDE apps take a different route then vanilla Qt apps. I refuse to use portals, i blacklisted them as it always breaks things for me (but i tried, and it wasn't working at all with portals either). I would assume that running KDE apps in a non KDE environment would do a best effort way to work as proper as possible. Oh well this works, thank you so much for this package!