Приложение, которое блокирует экран через определенное количество времени для Ubuntu
Есть ли приложение для Ubuntu, которое блокирует компьютер через определенное время (например, 30 минут). Мне нужно, чтобы дети ограничивали время просмотра мультфильмов. Например, 30 минут просмотра, а затем компьютер блокируется, требуя, чтобы родитель разблокировал его.
Для Windows я использовал приложение Eyes Relax, оно показывает черный экран и зеленую индикатор выполнения (осталось время для разблокировки ПК) и требует пароль для отмены блокировки.
2 ответа
4 июня 2018 г. Обновление
Гораздо лучшая программа под названием multi-timer
был создан: Таймер для одновременной установки различных сигналов тревоги
Таймер блокировки экрана
Создайте свой собственный таймер блокировки экрана вместо сторонних приложений
Хотя для этого есть сторонние приложения, вы можете создавать свои собственные. Краткое изложение шагов:
- Используйте gedit для создания скрипта
lock-screen-timer
- Скопируйте и вставьте код из этого окна в
lock-screen-timer
- отметка
lock-screen-timer
как исполняемый файл - Попробуй это!
- Настроить Nautilus для выполнения скриптов bash
- Создать ссылку на рабочем столе
- Мониторинг оставшегося времени
Изменить 1 (19 ноября 2016 г.): финальная версия. Предстоящие предупреждения о блокировке через 15, 10, 5, 3, 2 и 1 минуту, оставшиеся с использованием сообщений и звука. Используйте zenity, чтобы получить количество минут (по умолчанию 30).
Редактировать 2 (20 ноября 2016 г.): изменение кода для уничтожения предыдущего спящего сценария.
Редактировать 3 (20 января 2017): пересмотреть убийство предыдущего кода сценария. Добавьте информационное сообщение, если предыдущая версия уже была запущена и прервана.
Изменить 4 (февраль 4,2017): запустить в цикле для нескольких отсчетов без необходимости повторно щелкнуть значок на рабочем столе. т.е. ночь стирки - 16 минут до цикла полоскания (кондиционер для белья), 13 минут до загрузки сушилки, 58 минут до извлечения из сушилки.
Изменить 5 (февраль 11,2017): запишите оставшиеся минуты /tmp/lock-screen-timer-remaining
, Это позволяет другим программам отображать количество времени до блокировки экрана.
Изменить 6 (Авг 07,2017): Изменить /tmp/
рабочий файл для ~/.
для поддержки нескольких пользователей в сети.
РЕДАКТИРОВАТЬ: Обратите внимание, что сценарий зависит от ogg123 для воспроизведения звука напоминания. Эта программа является частью пакета vorbis-tool из хранилища юниверсов. Скрипт, представленный здесь, также пытается использовать скрипт hotplugtv, найденный здесь.
Изменить 8 (ноябрь 12,2017): добавить поддержку WSL (Windows 10 Subsystem для Linux). Обратите внимание, что вам нужно добавить VcXsrv
а также ubuntu-desktop
или же xubuntu-desktop
(предпочтительно) использовать Linux GUI в WSL. Отображение оставшегося времени в системном трее / области уведомлений Windows 10 требует дополнения к тому, что indicator-sysmonitor
делает в Linux. Будущее powershell.exe
Скрипт планируется для поддержки области уведомлений Windows 10.
Изменить 9 (февраль 19,2018): исправить анимацию, пропущенную \
из вращающейся пиццы "|,/,─,\" последовательность.
Используйте gedit для создания скрипта lock-screen-timer
Открой Terminal
используя Ctrl + Alt + T и наберите:
gedit lock-screen-timer
Скопируйте и вставьте код из окна ниже в lock-screen-timer
Вернитесь к этому экрану и скопируйте следующий код, выделив его и нажав Ctrl + C:
#!/bin/bash
# NAME: lock-screen-timer
# PATH: $HOME/bin
# DESC: Lock screen in x minutes
# CALL: Place on Desktop or call from Terminal with "lock-screen-timer 99"
# DATE: Created Nov 19, 2016. Last revision May 30, 2018.
# UPDT: Updated to support WSL (Windows Subsystem for Linux)
# Remove hotplugtv. Replace ogg with paplay.
# Cohesion with multi-timer. New sysmonitor indicator style.
# NOTE: Time defaults to 30 minutes.
# If previous version is sleeping it is killed.
# Zenity is used to pop up entry box to get number of minutes.
# If zenity is closed with X or Cancel, no screen lock timer is launched.
# Pending lock warning displayed on-screen at set intervals.
# Write time remaining to ~/.lock-screen-timer-remaining
MINUTES="$1" # Optional parameter 1 when invoked from terminal.
# if no parameters set default MINUTES to 30
if [ $# == 0 ]; then
MINUTES=30
fi
DEFAULT="$MINUTES" # When looping, minutes count down to zero. Save deafult for subsequent timers.
# Check if lock screen timer already running
pID=$(pgrep -f "${0##*/}") # All PIDs matching lock-screen-timer name
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy ($$$)
if [ "$PREVIOUS" != "" ]; then
kill "$PREVIOUS"
rm ~/.lock-screen-timer-remaining
zenity --info --title="Lock screen timer already running" --text="Previous lock screen timer has been terminated."
fi
# Running under WSL (Windows Subsystem for Linux)?
if cat /proc/version | grep Microsoft; then
WSL_running=true
else
WSL_running=false
fi
while true ; do # loop until cancel
# Get number of minutes until lock from user
MINUTES=$(zenity --entry --title="Lock screen timer" --text="Set number of minutes until lock" --entry-text="$DEFAULT")
RESULT=$? # Zenity return code
if [ $RESULT != 0 ]; then
break ; # break out of timer lock screen loop and end this script.
fi
DEFAULT="$MINUTES" # Save deafult for subsequent timers.
if [[ $MINUTES == 0 ]] || [[ $MINUTES == "" ]]; then
break ; # zero minutes considered cancel.
fi
# Loop for X minutes, testing each minute for alert message.
(( ++MINUTES ))
while (( --MINUTES > 0 )); do
case $MINUTES in 1|2|3|5|10|15|30|45|60|120|480|960|1920)
notify-send --urgency=critical --icon=/usr/share/icons/gnome/256x256/status/appointment-soon.png "Locking screen in ""$MINUTES"" minute(s)." ;
if [[ $WSL_running == true ]]; then
powershell.exe -c '(New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync();'
else
paplay /usr/share/sounds/freedesktop/stereo/complete.oga ;
fi
;;
esac;
# Record number of minutes remaining to file other processes can read.
echo "Lock screen in: $MINUTES Minutes" > ~/.lock-screen-timer-remaining
sleep 60
done
rm ~/.lock-screen-timer-remaining # Remove work file others can see our progress with
if [[ $WSL_running == true ]]; then
# Call lock screen for Windows 10
rundll32.exe user32.dll,LockWorkStation
else
# Call screen saver lock for Ubuntu versions > 14.04.
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
fi
done # End of while loop getting minutes to next lock screen
exit 0 # Closed dialog box or "Cancel" selected.
Затем переключиться обратно на пустую gedit
окно и вставьте код, используя Ctrl + V. Сохраните файл и выйдите из редактора обратно в командную строку.
отметка lock-screen-timer
как исполняемый файл
Теперь нам нужно сделать исполняемый скрипт, набрав:
chmod +x lock-screen-timer
Попробуй это!
Перед вызовом скрипта из графического интерфейса мы вызовем его из терминала, чтобы мы могли увидеть, отображаются ли какие-либо сообщения об ошибках:
~/lock-screen-timer
Вам предлагается ввести количество минут:
Установите желаемое количество минут и нажмите OK, чтобы запустить таймер. Когда осталось 15, 10, 5, 3, 2 и 1 минута, раздается системный звук, и появляется сообщение, сообщающее, когда экран будет заблокирован. После блокировки экрана вам необходимо ввести пароль, чтобы разблокировать экран.
Настроить Nautilus для выполнения скриптов bash
Наутилус определяет, что происходит, когда мы дважды щелкаем на исполняемом скрипте, когда это окно отображения файлов или ссылка на рабочем столе. Нормальное поведение - редактировать скрипт, используя gedit
, Мы хотим изменить это поведение так, чтобы оно выполнялось.
Запустите Nautilus и перейдите в каталог, содержащий lock-screen-timer
, Щелкните левой кнопкой мыши по нему один раз, чтобы выделить его. Наведите указатель мыши на верхнюю строку меню, пока не появится меню "Редактировать файл...", используйте:
- Нажмите
Edit
выпадающее меню - Нажмите
Properties
вариант - Нажмите
Behavior
табуляция - Наблюдайте переключатели под радио
Executable Text Files
- Проверьте переключатель
Run executable text files when they are opened
Создать ссылку на рабочем столе
Из предыдущего раздела lock-screen-timer
все еще имеет фокус. Если нет, перейдите к сценарию и щелкните левой кнопкой мыши по нему один раз, чтобы выделить его. Тогда используйте:
- Щелкните правой кнопкой мыши на файле, и появятся параметры контекстного меню.
- Из меню выберите
Make Link
, - Появляется новый значок с именем
Link to lock-screen-timer
, - Щелкните левой кнопкой мыши на новом значке и перетащите его из Nautilus на рабочий стол.
Теперь вы можете дважды щелкнуть ссылку ярлыка на рабочем столе, и скрипт будет запущен. Появится диалоговое окно для получения количества минут. Две кнопки представлены Отмена и ОК. Если вы нажмете X
закрыть окно - это то же самое, что выбрать " Отмена".
После запуска таймера и двойного щелчка по нему первая запущенная копия "убивается". Теперь вы можете начать новый отсчет блокировки экрана или нажать кнопку " Отмена", чтобы не было обратного отсчета.
Отображение оставшегося времени в области systray / уведомлений
Когда таймер блокировки экрана работает, он записывает, сколько минут осталось в файле ~/.lock-screen-timer-remaining
, Вы можете посмотреть на этот файл с watch
введите команду или отобразите ее на панели задач / панели приложений Ubuntu, как показано в верхней части этого ответа. Чтобы отобразить оставшееся время в области уведомлений, следуйте инструкциям в этом разделе вопросов и ответов: ( Может ли BASH отображаться в systray в качестве индикатора приложения?).
Вы можете использовать что-то вроде Mkahawa, которое используется для администрирования интернет-кафе.