"Xfce typing break" - перерыв в работе | ч.2
Собственно сам скрипт, с иконкой в области уведомлений, сделанной с помощью yad (аналога zenity). Левый клик мышки - команда сделать перерыв немедленно. Ну то есть не совсем вот прямо щас, по умолчанию скринсейвер будет запущен в пределах 30 секунд после клика.
Правый клик не используется, а средний просто прибьет иконку, но процесс останется запущен (!), только уже без индикатора. Наверно такое поведение можно изменить, но мне лениво.
Правый клик не используется, а средний просто прибьет иконку, но процесс останется запущен (!), только уже без индикатора. Наверно такое поведение можно изменить, но мне лениво.
- #!/bin/bash
- # Xbreak - Xfce Typing Break
- gnomesu -c "physlock -l" || exit
- ### Параметры ###
- let idle=1*60*1000 # const
- let ptime=10*60 # время переыва, сек
- let wtime=60*60 # время работы, сек
- let ntime=2 # время до оповещения о перерыве, МИН
- let etime=$wtime-$ntime*60
- a=30 # const
- ### Иконка ###
- LOCK=~/.xbreak_state
- make_break () {
- echo 1 > ~/.xbreak_state
- echo Manual lock
- }
- export -f make_break
- yad --notification --image="system-lock-screen" --text="Xbreak running" --command="bash -c make_break" &
- screensaver() {
- xlock -mode clock -size 650 -cpasswd 65xps0fiOLxT6
- # xlock -mode dclock -led
- # openssl passwd -crypt <пароль>
- }
- warn() {
- notify-send 'Внимание!' "До перерыва осталось меньше $ntime минут"
- }
- while true
- do
- killall xlock
- i=0
- echo 0 > $LOCK
- while [ $i -lt $wtime ]
- do
- if [ $(cat $LOCK) = 1 ] # Блокировать сейчас
- then break
- fi
- sleep $a
- if [ $(xprintidle) -lt $idle ] # если клавиатура используется
- then
- let i=$i+$a
- fi
- if [ $i -gt $etime ]
- then warn
- fi
- done
- (
- screensaver
- ) &
- sleep $ptime # Перерыв
- done
версия 0.2, которая вроде бы работает.
версия 0.2.1:
warn внутрь предыдущего цикла, а то зверушка задолбает напоминаниями
Отправить комментарий