Let’s pretend the last several months haven’t happened, and I’ll pretend that more than three of you read this.
That said, it seems like the best thing to do is to lay out where we are going, where we are, and what’s happening to get us there. If you care what’s been going on in Xfce, but haven’t been following the various blogs and lists, this is your chance to get caught up.
The Road To Little Big Horn
Every major release of the 4.x series of Xfce has been pretty major. 4.0 was the result of over a years work, a major rewrite of the entire desktop. 4.2 saw the introduction of major features and enhancements that were incomplete for 4.0, and the addition of developers as Xfce4 gained popularity.
4.4 is going to be a major upgrade to Xfce, with new components, major upgrades to old ones, and more tools for third party developers. So, without further ado, let’s take a look at what’s coming.
Lots is going on in the world of Xfce file management. Xfce 4.4 features two file managers. The first is a major upgrade and improvement of the classic Xffm. The second is Thunar, the newly written from scratch file manager designed to take a different tack from Xffm.
Xffm (Xfce Fast File Manager) started like in Xfce 4.0 as the integration of several tools from the 3.x series. Several people (including the lead developer, Edscott) have pointed out that interface has been trying hard to accomodate everyone, and has suffered as a result.
Xffm 4.4 is a major reworking of the code to address some of these issues, as well as several common user requests. Xffm 4.4 will provide icons on the desktop (something that Xfce, which is a spiritual decendent of CDE, has traditionally not provided), a new, ultra slim and simple icon view interface, a plugin system, and the ability to write new interfaces overtop of Xffm’s core.
Where Xffm in the past has been relatively complex to use, Edscott has gone the other direction providing a very simplistic interface built over a core designed to support as many interfaces as the community needs. It is very possible that Xffm interfaces will become as common as panel plugins are now.
Thunar is the new kid on the block for file management, and has even generated some interest from the Gnome and Ubuntu crowd.
Thunar’s philosophy is to be simple and straightforward file management, built as much as possible on emerging desktop standards. Thunar is much like the rest of Xfce, in that it does very little revolutionary, but tries to be the best, well thought out implementation of well proven ideas out there.
Thunar’s interface was heavily prototyped early in development. In this it took an interesting road, by building semi-functional prototypes in Python, and doing open interface critiques on the mailing list.
Once the interface was settled, and a solid outline of the internals was written, the real work started, and Subversion has seen a lot of development work since. Current subversion can open files, execute applications, and perform basic file management tasks.
Once completed, Thunar should provide all those things you expect from a modern file manager, including desktop icons, and not being a web browser.
The Xfce “desktop” is provided by five applications. Xfwm4 is the Xfce window manager, Xfdesktop provides the menus created when clicking on the root window, and the Xfce panel provides the row of application launchers, menus, and other plugins available at the bottom of the screen. Additionally, Xftaskbar and the Iconbox provide the standard ways to switch between applications.
The Window Manager
The window manager in Xfce 4 is decended from the very light and simple Oroborus window manager, which, due to it’s small system resources and simple code base, has been the parent and grandparent of several window managers over the years.
4.4 continues the steady, even handed development that Xfwm has seen since the beginning. Most of the changes are in the background, but appreciated nonetheless. Since 4.4 development began we’ve seen some serious testing of various window placement algorithms, especially for very large and very small screens, sophistication of the various methods for preventing focus stealing, and some small usability improvements.
In addition, Xfwm has lost the ability to manage desktop wide shortcuts in order to move this feature to a more powerful and generalized shortcut tool. Rumor also has it that Olivier is working on a “power tweak”, a GUI that allows access to various properties of the window manager not normally accessible without config file editing.
Xfwm 4.4 should do what a window manager does best – getting out of the users way – while actually becoming more configurable for power users.
Xfdesktop mostly just sits there, waiting for you to need it, and when asked, generates nice pretty menus. It also provides your backdrop, so it doesn’t get bored.
Xfdesktop likely will keep being the small helper app on the surface that it is today. However, the core of Xfdesktop is getting some real attention, as code from xfdesktop-ng, the branch of xfdesktop shipped in Xfld is potentially integrated, providing better performance and more robust menu generation.
Xfdesktop is already pretty good at guessing when apps have become available, without the application having to do anything DE specific, just provide a standard .desktop file. We all look forward to the quick death of desktop specific menus.
The Panel – One Codebase To Rule Them All
When Xfce 4.0 came out, the panel immediately got the attention of independent developers. It was just so quick and simple to throw together a new panel applet that a Berlios project grew up to keep them organized.
Then people started to complain that they couldn’t add plugins to the taskbar, or run multiple instances of the panel, or put the iconbox in the panel, or . . .
And then people started to do blocking IO in plugins, and writing plugins that crashed the panel, and other bad things.
Lo, then came the experimental branch of the panel, and all these things are of the past.
This new branch provides the potential to run multiple instances of the panel, with different panels for each monitor, and puts most plugins out of process, so they no longer can hang or crash the panel. Panels can be placed freely anywhere on the screen, tethered to the screen edges, fill the screen width or height, or be constrained to fit the plugins it contains.
The iconbox and taskbar are currently being subsumed inside this new panel framework, and will become instances of the panel, increasing flexibility, and reducing the effort to maintain the bunch.
Xfce has provided a small platform to developers since the 4.x series began. These libraries provide various utility interfaces, such as functions for interating over window lists, session manager support, and the like. These libraries also provide backported Gtk+ functionality or wrappers around Gtk+ widgets, so that Xfce can build on older systems, while still providing the maximum available functionlity.
This is the kind of platform you’d expect a desktop environment to have: mostly small and with functionlity focused at building core desktop components. These libraries have attracted some outside interest, such as for people developing panel plugins and the Terminal and Xfmedia applications.
However, Xfce 4.4 is seeing a much bigger effort at providing tools for independent developers, without expanding the Xfce core.
Xfce Developer Tools
Xfce Developer Tools, or XDT, is a package designed to simplify the Xfce build. XDT provides a common library of M4 macros for autoconf, usable by all Xfce apps, and other third party applications, along with xdt-autogen, which can prep source trees for distribution, or clean them of autogenerated files.
The various M4 macros provide easy detection of pkgconfig based dependencies, adding debug support to an application, setting up i19n support, as well as Xfce specific macros for the panel and settings system. Developers would do well to take a look, and ease their autotools woes.
Coolest Name Ever – libexo
libexo was initially developed outside of Xfce for developers seeking to write Xfce apps, but needing somewhat higher level interfaces than the basic Xfce libraries, which are directly targeted at the developer of core desktop components.
libexo provides lots of neat features like Firefox style editable toolbars, lightweight session management client support, widgets for icon views and ellipsized text, and more.
Ol’ Standbys – MCS, Util, and GUI
MCS stands for Multi Channel Settings. MCS expands the Xsettings system (which was very young at the time of MCS’s development) to settings management for Xfce components. While MCS continues to see occasional bug fixes, it is not undergoing feature development at this time, in anticipation of a standard cross desktop setting system to replace it. libxfce4util, like the MCS system and it’s libraries, has seen almost no development since 4.2, other than minor bugfixes. They are simple, stable, and (until a standard emerges to replace MCS) complete.
libxfcegui4 is, as the name states, the GUI library for Xfce, and has mostly seen activity in deprecation of those widgets which are no longer needed, as our minimum Gtk required provides them. They should be deprecated for 4.4 and likely out by 4.6. However, libxfcegui4 has seen some expansions of the basic API, filling out some macros and methods for various widgets. This has been done to make it easier on various language bindings.
Wait a sec – bindings?
Xfce has always been a C (and a little shell) only place. However, that doesn’t mean we don’t want other languages to play along. Starting with the C++ binding, the Xfce Foundation Classes, Xfce has grown three language bindings.
Note that these bindings only exist for writers of software outside of the Xfce “core”. Most notably, no constantly running processes in the core Xfce desktop will depend on them, so the inclusion of the bindings has no impact on Xfce’s memory usage.
The Xfce Foundation Classes are the biggest of the three language bindings that are coming for Xfce. XFC has grown from being a C++ binding for Gtk, to binding the Xfce libraries, as well as a binding for libglade, allowing developers to rapidly build applications that integrate with Xfce in C++. XFC is also extremely well documented, and is already being used by various interested developers. Along with Thunar, XFC may be the most exciting aspect of the 4.4 release.
PyXfce is (you guessed it) a Python binding for the Xfce libraries. Unlike XFC, PyXfce doesn’t wrap the core Gtk functionality, depending on PyGtk for that job. Instead, PyXfce provides access to Xfce widgets and custom functionality from Python applications.
Another pretty obviously named binding, Xfce4-Perl works much like PyXfce, allowing Perl programs to use customer Xfce features, while letting Gtk-Perl do the grunt work of providing Gtk bindings.
…And All The Rest
And of course, just because these changes are taking place doesn’t mean the rest of the desktop is idle. Nosiree.
- Session Manager: Now supports the new startup items standard, along with providing a UI for editing what apps start when you log in
- Mailwatch: The old mailcheck plugin for the panel was simple. Too simple. The new mailwatch plugin does everything all you complainers wanted in the old mailcheck tool. See what you get for complaining?
- Appfinder: The new Appfinder is now a widget, allowing applications which need to locate apps based on certain criteria (like file managers) can do so.
- Orage: The new name for Xfcalendar, now has iCal support, and a much richer appointment interface and alerts system
- InstallIt: A new installit tool for management of third party Xfce plugins and apps will, once completed, provide a GUI for download and build of non core components, and then nicely add them to the list of installed components by your native package manager.