Power-Management

Slackware 和 elogind:如何為高級使用者啟用掛起和休眠?

  • July 2, 2021

我在 Slackware 目前使用 elogind,我只能從終端使用 sudo 來睡眠和休眠。使用舊的好 pm-utils,我只需要編輯 10-enable-suspend.rules,使 init 3 && init 4 就可以作為使用者休眠。現在我做了這些步驟

a) 複製兩個 polkit 規則

cp /usr/share/polkit-1/rules.d/10-enable-* /etc/polkit-1/rules.d/

b)我將我的使用者添加到電源組中

usermod -aG power myuser

c)在 logind.conf 我啟用了這些選項

grep -v ^# /etc/elogind/logind.conf

[Login]
HandlePowerKey=poweroff
HandleHibernateKey=hibernate
HandleLidSwitch=hibernate

[Sleep]
AllowSuspend=yes
AllowHibernation=yes
AllowSuspendThenHibernate=yes
AllowHybridSleep=yes

d) 我重新啟動系統

reboot

從 xfce4-power-manager 我無法休眠或睡眠。

我也從cli嘗試過

$ loginctl hibernate
$ echo $?
1

找到解決方案。

a)我創建了 3 個文件,一個用於亮度,一個用於掛起,一個用於休眠

/etc/polkit-1/rules.d/88-suspend.rules
/etc/polkit-1/rules.d/88-hibernate.rules
/etc/polkit-1/rules.d/89-backlight.rules

b)文件的內容:我為組電源分配了降低亮度,掛起和休眠作業系統的可能性,當然您的使用者必須在組電源中(作為輔助或主要)

cat /etc/polkit-1/rules.d/88-hibernate.rules
polkit.addRule(function(action, subject) {
   if (action.id == "org.freedesktop.login1.hibernate" &&
       subject.isInGroup("power")) {
       return polkit.Result.YES;
   }
});


cat /etc/polkit-1/rules.d/88-suspend.rules
polkit.addRule(function(action, subject) {
   if (action.id == "org.freedesktop.login1.suspend" &&
       subject.isInGroup("power")) {
       return polkit.Result.YES;
   }
});


cat /etc/polkit-1/rules.d/89-blacklight.rules
polkit.addRule(function(action, subject) {
   if (action.id == "org.xfce.power.backlight-helper" &&
       subject.isInGroup("power")) {
       return polkit.Result.YES;
   }
});

c) 重啟電源管理器

xfce4-power-manager --restart

通過 xfce4 gui 和 loginctl 命令行測試並正常工作

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