防止 Linux 中的 systemd-inhibit

防止 Linux 中的 systemd-inhibit

问题

是否可以阻止应用程序使用systemd-inhibit

为什么?

systemd-inhibit允许应用程序覆盖来自 的指令/etc/systemd/logind.conf,特别是HandleLidSwitch=ignoreHandleLidSwitchDocked=ignoreLidSwitchIgnoreInhibited=no

在某一时刻,几乎所有桌面环境的开发人员都发现他们可以做到这一点,包括凯德,侏儒,以及最近启示。启蒙运动的最新发展是我当前的问题:

$ systemd-inhibit 
WHO           UID  USER    PID COMM          WHAT                                                                       WHY              MODE 
Enlightenment 1000 <username> 769 enlightenment handle-power-key:handle-suspend-key:handle-hibernate-key:handle-lid-switch Normal Execution block

1 inhibitors listed.

$

更糟糕的是,我认为启蒙的配置不允许指定在该事件中应该发生什么,即盖子被关闭。因此,每次我合上盖子时,笔记本电脑都会暂停。这是非常糟糕的,不应该发生,这就是为什么我首先有HandleLidSwitch=ignore, HandleLidSwitchDocked=ignore, 和LidSwitchIgnoreInhibited=noin 。/etc/systemd/logind.conf没有启蒙运行,一切都很好,我可以关闭盖子,而系统不会自动挂起;当启蒙运行时,我不能。

在我看来,任何应用程序绝对没有理由覆盖我的/etc/systemd/logind.conf.因此,我想尝试阻止enlightenment_start使用抑制剂(希望它不是以这样的方式构建的,如果它没有抑制剂,它就不会再启动。)

相关问题

一个答案类似的问题(大约在 gnome 中发生同样的事情)似乎表明 systemd 抑制剂只能通过终止负责抑制剂的应用程序来删除。如果这不是一个选项,则建议阻止原始应用程序放置抑制剂。它建议阅读 的手册页以dbus-daemon了解如何做到这一点,但我不明白这是如何相关的。

方法

  • 我可以限制为某些应用程序设置抑制剂的权限吗?
  • 我可以完全禁用抑制剂吗?
  • 我可以设置另一个抑制剂来逆转 所设置的抑制剂的行为enlightenment吗?

关于使用替代桌面环境等的注意事项

我知道每个桌面环境开发人员都以“用户友好性”为目标,通常理解为通过处理自己的应用程序中的所有内容来消除与配置文件的交互。不幸的是,这使得越来越难以找到一个桌面环境,它不这样做,并且让我的系统配置保持不变,但仍然提供一些功能,并且具有一定的可靠性。举个例子:例如,我研究了 LXDE,这看起来不错,只是当systemctl suspend有目的地执行时(即,我真的希望机器挂起),它可能会也可能不会锁定屏幕。我确信所有这些问题都可以以某种方式解决,但仅仅恢复 10 年前的功能似乎很麻烦。

软件

系统是Arch Linux,内核为5.5.9,systemd版本为245.2,enlightenment版本为0.23.1。

答案1

logind.conf 有一个InhibitorsMax选项。InhibitorsMax=0将完全禁用抑制剂。能够停止特定的应用程序会更好,但这是我迄今为止发现的最好的。

相关内容