Como faço para bloquear / desbloquear minha tela usando meu iPhone e dock USB?

6

Meu iPhone está conectado via USB ao meu desktop Ubuntu por meio de um dock. Como faço para configurá-lo para que, quando eu conectar meu telefone, a tela esteja desbloqueada e, ao removê-lo, bloqueie-a?

    
por Roman 17.12.2010 / 10:22

2 respostas

5

Encontrou um excelente script aqui cortesia de Evan Boldt sobre como fazer isso. Obrigado Evan!

Primeiro, descobrir o id do seu dispositivo usando lsusb

A criação de um script em seu diretório home (vamos usar /home/me/iPhoneLock.sh para este exemplo) que se parece com isso:

#!/bin/bash

#Replace with the ID of your USB device
id="ID ffff:1234 Apple, Inc. iPhone 3G"
serial="12345"

#runs every 2 seconds
for ((i=0; i<=30; i++))
do
if [ -z "'lsusb -v 2> /dev/null | grep "$serial"'" ]
then

    echo "Device is NOT plugged in"

    if [ -n "'DISPLAY=:0 gnome-screensaver-command --query | grep "is active"'" ]
    then
    if [ -e /tmp/autoUnlock.lock ]
    then
    #stop locking the screen
    rm /tmp/autoUnlock.lock

fi

elif [ -e /tmp/autoUnlock.lock ]
then

    DISPLAY=:0 notify-send -t 5000 --icon=dialog-info "iPhone Disconnected" "Locking     screen"
    #lock the desktop
    DISPLAY=:0 gnome-screensaver-command --lock

    rm /tmp/autoUnlock.lock

fi
else

    echo "iPhone IS plugged in"
    if [ ! -e /tmp/autoUnlock.lock ]
    then
    DISPLAY=:0 gnome-screensaver-command --deactivate
    DISPLAY=:0 notify-send -t 5000 --icon=dialog-info "iPhone Connected" "Welcome     Back!"
    touch /tmp/autoUnlock.lock

    fi

fi
sleep 2
done

Em seguida, edite seu crontab:

crontab -e

Por fim, configure-o para que seja executado a cada minuto:

* * * * * bash /home/username/bin/autoUnlock & >/dev/null 2>&1

Nota de aviso: Claro que isto significa que qualquer pessoa com o seu telemóvel poderá desbloquear o seu ecrã. Uma boa melhoria seria apenas desbloquear a tela se o seu telefone estivesse desbloqueado.

Isso, claro, é aplicável a qualquer dispositivo usb.

O script está licenciado sob a CC-GNU GPL versão 2.0 ou posterior.

    
por Roman 17.12.2010 / 10:38
0

script ainda mais simples

use o lsusb para obter o id do dispositivo usb que você deseja usar como sua "chave" e substitua-o neste script (chamado checkKey.sh)

#!/bin/sh
key="0a12:0001" #ID of the USB device to use as a "key"
if [ 'fuser $0|wc -w' -gt "1" ];then  exit; fi  # exit if already running

while [ 1 -gt 0 ];  do
    device=$(lsusb | grep $key) # is "key" connected?
    ss_state=$(gnome-screensaver-command -q | grep inactive) #is screen locked?
    if [ -z "$device" ]; then
        gnome-screensaver-command -l; #no key, lock the screen
    else
        if [ -z "$ss_state" ]; then
                        #key present & screen locked so unlock
            gnome-screensaver-command -d; 
        else
                        #key present, not locked, just poke it
            gnome-screensaver-command -p;
        fi      
    fi
    sleep 10; #sleep for a few seconds before looking again
done

então apenas cron isto para rodar a cada poucos minutos ... desta forma ele irá iniciar novamente se ele parar por algum motivo ... o script deve rodar continuamente, mas irá sair se o cron tentar rodar uma segunda cópia. Para que o cron afete um aplicativo GUI, como o protetor de tela, você deve informar qual display usar, então coloque isso no seu crontab (obviamente configure o caminho corretamente)

* * * * * export DISPLAY=:0 && /home/someuser/checkKey.sh
    
por user10985 17.02.2011 / 04:07