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