This is OSD I hacked up after I couldn't use tpb anymore.
It is programmed in Ruby and Gtk+, listens on TCP AF_UNIX socket /tmp/osd.socket and also displays volume tray icon.
You can send update using socat or netcat:
echo volume 100 | socat - unix-connect:/tmp/osd.socket echo volume 100 | netcat -U /tmp/osd.socket
It only wakes up once per second so it's suitable for laptops. OSD format and position is the same as brigtness OSD from GNOME Power Manager. It can be used with halevt or ACPI handler.
There is new experimental feature, see independent workspaces for multihead X server.
Download: