Jei dirbate nešiojamuoju kompiuteriu ir naudojate išorinę klaviatūrą ar pelę – labai tikėtina, kad jūs turite potencialią problemą.
Sąlygos
Jūs neturite problemos bet kuriuo iš šių atvejų:
- kompiuteris nustatytas suspend‘inti arba hibernate‘inti kai yra uždaromas
- kompiuteris padaro Lock Screen kai yra uždaromas
- esant kitiems panašiems nustatymams
Jūs turite problemą, jei pas jus nustatymas yra kaip pas mane:
- užvožus ekraną kompiuteris nemigdomas, nerakinamas – tik atjungiamas monitoriaus maitinimas
- atvožus – kompiuteris iš karto yra aktyvus
Pas mane yra būtent tokie nustatymai, nes:
- nueinam nuo kompiuterio su reikalu (arbatos, nu) – užvožiam (gi taupom elektrą, saugom nuo trupinių ir pan.)
- sugrįžtam prie kompiuterio – atvožiam ir barškinam toliau
Eksperimentas
Atlikite mažytį eksperimentą:
- Paleiskite tekstinį redaktorių.
- Uždarykite nešiojamojo kompiuterio ekraną.
- Brūkštelėkit (tiesiogine prasme) klavišais išorinėje klaviatūroje.
- Atidarykite ekraną.
- Vualia, kai saka chrancūzai: tekstiniame redaktoriuje puikuojasi jūsų rašliava.
Problema
Dirbate prie kelių tūkstančių eilučių programinio kodo. Užvožiat ekraną ir einat į virtuvę arbatos. Atbėgęs katinas užšoka ant klaviatūros ir paspaudžia Ctrl +A , Del , … (toliau ką nors baisaus įrašykit patys Ctrl +S , Ctrl +Q , …)
Sprendimas, kuris man netinka: nueinant nuo kompiuterio paspausti Win +L (pas mane – Lock Screen). Netinka todėl, kad atidarius kompiuterį bereikalingai gaištamas laikas atrakinimo slaptažodžiui (pramoninių špijonų mano darbo vietoje nėra).
Sprendimas, kuris man tiktų (tiksliau „tinka“ – realizaciją žr. žemiau): užvožiam – blokuoja, atvožiam – dirbam toliau. Katinas ilsisi.
Sprendimas
Įrenginių blokavimui naudosime xtrlock.
xtrlock locks the X server till the user enters their password at the keyboard.
While xtrlock is running, the mouse and keyboard are grabbed and the mouse cursor becomes a padlock. Output displayed by X programs, and windows put up by new X clients, continue to be visible, and any new output is displayed normally.
Žinau, žinau – programėlė reikalauja slaptažodžio atblokavimui. Bet mes tai išspręsime.
Diegiam xtrlock (pas ką jau įdiegta – nieko baisaus – atnaujinsim):
$ sudo apt-get install xtrlock
Surandam, kas vykdoma uždarant / atidarant ekraną:
$ cat /etc/acpi/events/lidbtn
# /etc/acpi/events/lidbtn # Called when the user closes or opens the lid event=button[ /]lid action=/etc/acpi/lid.sh
Redaguojam skriptą savo mėgiamam redaktoriuje:
$ sudo vim /etc/acpi/lid.sh
Neišsigąskite – į originalų kodą pridėtos tik dvi eilutės (paryškintos):
#!/bin/bash # TODO: Change the above to /bin/sh test -f /usr/share/acpi-support/state-funcs || exit 0 . /usr/share/acpi-support/power-funcs . /usr/share/acpi-support/policy-funcs . /etc/default/acpi-support [ -x /etc/acpi/local/lid.sh.pre ] && /etc/acpi/local/lid.sh.pre if [ `CheckPolicy` = 0 ]; then exit; fi grep -q closed /proc/acpi/button/lid/*/state if [ $? = 0 ] then for x in /tmp/.X11-unix/*; do displaynum=`echo $x | sed s#/tmp/.X11-unix/X##` getXuser; if [ x"$XAUTHORITY" != x"" ]; then export DISPLAY=":$displaynum" . /usr/share/acpi-support/screenblank # blokuojam klaviatūrą ir pelę xtrlock & fi done else #atblokuojam klaviatūrą ir pelę killall xtrlock for x in /tmp/.X11-unix/*; do displaynum=`echo $x | sed s#/tmp/.X11-unix/X##` getXuser; if [ x"$XAUTHORITY" != x"" ]; then export DISPLAY=":$displaynum" grep -q off-line /proc/acpi/ac_adapter/*/state if [ $? = 1 ] then if pidof xscreensaver > /dev/null; then su $user -c "xscreensaver-command -unthrottle" fi fi if [ x$RADEON_LIGHT = xtrue ]; then [ -x /usr/sbin/radeontool ] && radeontool light on fi if [ `pidof xscreensaver` ]; then su $user -c "xscreensaver-command -deactivate" fi su $user -c "xset dpms force on" fi done fi [ -x /etc/acpi/local/lid.sh.post ] && /etc/acpi/local/lid.sh.post
Manau viskas aišku: uždarius ekraną bus paleista xtrlock & komanda, atidarius – killall xtrlock . Galime pakartoti eksperimentą, aprašytą viršuje – turi būti wszystko w porządku.