Как заблокировать / разблокировать экран с помощью док-станции iPhone и USB?

Мой iPhone подключен через USB к моему рабочему столу Ubuntu через док-станцию. Как настроить его таким образом, чтобы при подключении телефона экран был разблокирован, а при его удалении он блокировался?

7
задан 17 December 2010 в 14:51

2 ответа

еще более простой сценарий

используйте lsusb для получения идентификатора устройства USB-устройства, которое Вы хотите использовать в качестве своего "ключа" и заменить его в этом сценарии (названный 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

затем просто крон это для выполнения каждых нескольких минут... этот способ, которым это запустит снова, если он остановит по некоторым причинам.... сценарий, должен работать непрерывно, но выйдет, если крон пытается выполнить вторую копию. Чтобы иметь крон влияют на приложение для GUI, как экранная заставка, необходимо сказать это, какой дисплей использовать, так помещает это в crontab (очевидно, устанавливает путь правильно),

* * * * * export DISPLAY=:0 && /home/someuser/checkKey.sh
0
ответ дан 17 December 2010 в 14:51

Здесь нашли отличный сценарий , любезно предоставленный Эваном Болдтом, как это сделать. Спасибо, Эван!

Сначала узнайте идентификатор вашего устройства, используя lsusb

Создайте скрипт под вашей домашней директорией (давайте воспользуемся / home / me /iPhoneLock.sh для этого примера), который выглядит примерно так:

#!/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

Далее, отредактируйте ваш crontab:

crontab -e

Наконец, настройте его так, чтобы он запускал каждый минута:

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

Примечание о предупреждении: Конечно, это означает, что любой, у кого есть телефон, сможет разблокировать ваш экран. Приятным улучшением будет разблокировка экрана только в том случае, если телефон разблокирован.

Это, конечно, применимо к любому USB-устройству.

Сценарий лицензирован в соответствии с CC-GNU GPL версии 2.0 или более поздней.

0
ответ дан 17 December 2010 в 14:51

Другие вопросы по тегам:

Похожие вопросы: