允许用户从 gnome 关闭计算机的命令或应用程序是什么?它如何拥有特权,而 halt 需要超级用户?
答案1
它使用 DBus 消息。
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
找到了这个这里。
重启:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Reboot
暂停:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1
休眠:
dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate
答案2
GNOME 通过 DBus 向已以 root 身份运行的服务发送消息来实现这一点。
要使用 ConsoleKit 关机或重启:
gdbus 调用 -y -d org.freedesktop.ConsoleKit \ -o /org/freedesktop/ConsoleKit/管理器 \ -m org.freedesktop.ConsoleKit.Manager.停止
gdbus 调用 -y -d org.freedesktop.ConsoleKit \ -o /org/freedesktop/ConsoleKit/管理器 \ -m org.freedesktop.ConsoleKit.Manager.重新启动
要使用 UPower 暂停或休眠:
gdbus 调用 -y -d org.freedesktop.UPower \ -o /org/freedesktop/UPower \ -m org.freedesktop.UPower.Suspend
gdbus 调用 -y -d org.freedesktop.UPower \ -o /org/freedesktop/UPower \ -m org.freedesktop.UPower.Hibernate