Guide: Xfce global dark mode in Qubes 4.0 / 4.1

This summary is based on (and quotes) the Qubes Community guide, this and that — especially @Sven’s extensive work, see also this thread.

Dom0, Fedora & Debian


The following text and screenshots describe how to change the default light theme to a global dark theme. It’s just an example; feel free to adjust the appearance to your taste.

And here are the final results:

Dom0 Qube Manager, Dom0 Terminal, Fedora 35 VMs, Debian 11 VM; desktop background color #3B3941 (external full HD display)


Qubes Applications Menu is darkened as well


Note: Of course, several apps (e.g., Terminal and Gedit) can be styled in the app itself. Here, Dom0 Terminal’s background color is set to the desktop background color — because fusion. :wink:

Dom0


Change Appearance

  • Open the Appearance window:

  • Qubes Applications Menu → System ToolsAppearance




  • Select StyleAdwaita-dark. It’s probably the most ›classic‹ and readable/contrasty of the dark styles here. But, of course, feel free …

  • Adjust Icons, Fonts and Settings to your taste. In all these examples here, icons are always set to Gnome and fonts to DejaVu Sans family.

Change Style in Window Manager

  • Open the Window Manager dialog:

    Qubes Applications Menu → System ToolsWindow ManagerStyle




  • Change Theme in Style tab to G2, Wallis, or Bluebird. These are probably the most ›classic‹ and readable/contrasty. Bluebird's borders appear more elegant, but it could be difficult to grab the window’s edges in order to resize. But feel free …

Note: Most of the Qubes OS UI in dom0 is now Qt5 based and doesn’t adhere to the selected theme by default. This can be remedied by:

sudo qubes-dom0-update qt5-qtstyleplugins

Then add QT_QPA_PLATFORMTHEME=gtk2 to /etc/environment. Reboot. Done.

Fedora 34 / 35


Install and use Gnome Tweaks

In templateVM:

sudo dnf install gnome-tweaks

Note: See How to update.

  • Shutdown templateVM and add Tweaks to App shortcuts of appVM in Qube Manager.

  • Start Tweaks in appVM.

  • Select AppearanceThemesApplicationsAdwaita-dark (adjust also all the other options to your taste):




Notes: You have to do this in the templateVM and all appVMs; changes you make in the home directory of a templateVM will not reflect in the template based VM by design. For dispVMs see this.

If you want to use gnome-settings-daemon and Gnome Tweaks, it’s probably best to delete settings.ini and .gtkrc-2.0 (see following Debian section).

To make sure QT apps look good, too: In templateVM install qt5-qtstyleplugins, gtk-murrine-engine and gnome-themes-standard. Add QT_QPA_PLATFORMTHEME=gtk2 to /etc/environment.

Debian 10 / 11


In Debian, things are getting a little bit trickier …

AppVMs seem to work best without gnome-settings-daemon (see end of Fedora section above). In that case set DPI in /etc/X11/Xresources/x11-common using Xft.dpi: (probably 96) in template VM.

Make sure your appVMs have both ~/.config/gtk-3.0/settings.ini and ~/.gtkrc-2.0:

settings.ini

[Settings]
gtk-application-prefer-dark-theme=1
gtk-font-name=DejaVu Sans Book 12 
gtk-theme-name=Adwaita-dark
gtk-icon-theme-name=gnome

gtk-application-prefer-dark-theme=1 is not necessary, it’s forces usage of dark variation of selected theme. Since we are choosing theme that is already Dark it can be omitted.

.gtkrc-2.0

include "/usr/share/themes/Adwaita-dark/gtk-2.0/gtkrc" 
style "user-font" 
{ 
		font_name="DejaVu Sans Book" 
}
widget_class "*" style "user-font"
gtk-font-name="DejaVu Sans Book 12" 
gtk-theme-name="Adwaita-dark"
gtk-icon-theme-name="gnome"

Note: The icon theme name is the name of its directory, not the name property in its index.theme .
According to: https://wiki.archlinux.org/title/GTK

Put these files to /etc/skel of the templateVM, so they get created automatically if you set up a new appVM based on that templateVM.

To make sure QT apps look good, too: In templateVM install qt5-style-plugins, gtk2-engines-murrine, and gnome-themes-standard. Then add these two lines to /etc/environment:

QT_QPA_PLATFORMTHEME=gtk2
QT_SCALE_FACTOR=1

