Qubes OS XFCE4-panel customization

Hi.
This is a tutorial and the .css file of how I customized my XFCE4 panel so I can enjoy a more-beautiful-for-me desktop in Qubes OS.

I still have to upgrade some visuals but I think it’s a good starting point, and I think my research can be useful for others so they can customize their desktop.

And although this is more of a XFCE tutorial rather than a Qubes OS one, I’m bringing this here because it’s the only forum I use, and probably the only social network.

The final result is this:

First, open a Terminal in dom0. This tutorial is done exclusively here, and if you follow step by step you won’t break nothing because we are using native things.

Okay we are going to create a panel bar with gaps between the screen/windows and the panel itself.
This is not supported at all in xfce, but we can create a transparent panel and add some margins to the items inside, without them being transparent, so everything looks gapped like the cool hyprland setups out there in reddit.

Run the command xfce4-panel --preferences so you can edit the panel.
Now, increase the height of the panel. I used 44 pixels as you can see:

I also set the length at 99% so it creates gaps horizontally.

Now, I disable the shadows in the xfce4-panel. Run xfwm4-tweaks-settings and navigate to compositor. Disable the second shadow option “Mostrar sombra bajo ventanas empotrables” (sorry for the spanish):

You are almost done. Now, transform the workstation shifter from boxes showing the open windows to a grid of numbered buttons. To do so, right-click the workspace shifter and go to properties. A window like this should pop:

Under appareance, select “Buttons”, and get the switches just like me.
Then, go to “Configure workspaces” (the button in the middle at the bottom between the Help and Close buttons). Name the workspaces like me to have them numbered, and remember to leave a blank space before and after the number so it has some kind of a padding

Final step, create a file at ~/.config/gtk-3.0/gtk.css with this content:

/* *
 * Inspo:
 * https://github.com/raven2cz/dotfiles/blob/main/.config/gtk-3.0/gtk.css
 * https://github.com/diws1/xfce-rice/blob/main/.config/gtk-3.0/gtk.css
 * https://docs.xfce.org/xfce/xfce4-panel/theming
 * ChatGPT
 * */

/* *
 * HOW TO INSPECT CSS ELEMENTS IN THE XFCE4-PANEL
 * 1. Kill the panel with `xfce4-panel -q`
 * 2. Run it with DEBUG: `GTK_DEBUG=interactive xfce4-panel`
 * */


/* Transparent XFCE Panel */
.xfce4-panel {
	background-color: rgba(255, 255, 255, 0);
	border: 0px;
	font-family: "Consolas";
	font-size: 14px;
}

.xfce4-panel .tasklist {
	background-color: rgba(255, 0, 0, 1);
}

/* Round buttons inside panel */
.xfce4-panel button {
	background-color: rgba(0, 0, 20, 1);
	background-image: none;
	border: 0px;
	border-radius: 16px;
	//margin-left: 4px;
	//margin-right: 4px;
	margin: 8px 4px;
	padding: 4px; // Make some space for the image inside the button
}

button:checked {
	background-color: rgba(215, 215, 120, 1);
	color: black;
	text-shadow: none !important;
}

button:hover {
	background-color: rgba(210, 210, 210, 1);
	color: black;
	text-shadow: none !important;
}

/* Clock button rules override */
#clock-button {
	//background-color: rgba(255, 0, 0, 1);
}


/* Pulse audio button rules override */
#pulseaudio-button {
	//background-color: rgba(0, 255, 0, 1);
	padding: 0px;
}

#pulseaudio-button image {
	-gtk-icon-transform: scale(0.5);
}

/* Qubes menu button */
#launcher-arrow {
	padding: 0px;
}

#launcher-arrow image {
	-gtk-icon-transform: scale(0.5);
}

/* Pager a.k.a. workspace shifter */
wnck-pager {
	background-color: rgba(255, 255, 255, 1);
	margin: 4px;
	padding: 4px;
}

wnck-pager:hover {
	background-color: rgba(120, 120, 120, 1);
}

wnck-pager:selected {
	background-color: rgba(0, 0, 0, 1);
}

/* System tray */
#sn-button {
	background-color: rgba(255, 0, 0, 1);
}

Run xfce4-panel --restart and everything will apply.

To create the CSS I have looked upon the files of other XFCE users, checked out the documentation and asked ChatGPT.
You can find the references to other repos at the beginning of the CSS file.
If you are having issues finding a CSS item to modify it, run
xfce4-panel -q to kill the panel.
Now restart it with GTK_DEBUG=interactive xfce4-panel, so the GTK_DEBUG environment variable is set and a GTK Inspector opens up, helping you to select items and view their info like their CSS name, their values, etc…

I hoped you liked the tutorial.
I will be posting more ricing things once I get to know how to modify other things of the OS.

TNT

