xfce4

Recent Work Current Work Future Plans Patches Screenshots FAQ Misc. Links

Xfce is a lightweight desktop environment for X11-based systems, designed for fast execution and low memory footprint. The latest incarnation, version 4, is based on GTK+, version 2.

In February of 2004, I took over maintainership of Xfce’s xfdesktop module. Xfdesktop is responsible for drawing the desktop background, as well as displaying a right-click applications menu and a middle-click window menu. Since I became maintainer, I’ve made various improvements to the codebase. Over time I worked on the core libraries as well, and built a new configuration management system called Xfconf. In 2009 I stepped down to focus on a startup.

I intend this page to be an overview of the things I’m doing with regard to xfdesktop and Xfce. Planet Foo-Projects is a good place to look if you’re interested in things the other Xfce (and Lunar) developers are working on. Occasionally I write about Xfce in my weblog.

If you’re looking for the file listing that used to be here, it’s been moved to /projects/xfce4/files/. I’ve also created a GAR-based Xfce4 installer, called GarXfce4.

Recent work

This section tends to get rather out of date, so I’ve removed it for now.

Current work

New menu system: Jannis Pohlmann has written a faster, much more fd.o-compilant menu system called XfceMenu. Currently it’s integrated into xfdesktop trunk, but it could use some work.

Settings dialog rework: the old settings dialog is kinda ugly and not very well-organised. I’ll be completely redesigning the dialog, and hopefully adding a few new features in the process.

Otherwise, it’s just small improvements and bugfixes. To get an idea of the things people are asking for, see the feature request list.

Future plans

If you’d like, you can suggest a new feature for xfdesktop by filing an ‘enhancement’ request on Bugzilla.

Patches/Miscellaneous Files

Screenshots

These were over 3 years old! For more current screenshots, see the Xfce 4.4 Tour.

FAQ

  1. Does xfdesktop support launcher or file icons on the desktop? - Yes, 4.4.0 and above includes this feature. It requires dbus, dbus-glib, libexo, and thunar-vfs be installed before compiling xfdesktop.
  2. Does xfdesktop allow me to minimise applications to the desktop? - Xfce 4.4 has this feature as well, and has no extra dependencies.
  3. Can I use root-tail with xfdesktop? - Recent versions of root-tail accept a parameter (-id) so you can tell it the XID of the window to use as the root window. If I were to run root-tail, I might use this command line.
  4. Can I use xpenguins, xsnow, or xplanet with xfdesktop (basically, any app that draws on the root window)? - Probably not. All these apps draw directly to the root window, and xfdesktop creates a virtual fullscreen root window on top of the real root window, obscuring it. However, any application that can take as a parameter the ID of a root window to use can be made to work with xfdesktop. With the advent of the XComposite extension, apps that draw directly to the root window will be even more difficult to accomodate, so it would be nice if someone would create a standard for making this sort of thing possible.
  5. I’ve seen screenshots with this nifty autogenerated “system” menu in it, but I upgraded to Xfce 4.2/4.4 and I don’t have it. What’s up with that? - If you had edited your menu from 4.0.x, it’s using your old menu, which has been moved to ~/.config/xfce4/desktop/menu.xml. The new default menu, located at $sysconfdir/xdg/xfce4/desktop/menu.xml, has the appropriate directive to add the autogenerated menu. I suggest you use xfce4-menueditor (included with xfdesktop) to include the system menu in your current menu.
  6. How is the autogenerated menu created, anyway? - The menu is created somewhat according to the rules definied in the Freedesktop menu standard. The xfdesktop menu is not completely true to the spec, for a few reasons I won’t get into here. The menu is built from .desktop files that are found on your hard drive in some well-known locations. The .desktop files have category information in them, and the menu generator uses them to build the hierarchy. Applications are expected to install these .desktop files themselves.
  7. Ok, so where exactly does it look for .desktop files? - A few places. The standard specifies one unified directory, which is $datadir/applications/. For most apps, this works out to /usr/share/applications/. Now, GNOME and KDE each used to have old menu schemes, and the standard tries to make sure that older apps that follow these schemes will show up as well. The old GNOME location was to create a directory structure in /usr/share/apps/ that corresponds to the menu structure. So you might have a .desktop file for your web browser in /usr/share/apps/Internet/. KDE had a somewhat similar scheme, but used /usr/share/applnk/. There are a few other places that I don’t remember offhand and won’t get into. Now, there’s a configurable twist. A related Freedesktop standard defines a set of desktop base directories. The relevant one here is XDG_DATA_DIRS. If you set that environment variable to a colon-separated list of directories, xfdesktop will search each one of them, appending “/applications/” first. (It’ll do the same when looking in the GNOME/KDE legacy locations.) If XDG_DATA_DIRS isn’t set, it uses a predefined default. I don’t remember offhand, but it’s something like $HOME/.local/share:/usr/share:/usr/local/share. To make sure Xfce works properly, xfdesktop will always append Xfce’s $datadir to the list (unless it’s already in there). If you’re not confused yet, you’re doing much better than I am. To try to be a bit more concise, here’s a list of places to look if you’re trying to hunt down a pesky .desktop file:
    1. /usr/share/applications/
    2. $prefix/share/applications/ (where $prefix points to where the app in question is installed)
    3. /usr/share/gnome/apps/
    4. $prefix/share/gnome/apps/
    5. /usr/share/applnk/
    6. $KDEDIR/share/applications/
    7. $KDEDIR/share/applnk This is not necessarily an exhaustive list, and your system may not have all of these locations. If all else fails, try find(1) or locate(1).

    8. But wait… I have apps that don’t show up in the menu! Why not? - Well, that depends:
      1. The application doesn’t provide a .desktop file. You need to contact the app maintainer and complain.
      2. The application puts its .desktop file in a nonstandard place. You need to contact the app maintainer and complain.
      3. The application puts its .desktop file in a standard place, but the app itself is installed to a nonstandard prefix (such as /opt/foobar). In that case, you need to set the XDG_DATA_DIRS environment variable before you start Xfce.
  8. Ok, so that’s all well and good, but how do I edit or remove items from the autogenerated/system menu? - Unfortunately, that part isn’t very user-friendly. If you want to remove the entire thing, just remove the ‘system’ entry in the menu editor. If you want to edit or remove a single entry, you’re going to have to hunt down the .desktop file that creates the entry (see question #10 above) and manually edit the file with a text editor, or delete it. The Xfce menu does not support the portions of the Freedesktop menu spec dealing with menu editing, but only the portions dealing with categorising apps using .desktop file categories. This may improve in Xfce 4.4, but don’t hold your breath.
  9. Help! My Xfce desktop disappeared! It looks like GNOME! And the desktop menu is gone too! What do I do? - You ran nautilus, didn’t you? By default, Nautilus takes over the desktop when it runs. First you need to kill Nautilus, and then you should run xfdesktop to make sure Xfce’s desktop manager is running. In the future, when you run Nautilus, pass it the --no-desktop option to instruct it to avoid drawing the desktop. A more permanent solution is to set the gconf key /apps/nautilus/preferences/show_desktop to false (the --no-desktop will no longer be required). This can be done using the graphical gconf-editor, or the command-line gconftool utility.

These are mainly software-dev-related. Not completely stuff I agree with (for the opinion/analytical pieces), but at least viewpoints I consider interesting and worth thinking about.