This work for debian-11-minimal but for debian-11 You have to uninstall xsettingsd or edit ~/xsettingsd config file instead of using ~/.config/gtk-3.0/settings.ini and ~/.gtkrc-2.0.

Done!


To do? Darken Firefox websites and Thunderbird emails just with userChrome.css and userContent.css, not via extensions/add-ons.

Note: Some panel (applet) icons, e.g., NetworkManager — see ›global‹ screenshot at the beginning of this guide —, notification-daemon, Joplin and Keybase, remain with white instead of dark resp. transparent backgrounds. For NetworkManager icon, see Qubes issue #2846.

8 Likes

I tried enabling Dark Mode on Debian using this guide. First thing that for QT You probably don’t need gtk2-engines-murrine , and gnome-themes-standard. But also I want to ask If there is a possibility to change gnome them to other then Adwaita-dark? I tried to install Arc-Dark which I prefere and setting it instead of Adwaita but it looks like it is not applied for most of the programs. Also Gedit on that settings is not only ugly, but also illegible.

Szewcu wrote:

First thing that for QT You probably don’t need gtk2-engines-murrine , and gnome-themes-standard.

And that observation is based on what … the name?

If you intend to have your QT apps look like your Gnome/Gtk apps you need to set QT_QPA_PLATFORMTHEME=gtk2. This “gtk2” is a QT style installed through qt5-qtstyleplugins along with some other QT styles. This particular one however will attempt to apply whatever Gnome theme you have configured to your QT apps and it relies on resources in gtk2-engines-murrine and gnome-themes-standard to do so.

But also I want to ask If there is a possibility to change gnome them to other then Adwaita-dark?

Well yes. I used to use it with Ambiance and now with Yaru-dark. As I already documented in another thread some dark themes do not work well in XFCE:

These work (as far as dark themes are concerned):

  • Adwaita-dark
  • Arc-Dark
  • Arc-Dark-solid
  • Greybird-dark
  • Xfce-dusk

These don’t:

  • Arc-Darker
  • Arc-Darker-solid

I tried to install Arc-Dark which I prefere and setting it instead of Adwaita but it looks like it is not applied for most of the programs.

Which programs?

For Qt programs you need to follow the guide including the two packages mentioned above. For all other programs including the XFCE panel I have observed that it sometimes is necessary to set ~/.gtkrc-2.0 and ~/.config/gtk-3.0/settings.ini in addition and with the same settings as selected in the XFCE settings app. I don’t know why that is. It worked for a long time just by setting it in XFCE but recently it just stopped and I had to set the other to files too.

1 Like

Well, »ugliness« would rather be a philosophical discussion. :wink:

I can’t confirm Gedit being illegible, neither in Debian nor Fedora, when just following this guide/summary.

Besides, as mentioned in the guide, Gedit is also tweakable — hamburger button → PreferencesFonts & Colors — inside the app itself, so there shouldn’t remain any problem at all.

I assume this sinc in dom0 it is only needed to install qt5-style-plugins and set QT_QPA_PLATFORMTHEME=gtk2. I tried it and dark theme was applied for files. I don’t check if everything works so maybe I was wrong.

For the Gnome Theme I have impression that Arc-Dark not working. I will try to use also Xfce settings then

Yes, it of course is only ugly in my personal opinion. Problem was that chosen line was highlighted in white and the carriage was also white. I will try with Svens hint for theme, and then try to set Gedit Manually if Arc-Dark not set everything for me.

I can’t make it work. Those two files don’t want to apply Arc-Dark theme. Only thing that seems to work is gtk-application-prefer-dark-theme=1 that forcing some generic (Adwaita-dark?) dark theme. I also installed xfce4-settings package and whatever theme I chose there is not applied.

@Szewcu by default without you installing anything XFCE has settings and themes and you can choose the ones you like. The problem this guide aims to solve is that some Qubes OS specific apps and dialogs didn’t adhere to those themes.

There are two ways to solve this for you:

a) If you can, just reinstall Qubes OS and follow the above guide. Don’t do anything else to dom0.

b) If a) is not realistic or too much work, then please post a detailed list of all modifications you have applied to dom0. Especially any packets you have installed / removed.

