Google Talk invisible mode in Pidgin
Setting the status invisible for a GTalk account has been a problem for a while now. Although there are third party plugins available, (like the one here) most of them do not seem to work. The basic reason of this is, although Google Talk is basically based on XMPP , it handles invisibility, away etc in a different way. And according to this ticket on the pidgin bug track, they don’t quite like it . After going through a bit of documentation mentioned here, I came up with the following xmpp console commands to make invisibilty work without a problem in pidgin for google talk.
1) This requires the XMPP console so start that plugin. It comes by default in Pidgin and can be enabled via Tools->Plugins.
2) Start the XMPP console. Tools -> XMPP Console.
For more information on the upcoming steps, check the documentation linked above.
3) Send the following XML in the XMPP console.
<iq type='get' to='gmail.com'> <query xmlns='http://jabber.org/protocol/disco#info'/> </iq>
4) Now get your current status list. Change username to your gmail username before sending
<iq type='get' firstname.lastname@example.org' id='ss-1' > <query xmlns='google:shared-status' version='2'/> </iq>
This list can be pretty big if you have many saved messages. The output should be something like.
<iq email@example.com/89089080' firstname.lastname@example.org' id='ss-1' type='result'> <query xmlns='google:shared-status' status-min-ver='2' status-max='512' status-list-max='3' status-list-contents-max='5'> <status/> <show>dnd</show> <invisible value='false'/> </query> </iq>
invisible value there. That is what we will be manipulating to the our status to invisible.
5) Now, to set your status to invisible, send the following in the xmpp console.
<iq type='set' email@example.com' id='ss-2'> <query xmlns='google:shared-status' version='2'> <invisible value='true'/> </query> </iq>
Although, the pidgin status does not change, you are infact invisible. You can check in gmail or ask someone on your chat list
6) To get out of invisibility, send the following.
<iq type='set' firstname.lastname@example.org' id='ss-2'> <query xmlns='google:shared-status' version='2'> <status/> <show>dnd</show> <invisible value='false'/> </query> </iq>
Here the invisible line is important. Other lines are a copy paste of the result of your status list with some minor changes.
This can be a bit tedious, but if anyone is ready to make a plugin out of it, the currently non working one linked above would be a good start.
Enjoy the power of invisibility.
Special thanks to Amod for helping me to test this.