Fedora

如何使用 systemd 從 Gnome3 掛起

  • June 2, 2013

**簡要背景資訊:**我剛剛在我的電腦上安裝了帶有 Gnome 3.6.3.1 的 Fedora 18。它連接到包含我使用 Clementine 播放的音樂的 Windows 共享 (CIFS)。如果我在 Clementine 從 CIFS 掛載上播放歌曲時掛起電腦,在恢復時,它 (Clementine) 會掛起。最終,如果我嘗試重新啟動/關閉電源,整個電腦就會掛起。我的解決方法是在暫停時停止播放。

**我的問題:**我創建了一個腳本/usr/lib/systemd/system-sleep來停止播放(使用 MPRIS)。如果我執行,腳本在掛起之前成功執行

systemctl suspend

但是,如果我從 Gnome3 的使用者菜單中點擊暫停,它不會執行。做了一些工作,我發現 Gnome3 依賴於 UPower,它本身似乎只是使用 DBus 發出“暫停”命令。我不夠精明,無法進一步追踪,但據我所知,腳本永遠不會被執行。

**我的問題:**如何讓 Gnome3 中的 Suspend 菜單項使用 systemd 來呼叫我的腳本?

在做了更多研究之後,似乎 UPower 在檢測到它時確實應該使用 systemd。但由於某種原因,它沒有。我目前正在研究這個,但作為一種臨時解決方法,我直接編輯了相關行,userMenu.js如下powerMenu.js所示:

替換(註釋掉)所有呼叫掛起的行:

this._upClient.suspend_sync(null);

通過以下行:

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

還在powerMenu.js頂部附近添加以下行:

const Util = imports.misc.util;

引用自:https://unix.stackexchange.com/questions/77907