2
如何從腳本(某些#general
和#nickserv
選項卡)關閉pidgin對話窗口中的多個選項卡。我嘗試使用xdotool
和devilspie
,但沒有結果。關閉pidgin對話窗口中的選項卡
如何從腳本(某些#general
和#nickserv
選項卡)關閉pidgin對話窗口中的多個選項卡。我嘗試使用xdotool
和devilspie
,但沒有結果。關閉pidgin對話窗口中的選項卡
您可以使用Pidgin的DBus API關閉對話。請參閱Pidgin's 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文件的頂部初始化purple
對象用洋涇浜/芬奇在d-總線(從DbusHowTo)進行通信:
#!/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
sh
在重寫同樣的事情(注意:for arg
迭代參數到腳本):
#!/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
雖然我完全不確定管道的脆弱程度如何,但sed
s。 Python似乎更乾淨。
謝謝!用bash使用紫色遠程重寫你的代碼 – kirill 2012-02-14 07:24:34
非常感謝你再次!我說過是錯的。英語不是我的母語。我將你早期的代碼改寫爲bash。我爲這個麻煩感到抱歉。附:你的代碼比我的好。 – kirill 2012-02-15 06:21:48