Приложение, которое блокирует экран через определенное время для Ubuntu

10

Есть ли приложение для Ubuntu, которое блокирует компьютер через определенное время (например, 30 минут). Мне нужно, чтобы дети ограничивали время просмотра мультфильмов. Например, 30 минут просмотра, а затем блокировка компьютера, требующая, чтобы родитель разблокировал его.

Для Windows я использовал приложение Eyes Relax, оно показывает черный экран и зеленую индикатор выполнения (осталось время для разблокировки ПК) и требует пароль для отмены блокировки.

Дмитрий
источник
Просто любопытно, сработал ли какой-нибудь из ответов ниже?
WinEunuuchs2Unix
Я проверю их, когда у меня будет возможность, и отмечу ответ
Дмитрий
Я только что обнаружил похожие Вопросы и Ответы, которые могут быть полезны 1) askubuntu.com/questions/715721/… 2) askubuntu.com/questions/68918/… и 3) askubuntu.com/questions/696620/…
WinEunuuchs2Unix

Ответы:

15

Обновление от 4 июня 2018 года

Была создана намного лучшая программа под названием multi-timer: таймер для одновременной установки различных сигналов тревоги.

Таймер блокировки экрана

systray.gif

Создайте свой собственный таймер блокировки экрана вместо сторонних приложений

Хотя для этого есть сторонние приложения, вы можете создавать свои собственные. Краткое изложение шагов:

  • Используйте 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 из хранилища юниверсов. Скрипт, представленный здесь, также пытается использовать скрипт 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 на рабочий стол.

Теперь вы можете дважды щелкнуть ссылку ярлыка на рабочем столе, и скрипт будет запущен. Появится диалоговое окно для получения количества минут. Две кнопки представлены Cancelи OK. Если вы нажмете, Xчтобы закрыть окно, оно будет таким же, как при выборе Cancel.

После запуска таймера и двойного щелчка по нему первая запущенная копия «убивается». Теперь вы можете начать новый отсчет блокировки скрена или нажать, Cancelчтобы не было обратного отсчета.

Отображение оставшегося времени в области systray / уведомлений

Во время работы таймера блокировки экрана он записывает, сколько минут осталось в файле ~/.lock-screen-timer-remaining. Вы можете просмотреть этот файл с помощью watchкоманды или отобразить его на панели задач / панели приложений Ubuntu, как показано в верхней части этого ответа. Чтобы отобразить оставшееся время в области уведомлений, следуйте инструкциям в этом разделе вопросов и ответов: ( Может ли BASH отображаться в systray в качестве индикатора приложения? ).

WinEunuuchs2Unix
источник
kids-tv-timer 1 выдает kids-tv-timer: команда не найдена. Есть ли способ сделать ярлык на рабочем столе или в панели задач? Чтобы просто нажать на него и активировать приложение?
Дмитрий
файл есть, если я дважды щелкну по нему, он откроется в gedit. Я выполнил все ваши команды
Дмитрий
Я изменил последнюю строку на ~/kids-tv-timer 1. Извините, путь отсутствовал впереди. Попробуй это.
WinEunuuchs2Unix
да, это помогло Но вы не ответили на второй вопрос? :)
Дмитрий
@geotavros Отображение прогресса поверх видео потребует совершенно другого подхода, чем sleepкоманда, используемая в kids-tv-timerскрипте bash. Можно было бы создать цикл, в котором каждую минуту над видео появлялось всплывающее уведомление, длившееся около 10 секунд, с надписью «осталось 29 минут», затем «осталось 28 минут» и т. Д. Однако для переопределения вам все равно придется kids-tv-timerпрервите видео, убейте и перезапустите его с новым выделением времени. Проще сказать, что время истекло, вход в систему и перезапуск. kids-tv-timerДайте мне знать.
WinEunuuchs2Unix
1

Вы можете использовать что-то вроде Mkahawa , которое используется для администрирования интернет-кафе.

Крис Матенерс
источник
1
Это выглядит слишком сложно. Там сервер и клиент. Как мне это установить?
Дмитрий