GNOME Volume Applet:
People have once tried to teach me to not be negative about others. Well guess what. They failed! Of all code that I’ve seen in my life, the current GNOME Mixer Applet has to be by far the worst. Actually, that’s not true, I’ve seen Win32 driver code that was worse. But it’s almost as bad.
So I rewrote it. Still looks the same, but the code is maintainable now. Screenshot (kinda useless, because it didn’t change, but just so I have something to show off with). I dropped all the different backends, so it depends on GStreamer’s mixer interface now. I also removed all instances of the word “Mixer” from the user interface, similar to GNOME Volume Control. And I enhanced the preferences screen a bit.
I was having some doubts on where to go from here. Some people have requested the possibility to display multiple sliders (e.g. one for Line-in, one for Master volume; “because now I need two applets and the icons are indistinguishable”), whereas others consider this the most embarassing violation of the usability guidelines. Maybe I just need to show the device + track name in the tooltip and leave it at that?
I also figured that it’d be cool to use the GNOME Volume Control slider widget in the applet, but most people seem to dislike that: the applet should be simple. I suppose they have a point, so I probably won’t do this.
Seth suggested to add a ‘fake’ track to the GStreamer mixer interface which is a representation of several master-tracks together (PCM, Master, Speaker) and use that in the applet. This’d prevent people having to open GNOME Volume Control because ALSA mutes everything by default, and it’d control all ‘end user audible volume’ in a single track. I don’t know if it’s a good idea, seems like a lot of effort to prevent users from falling in the gap that we created ourselves by accepting ALSA in Linux 2.6. Distros like Red Hat save mixer settings on shutdown and restort on startup anyway, so if you set all volumes to an acceptable default on first boot, you only need to modify one track (the master track) afterwards, right? I’m interested in what others think of this.