Мой iPhone подключен через USB к моему рабочему столу Ubuntu через док-станцию. Как настроить его таким образом, чтобы при подключении телефона экран был разблокирован, а при его удалении он блокировался?
еще более простой сценарий
используйте 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
Здесь нашли отличный сценарий , любезно предоставленный Эваном Болдтом, как это сделать. Спасибо, Эван!
Сначала узнайте идентификатор вашего устройства, используя 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 или более поздней.