I just installed xfce4 v4.2.3.2 on my Arch Linux box. I can change the settings while logged in as root. But when I log into a non-root regular user account, nothing happens when I click on the Settings icon on the Panel. Also I see an error when I exit xfce4 -- Critical error cannot save settings. I tried to delete my .config file in my home folder but that made no difference. FYI - Pernissions looked good anyway... Directories were drwx and files rw for owner rob and group users. But when I log into rob, startxfce4 and try to change settings nothing happens. Next I uninstalled xfce4-goodies and xfce4. Then I manually deleted the .config and .cache directories in the home folders for root and my regular user account "rob". Then I installed xfce4 and xfce4-goodies. Same problem. Cannot save settings when using my non root account rob. I also see the following error messages -- (xftaskbar4: 3505): libxfcegui4-WARNING **: Disconnected from session manager (xfdesktop: 3505): libxfcegui4-WARNING **: ICE I/O Error (xfdesktop: 3587): libxfcegui4-WARNING**: Disconncted from session manager /opt/xfce4/etc/xdg/xfce4/xinitrc: line 73: 3574 Segmentation fault $xfcesm xscreensaver" 10:06:48: -1: unrecognized ClientMessage "_NET_WM_STATE" received xscreensaver" 10:06:48: -1: for window 0x80002d ((null)) / (null)) xscreensaver" 10:06:48: -1: SIGHUP received: restarting... xscreensaver" 10:06:48: -1: running as rob/users (1000/100) waiting for X server to shut down xfwm4: Fatal IO error 104 (connection reset by peer) on X server :0.0 ** (xfce4-panel:3582): CRITICAL **: Could not write config file ICE default IO error handler doing an exit (), pid = 3590, errno = 0 xfdesktop: Fatal IO error 104 (connection reset by peer) on X server :0.0 ** message: xfce4-panel: Exit XIO : fatal IO error 104 (connection reset by peer) on X server ":0.0" after 0 request (0 known processed) with 0 events remaining I believe all this trouble started after I installed xscreensaver. So I just uninstalled xscreensaver. No difference. I still have the same problem.. I am also seeing some other error messages: (xfce4-panel: 3807): Gdk-WARNING **: GdkWindow 0x8000b4 unexpectedly destroyed Rob Reproducible: Always Steps to Reproduce: 1. Install xfce and xfce-goodies 2. log into non-root regular user account 3. Click on settings icon on Panel. Actual Results: Nothing happens. You also see the following error messages when exiting xfce4: (xftaskbar4: 3505): libxfcegui4-WARNING **: Disconnected from session manager (xfdesktop: 3505): libxfcegui4-WARNING **: ICE I/O Error (xfdesktop: 3587): libxfcegui4-WARNING**: Disconncted from session manager /opt/xfce4/etc/xdg/xfce4/xinitrc: line 73: 3574 Segmentation fault $xfcesm xscreensaver" 10:06:48: -1: unrecognized ClientMessage "_NET_WM_STATE" received xscreensaver" 10:06:48: -1: for window 0x80002d ((null)) / (null)) xscreensaver" 10:06:48: -1: SIGHUP received: restarting... xscreensaver" 10:06:48: -1: running as rob/users (1000/100) waiting for X server to shut down xfwm4: Fatal IO error 104 (connection reset by peer) on X server :0.0 ** (xfce4-panel:3582): CRITICAL **: Could not write config file ICE default IO error handler doing an exit (), pid = 3590, errno = 0 xfdesktop: Fatal IO error 104 (connection reset by peer) on X server :0.0 ** message: xfce4-panel: Exit XIO : fatal IO error 104 (connection reset by peer) on X server ":0.0" after 0 request (0 known processed) with 0 events remaining Expected Results: Should be able to change settings!
I can run xfce-setting-show in xterm but nothing appears and I get the following errors: [rob@myarch bin]$ xfce-setting-show (xfce-mcs-manager:5793): libxfce4util-WARNING **: Invalid XDG_CACHE_HOME directory `/root/.cache', program may behave incorrectly. (xfce-mcs-manager:5793): libxfce4util-WARNING **: Invalid XDG_DATA_HOME directory `/root/.local/share', program may behave incorrectly. (xfce-mcs-manager:5793): libxfce4util-WARNING **: Invalid XDG_CONFIG_HOME directory `/root/.config', program may behave incorrectly. (xfce-mcs-manager:5793): libxfce4mcs-CRITICAL **: mcs_manager_add_channel_from_file: assertion `filename != NULL && strlen (filename) > 0' failed
Sorry, but that looks really like an issue with your installation. Doesn't sound like a bug in xfce.
*** Bug 1280 has been marked as a duplicate of this bug. ***
I think I tracked down the cause but I really don't have a good solution at this time. If I log into root and then do the following I will NOT be able to bring up the settings window: #su rob #startxfce4 Click on Settings Icon on Panel However, if I do the following, I do not have any problems with bringing up the settings screen: #su - rob #startxfce4 Click on Settings Icon on Panel In other words, switching to a login shell for my regular account rob solved the problem. This is a REAL mystery since the .bashrc and .bash_profile files are identical for the root account and my regular account rob. In my case, the only real difference between "su rob"and "su - rob" is the latter changes my working directory to the home directory for rob. I don't have problems with any other window manager like icewm etc when using su. But xfce4 seems to require a su - <name of account>. Perhaps there is a bug in startxfce4? Rob
No, there's no bug here. The script uses things like $HOME and $USER to determine the location of your home directory, and thus your configuration directory. If you don't do 'su -', these values are apparently being inherited from root's session, hence why it didn't work. I would think this shouldn't be the case, but this is a problem with your setup, not Xfce.
Thanks for your comments. But your comments does not adequately explain what is happening. When I log in as root and then just do a "su rob", $HOME and $USER are being updated. #su rob $echo $HOME /home/rob $echo $USER rob Something else is going on. I do not think this has anything to do with my setup. If you did this on any other distro, I expect you would get the same results. I suspect that there still is a bug here but there is a work around.. Just use su -. Rob
If Xfce is trying to access /root/.config it means there are still environment variables pointing to that. This is not a bug in Xfce, but an effect of using 'su' instead of 'su -'. You may want to check if XDG_CONFIG_DIRS or XDG_CONFIG_HOME is set.
Thanks for the post. I have checked the variables you suggested. #echo $XDG_CONFIG_DIRS /etc/xdg:/etc/xdg:/opt/xfce4/etc/xdg #echo $XDG_CONFIG_HOME /root/.config #su rob #echo $XDG_CONFIG_DIRS /etc/xdg:/etc/xdg:/opt/xfce4/etc/xdg #echo $XDG_CONFIG_HOME /home/rob/.config Hmm. It looks like these environment variables are being set somewhere in my login shell scripts. I found the following in file being sourced by my /etc/profile file: export XDG_CONFIG_HOME=$HOME/.config etc etc. I understand that it is pretty normal to set these environment variables in /etc/profile. Since it looks like the xfce startup scripts (such as startxfce4) are using these environment variables, very little can be done other than making sure one uses "su -" when switching users. If one uses "su -" then /etc/profile will be sourced again, resetting XDG_CONFIG_HOME to the right value. Rob
Right, as it should be. If you want variables to get reset at the appropriate shell invocation, you need to put them in the proper startup files. There is well-documented (though often confusing) behavior as to what files bash sources when started in different ways. On a side note, common practice dictates logging in as a regular user, and using 'su' or 'sudo' to gain root privileges only when absolutely necessary. I'll admit that your situation is annoying, but it's far from the common case, and there's no easy workaround from within Xfce. (On another side note, I long ago set a bash alias for 'su' as 'su -' so I wouldn't have to worry about env var resetting issues. I haven't yet encountered any problems with this approach.)