-
Notifications
You must be signed in to change notification settings - Fork 8
XFCE
XFCE is my favorite GUI for Unix. I use it where possible.
Homepage: https://docs.xfce.org/start
There is CLI tool xfconf-query
(see https://docs.xfce.org/xfce/xfconf/xfconf-query).
Listing examples are for customized XFCE on openSUSE LEAP 15.6
Top level world is made from channels
they can be listed with:
$ xfconf-query -l
Channels:
displays
keyboard-layout
keyboards
parole
ristretto
thunar
thunar-volman
xfce4-appfinder
xfce4-desktop
xfce4-keyboard-shortcuts
xfce4-mime-settings
xfce4-notifyd
xfce4-panel
xfce4-power-manager
xfce4-screensaver
xfce4-session
xfce4-settings-editor
xfce4-settings-manager
xfce4-terminal
xfwm4
xsettings
What we see is basically stored under ~/.config/xfce4/xfconf/xfce-perchannel-xml/
as CHANNEL.xml
.
We can specify channel with -c
and then list its properties with -l. Both taskbar
and Dash is called "xfce4-panel":
$ xfconf-query -c xfce4-panel -l
/configver
/panels
/panels/panel-1/length
/panels/panel-1/length-adjust
/panels/panel-1/plugin-ids
/panels/panel-1/position
/panels/panel-1/position-locked
/panels/panel-1/size
/plugins/plugin-1
/plugins/plugin-10
/plugins/plugin-10/digital-format
/plugins/plugin-10/digital-layout
/plugins/plugin-10/digital-time-format
/plugins/plugin-10/show-frame
/plugins/plugin-11
/plugins/plugin-11/style
/plugins/plugin-12
/plugins/plugin-12/items
/plugins/plugin-13
/plugins/plugin-13/items
/plugins/plugin-14
/plugins/plugin-15
/plugins/plugin-15/icon-size
/plugins/plugin-15/items
/plugins/plugin-15/menu-is-primary
/plugins/plugin-15/square-icons
/plugins/plugin-15/symbolic-icons
/plugins/plugin-16
/plugins/plugin-16/items
/plugins/plugin-17
/plugins/plugin-17/items
/plugins/plugin-18
/plugins/plugin-18/items
/plugins/plugin-19
/plugins/plugin-19/background
/plugins/plugin-19/bars
/plugins/plugin-19/border
/plugins/plugin-19/color-mode
/plugins/plugin-19/command
/plugins/plugin-19/foreground-1
/plugins/plugin-19/foreground-2
/plugins/plugin-19/foreground-3
/plugins/plugin-19/foreground-iowait
/plugins/plugin-19/foreground-nice
/plugins/plugin-19/foreground-system
/plugins/plugin-19/foreground-user
/plugins/plugin-19/frame
/plugins/plugin-19/in-terminal
/plugins/plugin-19/load-threshold
/plugins/plugin-19/mode
/plugins/plugin-19/per-core
/plugins/plugin-19/per-core-spacing
/plugins/plugin-19/size
/plugins/plugin-19/smt-issues
/plugins/plugin-19/smt-issues-color
/plugins/plugin-19/smt-stats
/plugins/plugin-19/startup-notification
/plugins/plugin-19/time-scale
/plugins/plugin-19/tracked-core
/plugins/plugin-19/update-interval
/plugins/plugin-1/command-switchuser
/plugins/plugin-1/favorites
/plugins/plugin-1/hover-switch-category
/plugins/plugin-1/launcher-show-description
/plugins/plugin-1/menu-height
/plugins/plugin-1/menu-width
/plugins/plugin-1/recent
/plugins/plugin-2
/plugins/plugin-20
/plugins/plugin-20/items
/plugins/plugin-21
/plugins/plugin-22
/plugins/plugin-22/items
/plugins/plugin-23
/plugins/plugin-23/items
/plugins/plugin-24
/plugins/plugin-24/items
/plugins/plugin-25
/plugins/plugin-25/items
/plugins/plugin-26
/plugins/plugin-27
/plugins/plugin-28
/plugins/plugin-28/items
/plugins/plugin-2/style
/plugins/plugin-3
/plugins/plugin-31
/plugins/plugin-31/items
/plugins/plugin-32
/plugins/plugin-32/items
/plugins/plugin-4
/plugins/plugin-4/flat-buttons
/plugins/plugin-4/grouping
/plugins/plugin-4/show-handle
/plugins/plugin-5
/plugins/plugin-5/expand
/plugins/plugin-5/style
/plugins/plugin-6
/plugins/plugin-6/enable-keyboard-shortcuts
/plugins/plugin-6/known-players
/plugins/plugin-6/mpris-players
/plugins/plugin-7
/plugins/plugin-7/icon-size
/plugins/plugin-7/known-items
/plugins/plugin-7/known-legacy-items
/plugins/plugin-7/names-ordered
/plugins/plugin-7/show-frame
/plugins/plugin-7/square-icons
/plugins/plugin-7/symbolic-icons
/plugins/plugin-8
/plugins/plugin-9
/plugins/plugin-9/style
In default setup there is:
-
panel-1
- Windows like taskbar (on many systems at the top of screen) -
panel-2
- Dash (or Dock) with big icons - often on bottom of screen (on FreeBSD and Linux distributions other than SUSE)
To see position of taskbar we can try:
$ xfconf-query -c xfce4-panel -p /panels/panel-1/position
p=10;x=0;y=0
If p=6
taskbar is on top. If p=10
, then taskbar is on bottom.
Example how to set taskbar position to bottom:
$ xfconf-query -c xfce4-panel -p /panels/panel-1/position -s 'p=10;x=0;y=0'
It will have immediate effect - taskbar will jump to bottom.
I wrote this clumsy script called list_panel_plugins.sh
:
#!/bin/bash
set -euo pipefail
panel=panel-1
n=1
for id in `xfconf-query -c xfce4-panel -p /panels/$panel/plugin-ids | sed -n '2,$p'`
do
[[ $id =~ ^[0-9]+$ ]] || continue
printf "#%2d: %2d: " $n $id
xfconf-query -c xfce4-panel -p /plugins/plugin-$id
(( n = n + 1 ))
done
exit 0
Example output (1st number is just sequence, 2nd number is plugin-ID
):
$ ./list_panel_plugins.sh
# 1: 1: whiskermenu
# 2: 2: separator
# 3: 3: showdesktop
# 4: 32: launcher
# 5: 12: launcher
# 6: 17: launcher
# 7: 25: launcher
# 8: 16: launcher
# 9: 31: launcher
#10: 18: launcher
#11: 20: launcher
#12: 22: launcher
#13: 23: launcher
#14: 24: launcher
#15: 15: launcher
#16: 28: launcher
#17: 13: launcher
#18: 4: tasklist
#19: 5: separator
#20: 8: pager
#21: 6: pulseaudio
#22: 19: cpugraph
#23: 21: netload
#24: 27: diskperf
#25: 7: systray
#26: 9: separator
#27: 14: notification-plugin
#28: 26: cpufreq
#29: 10: clock
#30: 11: separator
Found this Application (included with SUSE as package xfce4-panel-profiles
):
Should be able to Save or Load Layout.
However on fresh installation there is different mechanism:
// /usr/src/packages/BUILD/xfce4-panel-4.18.5/migrate/main.c
#define DEFAULT_CONFIG_FILENAME "xfce4" G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "default.xml"
#define DEFAULT_CONFIG_PATH XDGCONFIGDIR G_DIR_SEPARATOR_S DEFAULT_CONFIG_FILENAME
In Makefile.am
we can see:
AM_CPPFLAGS = \
-I$(top_srcdir) \
-DG_LOG_DOMAIN=\"xfce4-panel-migrate\" \
-DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
-DXDGCONFIGDIR=\"$(sysconfdir)/xdg\" \
$(PLATFORM_CPPFLAGS)
confdir = $(sysconfdir)/xdg/xfce4/panel
conf_DATA = \
default.xml
Hmm, more and more confusing....
Installed this package:
doas pkg install xfce4-panel-profiles
But problem:
$ xfce4-panel-profiles --help
...
Traceback (most recent call last):
File "/usr/local/share/xfce4-panel-profiles/xfce4-panel-profiles/xfce4-panel-profiles.py", line 44, in <module>
from panelconfig import PanelConfig
File "/usr/local/share/xfce4-panel-profiles/xfce4-panel-profiles/panelconfig.py", line 19, in <module>
import psutil
ModuleNotFoundError: No module named 'psutil'
Resolved with:
doas pkg install py311-psutil
Official deps:
$ freebsd-version
14.1-RELEASE-p4
$ pkg info -E xfce4-panel-profiles
xfce4-panel-profiles-1.0.14_2
$ pkg info -d xfce4-panel-profiles
xfce4-panel-profiles-1.0.14_2:
libxfce4util-4.18.2
libxfce4menu-4.18.6
xfce4-panel-4.18.6
pango-1.52.2_1
gtk3-3.24.43
harfbuzz-9.0.0
python311-3.11.9
gdk-pixbuf2-2.42.10_3
cairo-1.17.4_2,3
glib-2.80.5,2
gettext-runtime-0.22.5
at-spi2-core-2.52.0
Reported here: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=281484
Copyright © Henryk Paluch. All rights reserved.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License