Resetting Xfce Panels to default settings?

Solution 1:

XFCE stores it's configuration for the running session in xfconfd. Feel free to back up the files you're going to delete first.

  1. Shut down the panel first, xfce4-panel --quit
  2. Kill the xfce4 configuration daemon, pkill xfconfd
  3. First delete settings for the panel, rm -rf ~/.config/xfce4/panel
  4. Clear out the settings for xfconfd, rm -rf ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml
  5. Restart the panel, run xfce4-panel. This will respawn xfconfd automatically. Note if you need or want to restart xfconfd manually know that on my installation it was in /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd which was outside of $PATH.

This clears it for the running session, regenerates the files, and sets up the default for future sessions.

Want it in one line?

xfce4-panel --quit ; pkill xfconfd ; rm -rf ~/.config/xfce4/panel ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml ; xfce4-panel;

Solution 2:

The only thing I can say that would make it easier to just run:

rm -r ~/.config/xfce4

Then simply log out and back in. This will just reset xfce4 back to default. I'd recommend avoiding the -f flag unless necessary especially if you are using the sudo command which is not an issue here but anyway. Using only the minimal force necessary is always a good idea.

This also limits the commands a user has to enter, you can also open up your file manager and select view hidden files and go into the .config folder and right click and delete the xfce4 folder and then log out and back in. No commands necessary.

Solution 3:

In my case I didn't want to switch the entire panel to the default, I just wanted to switch to the default layout because I recently upgraded from Xubuntu 16.04 to 18.04 and there were some changes to the panel plugins.

Here's what I did:

  1. Right-click anywhere on the panel (except for one of the open window buttons) > Panel > Panel Preferences
  2. Click Backup and restore
  3. (Optional) Click the Save Configuration button to save your current configuration
  4. In the list of configurations, select the one corresponding to your version of Xubuntu. For example, I'm using Xubuntu 18.04, so I selected Xubuntu Bionic.
  5. Click Apply Configuration

Solution 4:

xfce ships with xfconf-query - a powerful commandline utility for dealing with the xml config files inside of:

$HOME/.config/xfce4/xfconf/xfce-perchannel-xml/

.

There is no man page (on Fedora only?) but there is help available:

$ xfconf-query -h
Usage:
  xfconf-query [OPTION…] - Xfconf commandline utility

Help Options:
  -h, --help            Show help options

Application Options:
  -V, --version         Version information
  -c, --channel         The channel to query/modify
  -p, --property        The property to query/modify
  -s, --set             The new value to set for the property
  -l, --list            List properties (or channels if -c is not specified)
  -v, --verbose         Verbose output
  -n, --create          Create a new property if it does not already exist
  -t, --type            Specify the property value type
  -r, --reset           Reset property
  -R, --recursive       Recursive (use with -r)
  -a, --force-array     Force array even if only one element
  -T, --toggle          Invert an existing boolean property
  -m, --monitor         Monitor a channel for property changes

To list the available channels you can open xfce4-settings-editor which is the gui tool for working with xfconf. Or you can run xfconf-query -l.

We can use this knowledge to create a script to reset every existing xfconf property to its default via --reset or -r

#!/usr/bin/env bash
while read channel
do
    for property in $(xfconf-query -l -c $channel)
    do
        xfconf-query -c $channel -r -p $property
    done
done < channels.txt

...

$ cat channels.txt
displays
ristretto
thunar
xfce4-desktop
xfce4-keyboard-shortcuts
xfce4-notifyd
xfce4-panel
xfce4-power-manager
xfce4-session
xfce4-settings-editor
xfce4-settings-manager
xfwm4
xsettings

or slightly better (without the need for a static channel list):

#!/usr/bin/env bash
for channel in $(xfconf-query -l | grep -v ':' | tr -d "[:blank:]")
do
    for property in $(xfconf-query -l -c $channel)
    do
        xfconf-query -c $channel -r -p $property
    done
done