首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭pidgin对话窗口中的选项卡

关闭pidgin对话窗口中的选项卡
EN

Stack Overflow用户
提问于 2012-01-10 13:49:27
回答 1查看 397关注 0票数 2

如何从脚本(一些#general#nickserv选项卡)关闭pidgin对话窗口中的多个选项卡。我尝试使用xdotooldevilspie,但没有结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-11 04:40:58

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

代码语言:javascript
复制
to_close = ["#general", "nickserv"]
for conv in purple.PurpleGetConversations():
    if purple.PurpleConversationGetName(conv) in to_close:
        purple.PurpleConversationDestroy(conv)

将以下内容放在Python文件的顶部,以初始化purple对象,以便通过D-Bus (从DbusHowTo)与Pidgin/Finch通信:

代码语言:javascript
复制
#!/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的人,下面是用sh使用purple-remote重写的相同代码(请注意,for arg会迭代脚本的参数):

代码语言:javascript
复制
#!/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的管道有多脆弱。Python看起来干净多了。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8799094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档