Выключение при неиспользовании в течение определенного времени

Выключение при неиспользовании в течение определенного времени

У меня есть ПК "медиацентр", который я иногда забываю выключать на ночь. Если я не забываю, я обычно подключаюсь к своему ПК "медиацентр" и выключаю его, но чаще всего я забываю это сделать, и ПК работает всю ночь (и весь следующий день тоже).

Есть ли способ выключить ПК через диалоговое окно (т. е. "Do you want to shutdown?" [Yes] [No])? Причина, по которой мне нужно диалоговое окно, заключается в том, что иногда мы смотрим фильмы поздно ночью, и я не хочу произвольно выключать компьютер.

Я могу сделать задание cron, которое запускает скрипт в 1 час ночи, но я не могу понять, как выполнить 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, и компьютер выключится.

При выполнении скрипта появляется следующее небольшое диалоговое окно:

https://s22.postimg.org/irl97w835/xmessage.png

Я уверен, что это zenityздорово, но для такой простой задачи, как эта, я думаю, xmessageэто может быть проще всего.

решение2

Слишком много фактических вопросов в одном вопросе. В следующий раз задавайте отдельные вопросы. Описанная вами проблема должна быть решена опцией видеоплеера «prevent suspending» или «disable sscreensaver». У VLC эта опция есть где-то в настройках. Однако люди сообщают, что иногда она не работает.
Чтобы отобразить диалоги из скрипта bash, используйте xdialogутилиту. Однако она не будет работать просто так, если запущена из сеанса внешнего пользователя, например из crontab. Сначала вам нужно будет отключить безопасность X-сервера.
Чтобы запустить poweroff от имени обычного пользователя, запустите ее через systemd
systemctl poweroff.

Связанный контент