web-dev-qa-db-ja.com

iPhoneとUSBドックを使用して画面をロック/ロック解除するにはどうすればよいですか?

私のiPhoneはUSB経由でドック経由でUbuntuデスクトップに接続されています。電話をドッキングすると画面のロックが解除され、取り外すとロックされるように設定するにはどうすればよいですか?

7
Roman

優れたスクリプトを見つけました こちら これを行う方法に関するEvan Boldtの好意による。エヴァンに感謝します!

最初にlsusbを使用してデバイスのIDを見つけます

次のようなスクリプトをホームディレクトリの下に作成します(この例では/ 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以降でライセンスされています。

6
Roman

さらにシンプルなスクリプト

lsusbを使用して、「キー」として使用するusbデバイスのデバイスIDを取得し、このスクリプト(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

cronを実行すると、数分ごとに実行されます。何らかの理由で停止した場合は、この方法で再び起動します。スクリーンセーバーなどのcronをGUIアプリに影響を与えるには、使用するディスプレイを指定する必要があるため、これをcrontabに配置します(明らかにパスを適切に設定します)

* * * * * export DISPLAY=:0 && /home/someuser/checkKey.sh
0
user10985