closurespidgin对话窗口中的标签

如何从脚本(某些#general#nickserv选项卡)closurespidgin对话窗口中的多个选项卡。 我试图使用xdotooldevilspie但没有结果。

您可以使用Pidgin的DBus API关闭对话。 见Pidgin的DbusHowto 。 以下Python代码关闭所有对话窗口,名称与to_close列表匹配。 (我使用IM用户名进行了测试,但是没有使用IRC聊天室名称,因此可能需要针对您的目的进行一些额外的调整。)

 to_close = ["#general", "nickserv"] for conv in purple.PurpleGetConversations(): if purple.PurpleConversationGetName(conv) in to_close: purple.PurpleConversationDestroy(conv) 

在Python文件的顶部放置以下内容以初始化用于通过D-Bus(来自DbusHowTo )与Pidgin / Finch进行通信的purple对象:

 #!/usr/bin/env python import dbus import sys # Based off http://developer.pidgin.im/wiki/DbusHowto bus = dbus.SessionBus() obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject") purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface") 

对于那些不喜欢Python的人来说,使用purple-remote (注意, for arg迭代脚本的参数),在sh重写的是同样的东西:

 #!/bin/sh # Note that the result of sed here is a string like "(1234) (5678)". for conversation in `purple-remote PurpleGetConversations | sed 's/^.*[[]//' | sed 's/].*$//' | sed s/dbus.Int32//g | sed s/,//g` do conv_name=`purple-remote "PurpleConversationGetName$conversation"` for arg do if [ "$arg" = "$conv_name" ] then purple-remote "PurpleConversationDestroy$conversation" fi done done 

尽管如此,我完全不确定管道是多么的脆弱。 Python似乎更干净。