Додаток, який заблокує екран через встановлений час для 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/робочий файл ~/.на підтримку декількох користувачів у мережі.

EDIT: Зауважте, що сценарій залежить від ogg123 для відтворення звуку нагадування. Ця програма є частиною пакету інструментів vorbis із сховища Всесвіту. Представлений тут сценарій також намагається використовувати скрипт hotplugtv, знайдений тут.

Редагування 8 (12.11.2017): додайте підтримку WSL (підсистема Windows 10 для 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

Вам буде запропоновано кількість хвилин:

Таймер блокування екрана

Встановіть потрібну кількість хвилин і натисніть кнопку ОК, щоб запустити таймер. Коли залишилося 15, 10, 5, 3, 2 та 1 хвилину (ів), системний звук лунає, і на екрані з'являється міхур із повідомленням, коли екран буде заблокований. Після блокування екрана вам потрібно ввести пароль, щоб розблокувати екран.

Налаштуйте Nautilus для виконання скриптів bash

Nautilus визначає, що відбувається, коли ми двічі клацнемо виконуваний сценарій, коли це вікно відображення файлів або посилання на робочий стіл. Нормальна поведінка - це редагувати сценарій за допомогою 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для відліку не.

Час відображення, що залишився в області систрай / сповіщень

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


kids-tv-timer 1 дає kids-tv-timer: команда не знайдена. Чи є спосіб зробити ярлик на робочому столі або на панелі завдань? Щоб просто натиснути його та активувати додаток?
Дмитро

файл є, якщо я двічі клацну його, він відкриється в gedit. Я виконав усі ваші команди
Дмитро

Я змінив останній рядок на ~/kids-tv-timer 1. Вибачте, шлях пропав спереду. Спробуйте це.
WinEunuuchs2Unix

так, це допомогло. Але ти не відповів на 2-е запитання? :)
Дмитро

@geotavros Дисплей прогрес, який сидить над відео, вимагає зовсім іншого підходу, ніж sleepкоманда, що використовується в kids-tv-timerскрипті bash. Можна було б створити цикл, де щохвилини міхур сповіщень, який триває близько 10 секунд, вискакує над відеозаписом із повідомленням: "Залишилося 29 хвилин", потім "Залишилося 28 хвилин" і т. Д. перервати відео, вбити kids-tv-timerта перезапустити його з новим виділенням часу. Майже простіше дозволити закінченню часу, увійти та перезапустити. kids-tv-timerПовідомте мене.
WinEunuuchs2Unix

1

Можливо, ви хочете скористатися чимось на зразок Mkahawa , яке використовується для адміністрування Інтернет-кафе.


1
Це виглядає занадто складно. Є сервер і клієнт. Як це встановити?
Дмитро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.