如何从脚本(某些#general
和#nickserv
选项卡)closurespidgin对话窗口中的多个选项卡。 我试图使用xdotool
和devilspie
但没有结果。
您可以使用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似乎更干净。