我想要banshee --next
通过虚拟控制台(例如,按下 Ctr-Alt-F1 时显示的控制台)来执行或仅仅控制 banshee。
这可能吗?我该怎么做?
答案1
事实证明,运行 dbus 的 X 会话具有以下环境变量设置,可从 X 中的所有终端仿真器访问:
DBUS_SESSION_BUS_ADDRESS
它的内容(`echo $DBUS_SESSION_BUS_ADDRESS)似乎表示 Dbus 使用的 Unix 套接字。
让 banshee 终端命令在虚拟控制台中工作其实就是与虚拟终端共享该值的简单事情。
为了实现自动化,我编写了以下简单脚本:
$ cat get_dbus_addr.sh
#!/bin/bash
#Use this file for sharing the most recent DBus socket address
FILE="/tmp/${USER}_DBUS_SESSION_BUS_ADDRESS"
if [ ! -z "$DBUS_SESSION_BUS_ADDRESS" ]
then
echo $DBUS_SESSION_BUS_ADDRESS > "$FILE"
else
export DBUS_SESSION_BUS_ADDRESS=`cat "$FILE"`
fi
我从适当的终端配置文件获取脚本(这样它就可以在 GUI 和虚拟控制台中获取)。在 GUI 中获取它会将值保存到 /tmp 中的共享文件中,而在虚拟控制台(未设置 ENV 变量)中获取它会加载它。