A fried of mine installed [Archlinux](http://archlinux.org) on his PC the other day, for which I applaud him as it **is** the best distro out there, and it got me thinking about some of the programs I've found after venturing outside of the safety of a desktop environment like [GNOME](http://gnome.org) or [KDE](http://kde.org). The closest thing I've come to a desktop environment *outside* of one was the [awesome](http://awesome.naquadah.org) window manager. By default it comes with a system tray and notifications (daemon). This makes for a very easy transition as those are two of the things that seem to be in a bit of a short supply. There are plenty of file managers (although [ZSH](http://zsh.sourceforge.net/) and [Emacs](http://gnu.org/software/emacs) are good enough for me) and, of course, window managers. Another cool thing is that it is one of the most programmable window managers around. If you learn a bit of lua you can make some very nice customizations. There are lots, or at least a couple, of tray applications, like [Stalonetray](http://stalonetray.sourceforge.net/) and *trayer* (part of the [FVWM-Crystal](http://home.gna.org/fvwm-crystal/) project, but seemingly also usable stand-alone), but I've never really tried them since I don't use any applications that show an icon there. A notifications daemon seemed most difficult to find back when I stopped using *GNOME*. I did without for a while, but eventually someone wrote [dunst](http://knopwob.github.com/dunst/) and my problem was solved. It's very easy, and is fairly configurable. Just start it in the background from your `.xinitrc` and all should be well. [dmenu](http://tools.suckless.org/dmenu/) is a very nice menu system with very few dependencies. *dunst* also seems to have based its funcion/look on *dmenu*. I mostly use it as a program launcher, but give it a list of possibilities and configure it the way you like and you can use it for pretty much any kind of selection. [dzen2](https://sites.google.com/site/gotmor/dzen) is another very versatile piece of software. It can be used to create a status bar. It has a funky syntax, but once you get the hang of it it's really cool. The most interesting part is that takes whatever you want it to show from `stdin` and parses it for its own syntax and that's about it. This means that it's pretty much configurable in *any* language. A shell script might be most obvious, since piping input and output is really easy, but if you know your way around python, lisp, C or pretty much anything that can open pipes to other applications you can use that too. If you have a window manager with some kind of IPC or another way to call commands through an external application, like the `awesome-client` for *awesome* you could also use [xbindkeys](http://www.nongnu.org/xbindkeys/xbindkeys.html), which offers a pretty nice way to configure your keybindings in a WM-independent way. If you have it compiled with support for guile it gets even cooler, because then you have a complete programming language to configure it with, which offers tricks like multi-level keybindings, kind of like *Emacs* (for example `C-i w` or `C-i p b c` and things like that). That's most if what I've found that I still use. These don't replace everything a desktop environment offers, of course, but automounting is not something I miss a lot, though that too is [possible](https://wiki.archlinux.org/index.php/Automount#Udisks), and I don't even remember anything else a desktop environment does. So I hope there is at least one interesting application you might use in here. If you know any others, feel free to let me know about them. [[!tag wm linux software desktop]]