在 arch linux 中更改电源按钮角色不起作用?

Changing powerbutton role in arch linux isn't working?

提问人:tycoon 提问时间:5/20/2021 最后编辑:robnitycoon 更新时间:9/5/2022 访问量:639

问:

我正在尝试更改笔记本电脑(华硕 Vivobook)的电源按钮角色。因此,就像在 arch wiki 上一样,我在 /etc/systemd/logind.conf 中编辑了文件

我修改了条目 HandlePowerKey:

HandlePowerKey=挂起

比我跑:

systemctl kill -s HUP systemd-logind

这应该重新加载新配置,但这样做根本没有帮助,在具有更高优先级的目录中没有配置,因此配置应该只能从 ./etc/systemd/logind.conf

检查 systemd-logind 的状态时,它显示如下内容:

 systemd-logind.service - User Login Management
     Loaded: loaded (/usr/lib/systemd/system/systemd-logind.service; static)
     Active: active (running) since Thu 2021-05-20 12:14:58 IST; 34min ago
       Docs: man:sd-login(3)
             man:systemd-logind.service(8)
             man:logind.conf(5)
             man:org.freedesktop.login1(5)
   Main PID: 366 (systemd-logind)
     Status: "Processing requests..."
      Tasks: 1 (limit: 9345)
     Memory: 1.6M
        CPU: 99ms
     CGroup: /system.slice/systemd-logind.service
             └─366 /usr/lib/systemd/systemd-logind

May 20 12:21:35 archlinux systemd-logind[366]: Config file reloaded.
May 20 12:21:50 archlinux systemd[1]: systemd-logind.service: Sent signal SIGHUP to main process 366 (systemd-logind) >
May 20 12:21:50 archlinux systemd-logind[366]: /etc/systemd/logind.conf:8: Assignment outside of section. Ignoring.
May 20 12:21:50 archlinux systemd-logind[366]: Config file reloaded.
May 20 12:22:28 archlinux systemd[1]: systemd-logind.service: Sent signal SIGHUP to main process 366 (systemd-logind) >
May 20 12:22:28 archlinux systemd-logind[366]: /etc/systemd/logind.conf:8: Assignment outside of section. Ignoring.
May 20 12:22:28 archlinux systemd-logind[366]: Config file reloaded.
May 20 12:22:37 archlinux systemd[1]: systemd-logind.service: Sent signal SIGHUP to main process 366 (systemd-logind) >
May 20 12:22:37 archlinux systemd-logind[366]: /etc/systemd/logind.conf:8: Assignment outside of section. Ignoring.
May 20 12:22:37 archlinux systemd-logind[366]: Config file reloaded.

这里显示:Assignment outside of section. Ignoring.

我在网上搜索了一下,发现这可能是由于编码造成的。我用命令检查了我的编码,结果是:file

file -bi /etc/systemd/logind.conf
text/plain; charset=us-ascii

如果这是 ascii,那么它必须是 utf-8,但它仍然不起作用。 我还应该做些什么来让它工作?

这是我的 logind.conf 文件的一部分。它包含有错误的第 8 行。

#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#UserStopDelaySec=10
HandlePowerKey=suspend
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend-then-hibernate
#HandleLidSwitchExternalPower=suspend
#HandleLidSwitchDocked=ignore
#HandleRebootKey=reboot
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
linux 内核 systemd archlinux

评论

0赞 Gloat 11/15/2021
您好,你有没有找到这个问题的答案?
0赞 tycoon 2/23/2022
对于将来的某个人 -> 我的 logind.conf 在文件的第一行中有一些注释。我删除了这些行,并在重新启动登录后。我知道这听起来很愚蠢,但这奏效了。根据日志,我的logind.conf文件中有问题。因此,也许将您的配置文件与其他人的配置文件进行比较会告诉您文件出了什么问题。

答:

0赞 tycoon 3/16/2022 #1

我真的不知道当时什么对我有用,但正如登录日志所示,这只是意味着文件有问题。读完这个答案后,我认为文件编码确实有问题。对我来说,从文件中删除注释对我有用,根据对这个问题的回答,注释将编码从 utf-8 变成了其他东西,这首先导致了问题。assignment outside of section. Ignoring

因此,如果有人面临同样的问题,请删除配置文件顶部的注释,它可能会起作用,也可能不会起作用,但这值得一试。我建议在对配置文件执行任何操作之前备份它。

file -bi /etc/systemd/logind
text/plain; charset=utf-8

请注意,我的编码从 ASCII 更改为 utf-8,您也应该是 utf-8,因为 systemd 出于某种原因仅支持 utf-8(根据上面的答案)

您可以使用此配置文件并相应地修改它是否有效

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#UserStopDelaySec=10
HandlePowerKey=suspend
HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend-then-hibernate
#HandleLidSwitchExternalPower=suspend
#HandleLidSwitchDocked=ignore
#HandleRebootKey=reboot
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=no
#RebootKeyIgnoreInhibited=no
#HoldoffTimeoutSec=30s
IdleAction=lock
#IdleActionSec=5Min
#RuntimeDirectorySize=10%
#RuntimeDirectoryInodes=400k
#RemoveIPC=yes
#InhibitorsMax=8192
#SessionsMax=8192