qt: add option platformTheme

This deprecates `useGtkTheme=true` with the intention of replacing it
with the `platformTheme` selection.
This commit is contained in:
Olli Helenius 2019-03-31 17:01:41 +03:00 committed by Robert Helgesson
parent 4323b35198
commit 995fa3af36
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89

View file

@ -12,27 +12,64 @@ in
{ {
meta.maintainers = [ maintainers.rycee ]; meta.maintainers = [ maintainers.rycee ];
imports = [
(mkChangedOptionModule
[ "qt" "useGtkTheme" ]
[ "qt" "platformTheme" ]
(config:
if getAttrFromPath [ "qt" "useGtkTheme" ] config
then "gtk"
else null))
];
options = { options = {
qt = { qt = {
enable = mkEnableOption "Qt 4 and 5 configuration"; enable = mkEnableOption "Qt 4 and 5 configuration";
useGtkTheme = mkOption { platformTheme = mkOption {
type = types.bool; type = types.nullOr (types.enum [ "gtk" "gnome" ]);
default = false; default = null;
example = "gnome";
relatedPackages = [
"qgnomeplatform"
["libsForQt5" "qtstyleplugins"]
];
description = '' description = ''
Whether Qt 4 and 5 should be set up to use the GTK theme Selects the platform theme to use for Qt applications.</para>
settings. <para>The options are
<variablelist>
<varlistentry>
<term><literal>gtk</literal></term>
<listitem><para>Use GTK theme with
<link xlink:href="https://github.com/qt/qtstyleplugins">qtstyleplugins</link>
</para></listitem>
</varlistentry>
<varlistentry>
<term><literal>gnome</literal></term>
<listitem><para>Use GNOME theme with
<link xlink:href="https://github.com/FedoraQt/QGnomePlatform">qgnomeplatform</link>
</para></listitem>
</varlistentry>
</variablelist>
''; '';
}; };
}; };
}; };
config = mkIf (cfg.enable && cfg.useGtkTheme) { config = mkIf (cfg.enable && cfg.platformTheme != null) {
home.sessionVariables.QT_QPA_PLATFORMTHEME = "gtk2"; home.sessionVariables.QT_QPA_PLATFORMTHEME =
home.packages = [ pkgs.libsForQt5.qtstyleplugins ]; if cfg.platformTheme == "gnome" then "gnome" else "gtk2";
home.packages =
if cfg.platformTheme == "gnome"
then [ pkgs.qgnomeplatform ]
else [ pkgs.libsForQt5.qtstyleplugins ];
xsession.profileExtra = xsession.profileExtra =
"systemctl --user import-environment QT_QPA_PLATFORMTHEME"; "systemctl --user import-environment QT_QPA_PLATFORMTHEME";
# Enable GTK+ style for Qt4 in either case.
# It doesnt support the platform theme packages.
home.activation.useGtkThemeInQt4 = dag.entryAfter ["writeBoundary"] '' home.activation.useGtkThemeInQt4 = dag.entryAfter ["writeBoundary"] ''
$DRY_RUN_CMD ${pkgs.crudini}/bin/crudini $VERBOSE_ARG \ $DRY_RUN_CMD ${pkgs.crudini}/bin/crudini $VERBOSE_ARG \
--set "${config.xdg.configHome}/Trolltech.conf" Qt style GTK+ --set "${config.xdg.configHome}/Trolltech.conf" Qt style GTK+