如何使用 systemd 从 Gnome3 挂起

如何使用 systemd 从 Gnome3 挂起

简要背景资料:我刚刚在计算机上安装了 Fedora 18 和 Gnome 3.6.3.1。它连接到包含音乐的 Windows 共享 (CIFS),我使用 Clementine 播放音乐。如果我在 Clementine 播放 CIFS 安装上的歌曲时挂起计算机,则在恢复时,它 (Clementine) 会挂起。最终,如果我尝试重新启动/关闭电源,整个计算机都会挂起。我的解决方法是在暂停时停止播放。

我的问题:我创建了一个脚本来/usr/lib/systemd/system-sleep停止播放(使用 MPRIS)。如果我执行,脚本会在挂起之前成功运行

systemctl suspend

但是,如果我从 Gnome3 的“用户”菜单中单击“暂停”,它就不会运行。经过一番调查,我发现 Gnome3 依赖于 UPower,而 UPower 本身似乎只是使用 DBus 来发出“挂起”命令。我不够精明,无法进一步追踪线索,但据我所知,脚本永远不会被执行。

我的问题:如何使 Gnome3 中的挂起菜单项使用 systemd 来调用我的脚本?

答案1

经过更多研究后,UPower 在检测到时似乎确实应该使用 systemd。但由于某种原因,事实并非如此。我目前正在研究这个问题,但作为临时解决方法,我直接编辑了 中的相关行,userMenu.js如下powerMenu.js所示:

替换(注释掉)所有调用挂起的行:

this._upClient.suspend_sync(null);

通过以下行:

Util.spawn(['systemctl', 'suspend']);

powerMenu.js还要在顶部附近添加以下行:

const Util = imports.misc.util;

相关内容