Как я могу программно заблокировать пользовательский ввод на определенное время?
Как человек, работающий в области компьютерных наук, работающий в автономном режиме, чтобы избежать фейсбука и тому подобного, не всегда (то есть вряд ли когда-либо) возможен для меня, поскольку я в основном должен быть в сети, чтобы работать.
Я пробовал пиявку и тому подобное, но проблема в том, что в какой-то момент я начинаю создавать системы для себя, чтобы взломать, что бессмысленно, если у вас есть root.
Я бы очень хотел попробовать метод, описанный здесь. (Короткая версия: перезагружайте компьютер каждый раз, когда завершаете задачу или вам это надоедает)
В отличие от автора этого блога, моя работа в основном выполняется не в сеансах экрана, а в IDE и других не слишком быстрых для запуска вещах, то есть полная перезагрузка, включая загрузку всех моих программ, займет время. Итак, вопрос в следующем:
Как я могу заблокировать все пользовательские вводы и предпочтительно очистить экран на заданный промежуток времени?
Тогда идея будет заключаться в том, чтобы иметь комбинацию клавиш для активации скрипта / программы (которая, вероятно, также должна иметь root, я думаю?)
1 ответ
Итак, вы хотите относиться к себе, как к 16-летнему мальчику, не так ли? Хорошо, это должно быть хорошей отправной точкой...
#> cat force-screensaver.sh
#!/bin/bash
secondstowait=$1
if [ "x$1" == "x" ] ; then
echo
echo "Please insert the number of seconds you want to wait"
echo
exit
fi
hourstowait=$(($secondstowait / 3600))
minstowait=$((($secondstowait / 60) - ($hourstowait * 60)))
secstowait=$(($secondstowait - $minstowait * 60 - $hourstowait * 3600))
starth=`date +"%H"`
startm=`date +"%M"`
starts=`date +"%S"`
ends=0
endm=0
endh=0
ends=$(($ends + $starts + $secstowait))
if [ $ends -gt 59 ] ; then
ends=$(($ends - 60))
endm=$(($endm + 1))
fi
endm=$(($endm + $startm + $minstowait))
if [ $endm -gt 59 ] ; then
endm=$(($endm - 60))
endh=$(($endh + 1))
fi
endh=$(($endh + $starth + $hourstowait))
echo
echo "Will wait for $hourstowait hours, $minstowait minutes and $secstowait seconds"
echo
printf "Starting at %02d:%02d:%02d - stopping at %02d:%02d:%02d\n" "$starth" "$startm" "$starts" "$endh" "$endm" "$ends"
while (true)
do
currh=`date +"%H"`
currm=`date +"%M"`
currs=`date +"%S"`
#echo "Running..."
gnome-screensaver-command -a
#sleep 5
if [ $currh -ge $endh ] && [ $currm -ge $endm ] && [ $currs -ge $ends ] ; then
echo
echo Exiting...
echo
gnome-screensaver-command -d
exit
fi
done
Вы можете назвать это, передавая количество секунд, которое вы хотите замучить себя (например, force-screensaver.sh 60
это максимум, что я смог выдержать). Тогда вам просто нужно привязать его к сочетанию клавиш, и все готово.
Приятной боли:P