无X11的DBus Finch/Pidgin
我想在我的服务器上用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
- 输入
dbus-launch screen
来启动这个工具。 - 接着输入
finch
来打开一个聊天程序。 - 按下 ctrl 和 a,然后再按 c,这样可以创建一个新的窗口。
- 最后,输入
python myscript
来运行你的 Python 脚本。