foXdesktop - a new eXperience


foXdesktop is an attempt to create a new UNIX-based desktop environment using FOX, a multi-platform widget set written in C++.
The main design goals are:

As a result every foXdesktop application is supposed to both integrate seamlessly into an existing foXdesktop environment and still be useful standing alone and/or within another environment (GNOME, KDE, Enlightenment...).
Although FOX is a multi-platform library, foXdesktop is probably UNIX-specific. But, it is possible to not use the Windows Explorer interface on win32 platforms, thus it may be possible to create a new win32 desktop...

This project was origonally started by Josua Groeger, but he has lost interest in maintining it - as such I am the new maintainer (Mathew Robertson).

Why another desktop environment?

Josua: The reason for foXdesktop is I am not happy with the existing desktops on UNIX.

Mathew: Same.

Jochen: Using a system often means to compromise, but the exsiting desktops mean to compromise in a way I can't live with it.

KDE sucks

Josua: I first used KDE but felt more and more uncomfortable with it as it became heavier and slower with every release. KDE is big, no, huge in memory and disk space. It is not very modular: The file manager is a browser too and even more. This may not be bad but if you are going to use it as a file manager only you are forced to have its browsing capabilities installed too. Much worse is the KDE distribution. In the kdebase tarball there are the "base" applications. But what if you do not want them all? Okay, as an advanced user you have the possibility to install kdebase only partly but nobody actually does this. The KDE desktop all together provides a consistant look and feel, but if you are going to use something "non-KDE-aware" you soon run into trouble. With e.g. the wrong window manager the KDE control centre is no longer able to embed its components. Certain standards are not met: Everyone else uses xscreensaver but KDE has its own implementation. Don't get me wrong, I don't condemn this, but how do you manage to use xscreensaver in KDE if you want? The same with esd (the enlightened sound daemon) and KDE's Arts. KDE does not use the UNIX environment variable LANG but has its own configuration. Hmm, just ugly! Even the cut 'n' paste implementation is slightly different from anything else.

Mathew: I generally agree, though I must say that KDE is coming along quite nicely, but it tends to be quite CPU hungry, especially on startup of just about any aspect...

Jochen: I agree with Mathew for the point, that KDE generally is a nice attempt for a desktop. It is nice and the look is highly configureable, but unfortunatly not the feel. At least not in a way I like to use it. The integration of the system also has some comfortable aspects. But the highly integration, as we see it now, means that the system crashes quite often, although if you use the so called stable release. I _only_ have 1 gigabyte of RAM and just starting KDE and opening one or two applications and the one or other tool, there are only 100MB of free memory left. What if you like to do some scientific calculations? Not only that the system has to swap and is extremely slow, you also have to fear crashes. This remindes me of a time, when I hadn't used Linux, but this virus from Redmond.
But I don't only want to describe the negative aspects, that's not my sort of coming along. KDE has shown us how a highly integrated desktop may look like and they are technological outriders on UNIX desktops.

GNOME sucks too

Josua: I had enough so I switched to GNOME.
At the first glance GNOME was the desktop of choice: Common standards were met (of course since GNOME is a GNU project ;-) ), the file manager was just a file manager and it was much easier to replace the window manager by another one. GNOME had this "kdebase" problem too but not as much as KDE. But GNOME does not need KDE's disadvantages at all since it brings its own:
First of all the underlaying widget set GTK is just slow even if you don't use those CPU consuming GTk themes. And GNOME is even slower. Much worse, GTK and GNOME are written in C instead of C++. Again, don't get me wrong. C may be the best language for certain tasks, but the object-oriented paradigma is the way of choice for desktop programming. GTK's programmers must have understood this as they invented a complex system of structs and macros to make C some kind of object-oriented. In fact they managed to poorly emulate C++ in C. Okay, there are C++ bindings called GTK-- and GNOME-- with even a nice API.
The problem is you unnecessarily need an additional wrapper that only makes your applications slower. For that reason alone I left GNOME behind but things are going worse:
GNOME 1.4 will replace its old and slow file manager GMC with Nautilus, a new all-in-one "desktop shell" and eventually introduce Evolution, the new GNOME Outlook.
As a result I cannot recommend GNOME for advanced users and programmers either.

Mathew: I am yet to be convinced that CORBA is a good way of marshalling info around a desktop. I specifically am not impressed with the need to create CORBA stubs -- I'm a pretty big fan of function overloading...

