Приложение, которое блокирует экран через определенное количество времени для 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, Щелкните левой кнопкой мыши по нему один раз, чтобы выделить его. Наведите указатель мыши на верхнюю строку меню, пока не появится меню "Редактировать файл...", используйте:

  1. Нажмите Edit выпадающее меню
  2. Нажмите Properties вариант
  3. Нажмите Behavior табуляция
  4. Наблюдайте переключатели под радио Executable Text Files
  5. Проверьте переключатель 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, которое используется для администрирования интернет-кафе.

Другие вопросы по тегам