A friend of mine installed Archlinux 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 or KDE.
The closest thing I've come to a desktop environment outside of one was the awesome 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 and 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 and trayer (part of the 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 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 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 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
for awesome you could also use xbindkeys, 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
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, 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.