Xsession 结束后如何关闭计算机?

Xsession 结束后如何关闭计算机?

我正在制作一台像街机一样的带有教育游戏的计算机。我正在使用 Xsession 将桌面替换为应用程序。它工作正常。但是当我退出游戏时,它会返回到 LightDM - 登录屏幕。但我希望关闭而不是返回 LightDM。可以这样做吗?

自定义用户定义会话:

[Desktop Entry]
Encoding=UTF-8
Name=RacingGameX
Comment=Just the game!
Exec=/usr/share/xsessions/gameBash.sh
Type=Application

Bash 脚本:

xscreensaver -nosplash &
xrandr -r 60
exec /usr/bin/RacingGameX/RacingGameXExecutable
xrandr -r 75
sleep 5
sudo shutdown now # <- that's not working

谢谢您的帮助!

答案1

语法shutdown从命令行是

sudo shutdown -P now ## for system POWEROFF
sudo shutdown -h now ## for system HALT or POWEROFF

如果这不起作用,我们也可以执行强制关机

sudo poweroff --force

如果我们从用户会话启动脚本(就像在自定义会话中的情况一样),我们可以允许用户在没有 root 权限的情况下关机(sudo那么不要在脚本中使用!)或者按照以下问题的答案从用户会话中在没有 root 权限的情况下关机:

答案2

首先我感谢成员 Takkat 和 David Foerster 的帮助。:)

我找到的解决方案:

如果您遇到类似本文的问题,一种解决方案是获取consolekit并在您的 bash 脚本中插入以下代码来关闭系统:

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

Bash 脚本如下:

xscreensaver -nosplash &
xrandr -r 60
/usr/bin/RacingGameX/RacingGameXExecutable
xrandr -r 75
sleep 5
/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

相关内容