DE 如何调用 ACPI 函数?

DE 如何调用 ACPI 函数?

好吧,首先,这不是我面临的问题,但我想更好地理解这一点。

如果我想从命令行关闭/重新启动我的机器,我需要调用:

$ sudo poweroff
$ sudo reboot

也就是说,我需要 root 权限才能进行这些 ACPI 调用。

但是,我启动我的 DE(我使用 XFCE)而不授予它 root 权限: $ startxfce4 --with-ck-launch

现在,我知道该--with-ck-launch参数有助于允许 XFCE 关闭/重新启动我的系统,但我不明白如何操作。

是什么让 ConsoleKit 在没有 root 权限的情况下关闭?在没有超级用户权限的情况下如何更改运行级别?既然有可能,那么如何在没有root权限的情况下从控制台关闭我的机器呢?

答案1

您可以通过 dbus 与 ConsoleKit 进行通信。例如,使用该dbus-send工具时,一些值得注意的命令是:

关闭:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

重启:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

还有休眠和暂停的命令,但我不知道它们是什么。


编辑:找到暂停命令

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:0

在较新的系统上

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

相关内容