每当我收到特定的 acpi 消息时,我都会设置一个 acpid 规则来执行以下命令:
awesome-client "activate_tabletmode()"
activate_tabletmode()
我想在我很棒的配置中调用的一些函数在哪里?我知道awesome-client
使用 dbus 使 IPC 成为可能。
我收到以下错误消息:
Failed to open connection to "session" message bus: Using X11 for dbus-daemon
autolaunch was disabled at compile time, set your DBUS_SESSION_BUS_ADDRESS instead
有人可以帮我理解这意味着什么吗?我尝试以用户身份而不是 root 用户身份运行命令sudo -u
,但它没有帮助。
这意味着服务和用户会话在完全独立的环境中运行,因此服务不会自动知道如何进入您的桌面会话。每个用户都有自己的 X11 显示地址,D-Bus 也是如此——AwesomeWM 运行在一个“会话总线”上,该“会话总线”对每个用户都是独立的,并且与全局“系统总线”无关。
(同时可以有多个用户会话,因此拥有固定的路径和地址实际上没有意义。)
这是一个好的开始 - 必须以相同的 UID 运行命令才能访问会话总线。但是,您仍然需要告诉它会话总线在哪里。
幸运的是,在最近的系统中,会话总线路径不再是随机选择的,而是仅基于您的 UID。因此,如果您的用户 ID 是
uid=$(id -u fred)
,则需要设置至少以下环境变量之一:XDG_RUNTIME_DIR="/run/user/$uid"
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$uid/bus"
例如: