Regular visitors to this site will know that Fluxbox is Trent’s and Patrick’s preferred window manager. I, too, am impressed with its speed and customizability, and its low overhead. Fluxbox’s biggest drawbacks are that customization is somewhat less intuitive and significantly more labor-intensive than the full-featured environments’, and that the interface as a whole is foreign and unintuitive to those whose only other computer experience has been Windows.
One challenge I faced with my laptop project was that not only did I need to make the laptops acceptably responsive, I also had to keep the learning curve as low as possible. Even with add-ons such as iDesk, the testers were less than comfortable with the Fluxbox solution. After evaluating several environments and window managers, the testers and I agreed that LXDE provided the best balance between responsiveness and usability for the non-technical user. To be sure, LXDE is nowhere near as responsive as Fluxbox, OpenBox or many of the other ultra-light managers, but it is also far more responsive than the other “tweener” window manager, XFCE In a real sense, LXDE is what XFCE aspires to be.
As with many things Linux, there is a healthy dose of good along with bad. There aren’t very many distros that use LXDE as the default interface (WattOS and Lubuntu come to mind, but neither is quite ready for prime time.) I ended up using a different distro (Linux Mint, im my particular case) and installing LXDE via apt-get. Unfortunately, putting a window manager other than the default in place means you have that much more setup to do in order to enable basic functionality.
Going under the hood
One of the most frustrating things about getting LXDE up and running is that so much of the documentation in their wiki is flat-out wrong. The startup and configuration files are not where the documentation said they would be (I don’t know what would happen if I manually created them there, but I shouldn’t have to, since I don’t know exactly what format they should have). The wiki says you should be able to look in $home_directory/.config/ or, failing that, in /usr/share/, but none of them have anything remotely resembling startup scripts. The LXDE wiki does reference an app called “lxsession-edit”, which is used to configure the interface and set up startup applications (such as network and hardware monitors.) This application has one utterly fatal flaw, however: it isn’t included in the LXDE package, and it isn’t available as a stand-alone via apt-get. This is an unacceptable shortcoming. Apparently, you have to download it directly from a developer page, and it’s still in version 0.1. Either make it part of the LXDE package or change your documentation, but you can’t write instructions for what’s not available without giving any other alternatives.
So how does one go about determining startup applications?
The autostart script is actually located in the blindingly obvious location /etc/xdg/lxsession/LXDE/autostart. Thanks to the extremely thorough documentation and in-line commenting (ha!), I was able to figure out that adding @application-name (for instance, @nm-applet) will launch the application on startup and leave it running. Lines can be commented out with a standard regulation octothorpe (“#” for the octothorpe-uninitiated.) What I don’t (yet) know is whether leaving the “@” off will cause the program to run and terminate on startup (for instance, if you want to reset alsaconfig.)
One of the primary advantages I found in LXDE is that it supports desktop icons (which is still one of the more troublesome aspects of many environments: getting drag-and-drop to the desktop and expecting a program to launch “just like that” generally still isn’t there yet.) Getting it to work right is more cumbersome than I’d like, but in my case, that’s a lesser concern. As long as I’m able to get working desktop icons for others to use, I’m in good shape.
In order to be able to launch apps from your desktop, you’ll need to drop a .desktop file in your Desktop directory (located in /home/$your_user/Desktop.) You must use the .desktop extension in order for this to work correctly. If you don’t have an existing file, you’ll need to create one. This is easily accomplished with a text editor of your choice. The name of the file does not matter, as long as it has the .desktop extension. For purposes of this writeup, we’ll assume I want an application called MyApp. I would probably name my file myapp.desktop. The contents of the file should look like this:
(Hot tip: if you’re doing this for the first time, copy the above text and paste it into a text file, then use it as a template for future .desktop entries.)
Most of the above should be self-explanatory. Encoding should be consistent with the encoding actually used, and if the app runs in a terminal, you’ll obviously want to set “Terminal=true.” The application itself resides in the “Exec” line, and the line should end with “%u“. The most frustrating part is locating the icon for your application. Note that what actually appears on the desktop is what you provide under “Name”, not the name of the desktop file. So if I were to edit myapp.desktop so “Name=Fred”, then “Fred” would show up on the desktop to launch MyApp. Dealing with non-applications (such as text documents) is much more straight-forward: merely drop them in your Desktop folder, and you’re good to go.
By this point, some of you must be wondering why I’m sticking with LXDE in spite of being difficult to configure. The simple answer is that based on my experiences, LXDE’s shortcomings are primarily on the configurability side; once it’s set up, usability is pretty good. For my deployment environment, usability is critical, and I can handle configuration headaches. Compared to getting Windows XP configured properly (including services), LXDE isn’t that much worse (provided you don’t mind typing.) A big part of the hassle is dealing with permissions, since you’ll need to have root privileges to edit those files not found in your /home directory. At the end of the day, functionality for the end-user is key, and LXDE delivers on that aspect quite well. If you’re in an environment in which Gnome or KDE are simply too slow and a solution like fluxbox requires too much of a learning curve (or is simply too foreign-looking), LXDE offers a good blend of responsiveness and interface familiarity such that a neophyte can dive right in.