私のiPhoneはUSB経由でドック経由でUbuntuデスクトップに接続されています。電話をドッキングすると画面のロックが解除され、取り外すとロックされるように設定するにはどうすればよいですか?
優れたスクリプトを見つけました こちら これを行う方法に関する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以降でライセンスされています。
さらにシンプルなスクリプト
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