Skip navigation.
Home

Xfce integration

A while ago Thomas Leonard wrote about Ubuntu integration and asked the question "Can we get rid of ROX-Session?". This inspired me to attempt to replace it with the Xfce session manager and it turns out that it is both easy to do and works very well.

What you need

  • Xfce 4.4.x
  • Xfwm4
  • ROX-Filer 2.6.1 or later

You must use ROX-Filer 2.6.1 or later to get the session support working properly.

Preparations

If you don't have Xfce then install that first. On Ubuntu, do:

sudo apt-get install xfce4-session xfce4-utils xfce4-mcs-plugins

Log in to the default Xfce desktop.
Add the following to .xprofile (if using GDM) or .xsession (if using XDM):

export PATH="${HOME}/bin:$PATH"
eval `0launch http://rox.sourceforge.net/2005/interfaces/ROX-Defaults`
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
    ## if not found, launch a new one
    eval `dbus-launch --sh-syntax --exit-with-session`
    echo "D-Bus per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS"
fi

This will set the appropriate environment variables from ROX-Defaults to give you a sensible default configuration (e.g. so that zip files open in Archive, typing "rox" runs ROX-Filer, etc).

It also starts D-BUS, a communications system which makes many programs work better.

Test it by sourcing it like this (you may be prompted to confirm ROX-Defaults' GPG key if this is your first ROX application):

source ~/.xprofile

Creating the session

In order to create a session for ROX you will need to get prompted for a session on login. To do this launch the Xfce configuration program (xfce-settings-show), select "Sessions and Startup Settings" and check the "Display chooser on login" checkbox. "Prompt on logout" should also be checked.

Now log out and log in again. When you log in you will be presented with a dialog that lets you choose a session or create a new one. Create a new one and name it something appropriate like "ROX". After this you will get logged in to the default Xfce session with the xfce4-panel and such. Since we want to run ROX-Filer instead, kill some Xfce applications by opening a terminal and doing:

pkill Thunar
pkill xfce4-panel
pkill xfdesktop

Now close the terminal, press Alt-F2 and launch ROX-Filer in "session mode":

rox -S

Since you will want to be able to log out of your session you should create an AppDir wrapper for xfce4-session-logout or just get one I made: Logout.
All that is left now is to log out and remember to save the session. Next time you log in you will get to chose between an Xfce session ("Default") and the ROX session you just created.

You can (probably) find lots of applications in /usr/share/applications.

Issues

While this generally works really well there are some issues.

ROX-Filer does not get restarted if it crashes. I don't know if this is a problem with how ROX-Filer registers itself with the session or if it is something that xfce-session does not support.

Xfce uses it's own configuration applications that are mostly a superset of the available ROX configlets. The problem here is how to conveniently access both the ROX configlets needed (say Wallpaper) and the Xfce ones. Sure, you can use the Xfce configuration program (xfce-settings-show) but it does not list the ROX ones. Conversely there are no AppDirs for the Xfce ones. Perhaps some sort of "meta folder" for the Filer could solve this?
In the meantime, what I do is just copy the appropriate .desktop files to $HOME/Apps/Settings so that I can have easy access to both the Xfce and ROX configlets.

Xfce uses the Freedesktop autostart system which is different from the one ROX-Session uses. To solve this you can either use the autostart configuration application from Xfce (that doesn't handle AppDirs well) or a simple prototype I put together, unimaginatively named Autostart.

AutoStart manager

I've written a more polished AutoStart manager applet, although mine doesn't really handle ROX AppDirs properly either. See http://www.realh.ukfsn.org/rox.shtml#autostart

Syndicate content