The problem is in Debian 11 not in dom0 (for dom0 everything seems to work).
In dom0 I only installed sudo qubes-dom0-update qt5-qtstyleplugins and add QT_QPA_PLATFORMTHEME=gtk2 to /etc/environment. I chose Arc-Dark theme and then logout according to Your hint. I also chose window style Koynacity. That’s all I do in the topic of Qubes appearance in dom0.

In Debian 11 template (in which I installed some stuff but mostly some everyday apps like Libre office, Filezilla etc.) I tried to follow this guide. Only addition was installation of arc-themes since there was not installed by default.

As I wrote before for gnome tools like gedit, terminal etc but also for Firefox the colors looks lik Adwita-dark always when I add gtk-application-prefer-dark-theme=1 and If I don’t add this line most programs have light theme.

I will try it on some new Debian 11 template since I have the original template as reference, and using customized templates for AppVMs.

@Szewcu

  • did you at any time install gnome-settings-daemon?
  • what is the contents of your ~/.gtkrc-2.0 and ~/.config/gtk-3.0/settings.ini files?

It is a difficult question :stuck_out_tongue: . Since Yes I installed it but then I reinstall Qubes and try to restore all VMs from backups. But it faild to restore templates and many VMs. But I was able to restore personal qube that is the VM in which I now tried to enable dark mode so it might be some leftovers there. In template I’m not installing gnome-settings-daemon after reinstall.

The content of that file is same as in the guide. I only changed Adwaita-dark to Arc-Dark (and check if the path to theme is valid and it is)

I just tried it first on new VM based on same template, and then on some VM based on it’s own template in which I’m not installing gnome-settings-daemon. In both cases it’s the same: I’m adding ~/.gtkrc-2.0 and ~/.config/gtk-3.0/settings.ini with Arc-Dark chosen, and what is displayed it looks like Adwaita-dark.
settings.ini

[Settings]
gtk-application-prefer-dark-theme=1
gtk-font-name=DejaVu Sans Book 12 
gtk-theme-name=Arc-Dark
gtk-icon-theme-name=Gnome

.gtkrc-2.0

include "/usr/share/themes/Arc-Dark/gtk-2.0/gtkrc" 
style "user-font" 
{ 
		font_name="DejaVu Sans Book" 
}
widget_class "*" style "user-font"
gtk-font-name="DejaVu Sans Book 12" 
gtk-theme-name="Arc-Dark"
gtk-icon-theme-name="Gnome"

arc-theme is of course installed in the template, and the template is shutdown before starting AppVM for making that changes.

Also tried with Greybird and Graybird-dark, what I can get is only Adwaita/Adwaita-dark according to gtk-application-prefer-dark-theme

  1. Get rid of gtk-application-prefer-dark-theme … I haven’t played with it, don’t know what it does and it should not be needed.
  2. Is the Arc-Dark theme present in the /usr/share/themes directory of the qube?
  3. The icon theme should be gnome not Gnome – right?
  4. Finally make sure all the things you refer in your settings files are actually present and the spelling / capitalization is correct.

Hints:

  • you can install and use lxappearance to create your settings files (thus ensuring they are syntactically correct)
  • I found this Arch wiki page to be an excellent resource
  1. Done
  2. Yes
    3-4. Removed everything else then gtk-theme-name=Arc-Dark

Still theme is not applied

@Szewcu

Ok, I just did this:

  • clone debian-11-minimal template into deb-11-arc
  • in deb-11-arc I installed arc-theme, gnome-icon-theme, nautilus and gedit
  • then I created a new qube named temp based on that new template

Here are the settings I used:

user@temp:~$ cat .gtkrc-2.0 
include "/usr/share/themes/Arc-Dark/gtk-2.0/gtkrc"
style "user-font" 
{
        font_name="DejaVu Sans Book"
}
widget_class "*" style "user-font"
gtk-font-name="DejaVu Sans Book 12"
gtk-theme-name="Arc-Dark"
gtk-icon-theme-name="gnome"

user@temp:~$ cat .config/gtk-3.0/settings.ini 
[Settings]
gtk-font-name=DejaVu Sans Book 12
gtk-theme-name=Arc-Dark
gtk-icon-theme-name=gnome

Finally in gedit I chose the “Solarized Dark” theme in the settings. Here is the result:

In minimal everything works like for You. But when I do the same for standard Debian-11 template before it’s not working. So the problem must lay in some package installed in standard template by default…

sudo apt purge gnome-settings-daemon

:wink:

Even install it to be able to purge. Still not work.