I'm writing a simple osd_cat-based utility to display messages received through libpurple (via Finch or Pidgin, for example).
As of now, this is what I have managed to create:
dbus-monitor "interface=im.pidgin.purple.PurpleInterface, member=ReceivedImMsg" | awk '/string/ && (NR%2==1) {split($0, sender, "\"") }; /string/ && (NR%2==0) {print sender[2] ": " substr($0,11) }' | osd_cat --pos=top --align=right --indent=8 -O 4 -u white
Or split into multiple lines for enhanced reading pleasure:
dbus-monitor "interface=im.pidgin.purple.PurpleInterface, member=ReceivedImMsg"
| awk '/string/ && (NR%2==1) {split($0, sender, "\"") };
/string/ && (NR%2==0) {print sender[2] ": " substr($0,11) }'
| osd_cat --pos=top --align=right --indent=8 -O 4 -u white
I did some experimenting, and found following to work:
yes | osd_cat
echo "text" | osd_cat
dbus-monitor | osd_cat
dbus-monitor | awk '{print $0}' | osd_cat
dbus-monitor "interface=im.pidgin.purple.PurpleInterface, member=ReceivedImMsg" | osd_cat
But following do not work:
dbus-monitor | awk '{print $1 $2}' | osd_cat
dbus-monitor "interface=im.pidgin.purple.PurpleInterface, member=ReceivedImMsg" | awk '{print $0}' |osd_cat
I am completely lost.