无X11的DBus Finch/Pidgin

2 投票
2 回答
3533 浏览
提问于 2025-04-16 14:59

我想在我的服务器上用Python写个脚本,目的是通过DBus这个Python库和finch(一个类似于pidgin的控制台界面,界面看起来像links2)进行通信,发送消息或者查看好友的在线状态。

如果在X环境下,这个操作是可以正常工作的。你可以在一个X终端里运行finch,然后在另一个终端里运行Python脚本,这样就不会出现错误。

但是如果没有X环境,你就得在TTY1(按ctrl+alt+f1)里运行finch,然后在TTY2(按ctrl+alt+f2)里运行Python脚本,但这样的话,Python脚本会失败

以下是脚本的前几行:

import dbus
bus = dbus.SessionBus() # gives EXCEPTION error
obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
...

出现的异常错误是:

dbus.exceptions.DBusException: org.freedesktop.DBus.Error.Spawn.ExecFailed: dbus-launch failed to autolaunch D-Bus session: Autolaunch error: X11 initialization failed.`

我看到有地方说,可能需要在同一个TTY里同时运行finch和脚本。不过我没法好好测试这个,因为这和在一行输入cd,下一行输入ls不一样。你输入finch后,它就会运行,然后你就不能再输入其他命令了,比如links2。我尝试用finch &来运行,但这似乎会暂停finch,而且运行脚本也会出现同样的错误。

有什么解决办法吗?谢谢。

2 个回答

0

我觉得finch需要一些显示功能。要在服务器上运行它,可以试试用xvfb-run这个命令:http://en.wikipedia.org/wiki/Xvfb

6

安装 screen

  1. 输入 dbus-launch screen 来启动这个工具。
  2. 接着输入 finch 来打开一个聊天程序。
  3. 按下 ctrla,然后再按 c,这样可以创建一个新的窗口。
  4. 最后,输入 python myscript 来运行你的 Python 脚本。

撰写回答