Skip to main content
Version: main

qt6

Generates a qt6ct custom colour scheme for Qt 6 applications on non-Plasma desktops. qt6ct is the Qt 6 successor to qt5ct — a QPlatformTheme plugin that injects a user-defined QPalette into every Qt 6 app at startup. The file written here is one of the colour schemes qt6ct can be pointed at; selecting it in qt6ct.conf (or via the qt6ct GUI) makes Qt 6 apps adopt tinct's palette.

For KDE Plasma users, prefer the kde-plasma plugin — Plasma's colour scheme system is richer and applies system-wide.

Installation

Built into tinct — nothing to install separately. tinct generate -o qt6 works out of the box.

You also need qt6ct installed and QT_QPA_PLATFORMTHEME=qt6ct set in your environment (typically in ~/.config/environment.d/*.conf or ~/.profile). The plugin's PreExecute aborts if ~/.config/qt6ct/ doesn't exist; create the directory and run qt6ct at least once to initialise.

# Arch / CachyOS
sudo pacman -S qt6ct

# Debian / Ubuntu
sudo apt install qt6ct

Quick start

tinct generate -i image -p ~/Pictures/wallpaper.jpg -o qt6

Generated files

FilePathRole
tinct.conf~/.config/qt6ct/colors/tinct.confCustom qt6ct colour scheme; 22-slot [ColorScheme] ini for active / inactive / disabled QPalette states

Integration

qt6ct discovers user colour schemes from ~/.config/qt6ct/colors/*.conf and lists them under qt6ct → Appearance → Color scheme → Custom. The plugin writes into that directory, so the scheme called "tinct" appears in the dropdown automatically.

To select it:

  1. Ensure QT_QPA_PLATFORMTHEME=qt6ct is exported (check with env | grep QT_QPA).
  2. Run qt6ct and pick Color scheme → Custom → tinct.

Or, edit ~/.config/qt6ct/qt6ct.conf directly:

[Appearance]
custom_palette=true
color_scheme_path=/home/<user>/.config/qt6ct/colors/tinct.conf

The plugin's PostExecute checks ~/.config/qt6ct/qt6ct.conf for a color_scheme_path= line containing tinct.conf; if absent, it prints an actionable banner.

Reload behaviour

Automatic

After writing the file, the plugin calls the shared KDE D-Bus theme-reload helper (kdedbus.ReloadTheme). On KDE Plasma this triggers a global Qt repalette; on non-KDE desktops the D-Bus call is a no-op (the relevant services don't exist) and the plugin logs a verbose-mode note.

qt6ct itself has no IPC reload. Once qt6ct.conf references the scheme, every newly-launched Qt 6 app picks it up — but already-running Qt 6 apps continue to use the palette they read at startup.

Manual fallback

Close and reopen the Qt 6 applications you want to retheme. There is no qt6ct-equivalent of dunstctl reload.

Uninstall / revert

  1. Stop pointing qt6ct at the tinct scheme — edit ~/.config/qt6ct/qt6ct.conf:

    [Appearance]
    custom_palette=false
    # color_scheme_path=... # comment out or delete

    Or in the qt6ct GUI: Appearance → Color scheme → <pick a built-in>.

  2. Delete the generated file:

    rm ~/.config/qt6ct/colors/tinct.conf
  3. Reload — close and reopen Qt 6 apps (or restart your session for the global change to take effect).

  4. External state: this plugin only writes to ~/.config/qt6ct/colors/. It does not modify qt6ct.conf itself — selecting the scheme there was your manual step in Integration and you have to undo it in step 1.

Flags

FlagDefaultDescription
--qt6.output-dir~/.config/qt6ct/colorsOverride the output directory

Colour role mapping

qt6ct stores each QPalette state (active / inactive / disabled) as a 22-comma-separated #AARRGGBB list. The slot order is fixed by Qt:

SlotQt roleTinct role (active)Tinct role (inactive / disabled)
0WindowTextforegroundforeground @ 70% / 50% alpha
1Buttonsurfacesurface
2LightsurfaceVariantsurfaceVariant
3Midlightborder (from outline/border/foregroundMuted)same
4Darkbackgroundbackground
5Midbackgroundbackground
6Textforegroundforeground @ 70% / 50% alpha
7BrightTextforegroundforeground
8ButtonTextforegroundforeground @ 70% / 50% alpha
9Basebackgroundbackground
10Windowsurfacesurface
11AlternateBaseborderborder
12ToolTipBaseaccent1accent1 (disabled = surface)
13ToolTipTextbackgroundforeground @ 70% / 50% alpha
14Text (re-use)accent1accent1 @ 70% / 50% alpha
15Highlight (interim)foregroundforeground @ 70%
16Button (re-use)surfacesurface
17BrightText (re-use)#ffffffff literal#ffffffff literal
18Link (interim)backgroundbackground
19LinkVisited (interim)foregroundforeground
20Highlight (translucent)accent1 @ 50% alphaaccent1 @ 70% / 30% alpha
21HighlightedTextaccent1accent1 (disabled = surface)

(Some Qt slot indices appear twice in qt6ct's 22-slot format; that's how qt6ct serialises the palette.)

Customising the template

tinct plugins templates dump -o qt6 -l ~/.config/tinct/templates/qt6

This creates ~/.config/tinct/templates/qt6/tinct.conf.tmpl. Tinct uses your version in preference to the embedded default.

See the templating reference for the available functions and palette accessors.

Troubleshooting

Plugin skipped: qt6ct config directory does not exist

PreExecute couldn't find ~/.config/qt6ct/. Install qt6ct and run it once (or mkdir -p ~/.config/qt6ct/colors) to create the config directory, then retry.

Plugin printed Qt6 Theme Configuration Required banner

PostExecute checked ~/.config/qt6ct/qt6ct.conf and didn't find a color_scheme_path= line referencing tinct.conf. Follow the steps in Integration: set QT_QPA_PLATFORMTHEME=qt6ct in your environment and select the tinct scheme in the qt6ct GUI (or set custom_palette=true and color_scheme_path=... in qt6ct.conf directly).

Qt 6 apps still look like Fusion / Breeze

Either QT_QPA_PLATFORMTHEME isn't set (qt6ct only kicks in when Qt is told to use it), or your Qt apps are running under Flatpak with their own bundled Qt stack. Check env QT_DEBUG_PLUGINS=1 <app> to see what platform-theme plugin Qt actually loaded.

Already-open apps didn't update

qt6ct reads the palette at app start. Close and reopen the apps; there is no Qt-side IPC to repalette running apps from a config file change (the D-Bus reload only works on KDE Plasma).

I'm on KDE Plasma — does this plugin do anything useful?

Probably not. Plasma supplies its own QPlatformTheme (plasma) that overrides QT_QPA_PLATFORMTHEME=qt6ct. Use the kde-plasma plugin instead, which writes a proper KDE colour scheme that applies to both Qt 5 and Qt 6 apps.

  • qt5 — sibling plugin for legacy Qt 5 apps (writes to ~/.config/qt5ct/colors/).
  • kde-plasma — preferred for KDE Plasma users; applies to both Qt 5 and Qt 6 apps system-wide.
  • gtk3, gtk4 — pair with these so Qt and GTK apps look consistent.