Edit:
In case you want the same item distribution in the xfce4-panel as me, this is what I’m doing

All separators are invisible, including the one of the “Windows buttons”, which you have to make it invisible by going to xfce4-panel --preferences > Elements > double left-click the “Windows buttons” or whatever is called, and then disable the “Mostrar los tiradores” switch (again, sorry for the spanish)

Also, for the clock, right click it, go to properties and use the same config as me:

Same as the workstation shifter, I use a blank space at the beginning of the date and at the end as a padding, so the clock looks nicer.

Finally, improve the visibility of the status tray icons (buttos for USB passthroughs, Internet connection, etc…) by right clicking between them (just don’t click over one of those), then hit properties and enable “Elementos cuadrados” (“squared elements”?)

This creates some space between them, so they are more easily spottable. You can also change the size of the icons in this menu.

TODO:
Find a way to improve the icons of the “Wi-Fi” and “Ethernet” status tray icons. They have a white background that I would like to remove, maybe I am able to do that…

EDIT 2:
I’m lazy and I’m not rewriting everything again…
I’ve done this little tweak and now everything looks even nicer

  1. Change the positions of clock and pulseaudio volume icon. Remember to keep the separators between them
  2. Set the CSS value of #pulseaudio-button and #launcher-arrow to this:
#<name> {
    background-color: rgba(0, 0, 0, 0);
    padding: 0px;
    margin-left: 0px;
}

This removes the background color and removes the paddings/margins, so everything looks nice and tidy.

End of transmission :astronaut: hahahah

9 Likes

That’s just a XFCE theme right? Nothing special about Qubes OS?

Is this working on Qubes 4.2.4?

Thank you for the guide! Many users were waiting for it because the XFCE panel (the system tray) in Qubes ruins the mood of any aesthete. Keep updating it, and maybe come up with a few themes for the panel. That’s awesome!

1 Like

I’m running 4.2.4 ;p

It’s a customized XFCE theme tutorial for Qubes OS, respecting native dom0 things to avoid installing new things in dom0.

How about sending the wallpaper

Oh yes, I totally forgot to give Kurzgesagt credits. Sorry.

Just look for his wallpapers, you will eventually find the same one I used or another one that suits you better. Here you can find some of them:
https://www.reddit.com/r/kurzgesagt/comments/15pvf7h/kurzgesagt_4k_wallpapers_3840x2160/
https://wallpaperaccess.com/kurzgesagt

Just play around with the colors of the buttons and fonts so you can adapt those wallpapers to the panel, you will find it easy after some minutes.

@tnt You will become a hero if you solve the white‑square issue in the system tray!
Thanks for your guide!

2

I was able to fix the white‑square issue for sys‑net (/usr/share/icons/hicolor/22x22/apps/) and sys‑whonix (/usr/share/sdwdate-gui/icons) by creating those icons with a dark background and setting the system‑tray icon size to 15 px
nm-signal-00
nm-signal-25
nm-signal-50
nm-signal-75
nm-signal-100
sdwdate-success

The panel height is 39 px, and the icon size is 19 px. Here’s my gtk.css:

/* Transparent XFCE Panel */
.xfce4-panel {
	background-color: rgba(255, 255, 255, 0);
	border: 0px;
	font-family: "Consolas";
	font-size: 14px;
}

.xfce4-panel .tasklist {
	background-color: rgba(255, 0, 0, 1);
}

/* Round buttons inside panel */
.xfce4-panel button {
	background-color: rgba(0, 0, 20, 1);
	background-image: none;
	border: 0px;
	border-radius: 16px;
	//margin-left: 4px;
	//margin-right: 4px;
	margin: 8px 4px;
	padding: 4px; // Make some space for the image inside the button
}

button:checked {
	background-color: rgba(50, 140, 50, 1);
	color: black;
	text-shadow: none !important;
}

button:hover {
	background-color: rgba(210, 210, 210, 1);
	color: black;
	text-shadow: none !important;
}

/* Clock button rules override */
#clock-button {
	//background-color: rgba(255, 0, 0, 1);
}

/* Qubes menu button */
#launcher-arrow {
	padding: 0px;
}

#launcher-arrow image {
    background-color: rgba(0, 0, 0, 0);
    padding: 0px;
    margin-left: 0px;
}

#pulseaudio-button image {
	-gtk-icon-transform: scale(0.8);
}

#xfce4-power-manager-plugin image {
	-gtk-icon-transform: scale(0.7);
}

/* Pager a.k.a. workspace shifter */
wnck-pager {
	background-color: rgba(255, 255, 255, 1);
	margin: 4px;
	padding: 4px;
}

wnck-pager:hover {
	background-color: rgba(120, 120, 120, 1);
}

wnck-pager:selected {
	background-color: rgba(0, 0, 0, 1);
}
5 Likes