我有一台“媒体中心”电脑,有时我会忘记在晚上关闭。如果我记得的话,我通常会远程访问我的“媒体中心”电脑并将其关闭,但大多数晚上我都会忘记这样做,电脑会整夜运行(并且第二天也会运行)。
有没有办法通过对话框(即"Do you want to shutdown?" [Yes] [No]
)关闭电脑?我之所以想要一个对话框,是因为有时候我们在深夜看电影,我不想随意关机。
我可以做一个在凌晨 1 点运行脚本的 cron 作业,但我不知道如何执行poweroff
或shutdown
作为标准用户执行。有什么帮助吗?我正在运行 Linux Mint 17.3 (Ubuntu 14.04)。
答案1
有没有办法通过对话框(即
"Do you want to shutdown?" [Yes] [No]
)关闭电脑?
我相信最简单的方法是通过xmessage
.像这样的东西:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
xmessage -timeout 10 "Shutdown computer?" -buttons yes:0,no:1
case $? in
0)
echo "Shutting down..."
#systemctl poweroff
;;
1)
echo "Ok."
;;
*)
echo "Mystic error!"
;;
esac
我添加了$PATH
和$DISPLAY
变量,以便它可以被cron
(更多关于这里)。当然,如果你想要关闭计算机,您必须取消注释该行,当然您也可以删除这些echo
语句。我只是快速地将其组合在一起作为样本。
其要点是:当用户按下yes
返回代码时0
,计算机就会关闭。如果用户按下no
返回码是1
,则执行不是关闭。 (编辑:)如果timeout
几秒钟后没有用户按下任何按钮(10
在这种情况下),xmessage
将退出0
并且计算机将关闭。
执行时,脚本会产生这个小对话框:
我确信这zenity
很棒,但对于像这样的简单任务,我认为xmessage
可能是最简单的。
答案2
一个问题中有太多实际问题。下次单独问问题。您描述的问题应该通过视频播放器选项“防止暂停”或“禁用屏幕保护程序”来解决。 VLC 在设置中的某处有此选项。然而,人们报告说它有时不起作用。
要显示 bash 脚本中的对话框,请使用xdialog
实用程序。然而,如果从外部用户会话运行,比如从 crontab 运行,它就不会简单地工作。您需要首先禁用 X 服务器安全性。
要以标准用户身份运行 poweroff,请通过 systemd 运行它
systemctl poweroff
。