Jochen: As Josua mentioned, the GNOME people try to program object-oriented with a non-object-oriented language. This is based on GNU's philosophy (or RMS's) and may have been up to date in mid 1980's, but 20 years later this is just a ridiculous attempt to manage things. Trying to modularize and encapsulate must lead to an object-oriented language, everything else is a bad compromise. And that is one reason why GNOME is - from technological point of view - a really ugly system.
GNOME 1.4 was nice to use, but I haven't really get used to the way they do things since GNOME 2.0. Since GNOME 2.6 I must admit I haven't managed to work with it. Why a control centre _and_ the need to edit files with gconf? Looks like a bad compromise between the win registry and KDE's kontrol centre.
The good thing of GNOME is, it has been the first really free UNIX desktop, but since the Trolltech people changed their license, the only positive aspect of beeing a free desktop has slightly vanished.


Josua: Because neither KDE nor GNOME could fulfill my needs I have used icewm, a powerful window manager, plus a whole bunch of plain GTK programs. As a programmer I don't like GTK very well but most (and even some very good) X applications are written using GTK. Each piece of my desktop was quite good standing alone but some kind of "magic" between them like in KDE or GNOME was missing. But I could live with it.
A real problem was I needed a good file manager. All GNOME libraries only for GMC? KDE only for Kruiser (a very good WinExplorer-like file manager)? Some xterms instead? I tried all solutions but neither satisfied me. Until I fortunately found XWC (X Win Commander) based on FOX, a widget set completely unknown to me.
There were serveral things I would have implemented a different way but at a whole XWC was just the file manager of choice. Some very simple changes were necessary to make FOX and XWC compile with GCC 2.95.2 so I sent those solutions to the authors of FOX and XWC. Ups, these things were already fixed in FOX; I was using a deprecated version. The problem was with the current FOX drop XWC did not compile. I tried to hack it a bit but didn't manage to make it compile. I tried again and it compiled but did not run. XWC's author did not reply my mails. As I was told on the FOX mailing list he had stopped working on XWC.
Okay, what now? During my failed hacking experiment I noticed that FOX was the perfect widget set for my needs. It's written in C++, is lightweight, copies M$ Window's look and feel, has a very clean API and implementation and comes with almost all necessary widgets. So I decided to write my own file manager using FOX.
In XWC you could change its colours, fonts... Cool features but better done in a separat application than in a file manager. As a result the first thing to do was implementing some kind of FOX control centre. foXcontrol was born. I soon realized that I'd better don't hard-wire those colour... settings but make foXcontrol a component-based framework instead. Since that time things have evolved. The component concept can now be found in libfoXdesktop in a more generalized way. libfoXdesktop has become the (leightweight) core of what has become "foXdesktop" extending FOX with code, icons, and common registry settings. There are not much foXdesktop applications yet one of them being foXcommander, the successful third result of hacking XWC.

Mathew: I am also dabble in programming, and I personally like a more integrated set of tools, such as those just starting to be released with KDE - but I also want my browser to start-up in one second... I also believe, like Josua, that programming a GUI environment using a non-object oriented language is kinda kludgy...

Jochen: History is not yet writable for me as I am new to this project.
But I may risk a look to the future. Most people - and also programmers - try to compare GNOME, KDE, single applications,... to win32 and win32 apps. Starting this way is the worst thing you can do. Why must usability be the way windows does things? As I earn my money beneath my studies in a mechanical development corporation, I must work with windows and I yet have to be convinced that my productivity is _not_ slowed down by this toy. Why is there only one workspace? Why are there so few helpful tools? Why is it so insecure?
Innovation means, going your own way and not copying existing systems - you hadn't the need to waste your time copying, you could use the original!


The foXdesktop is available and partly usable right now:
- a core desktop library exists and is the basis of all foXdesktop apps
- a control panel exists, based on a dynamic loader, which modules are written for
- a man page viewer - though a browser based widget would render a bit better
- the FOX library already comes with quite a few utilities, these will be merged
- a minesweeper game is availble and is to be merged
- a window manager and desktop manager is currently under development
   they are one package since this allows us to do some cool inter-window message passing
   (ie: a form of DDE which will be based on a similar protocol as used by XDND4)

foXdesktop is currently under development (its not useable as a desktop environment... yet), but once the WM/desktop is created, we should be able to merge the FOX apps in pretty quickly. This will enable enough functionality to bootstrap a desktop ;-)


All parts of foXdesktop are free software; you can redistribute them and/or
modify them under the terms of either the GNU General Public License or the
GNU Lesser General Public License as (both) published by the Free Software Foundation.

See the foXdesktop libraries/source-code for specific license details.



Mailing list:

Mailing list subscription page:

Mathew Robertson
Jochen Rassler