Обновление от 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 из хранилища юниверсов. Скрипт, представленный здесь, также пытается использовать скрипт 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 на рабочий стол.
Теперь вы можете дважды щелкнуть ссылку ярлыка на рабочем столе, и скрипт будет запущен. Появится диалоговое окно для получения количества минут. Две кнопки представлены Cancelи OK. Если вы нажмете, X
чтобы закрыть окно, оно будет таким же, как при выборе Cancel.
После запуска таймера и двойного щелчка по нему первая запущенная копия «убивается». Теперь вы можете начать новый отсчет блокировки скрена или нажать, Cancelчтобы не было обратного отсчета.
Отображение оставшегося времени в области systray / уведомлений
Во время работы таймера блокировки экрана он записывает, сколько минут осталось в файле ~/.lock-screen-timer-remaining
. Вы можете просмотреть этот файл с помощью watch
команды или отобразить его на панели задач / панели приложений Ubuntu, как показано в верхней части этого ответа. Чтобы отобразить оставшееся время в области уведомлений, следуйте инструкциям в этом разделе вопросов и ответов: ( Может ли BASH отображаться в systray в качестве индикатора приложения? ).