我的 iPhone 通过 USB 连接到我的 Ubuntu 桌面,通过底座。如何配置它,以便当我将手机插入底座时屏幕解锁,而当我将其取出时屏幕锁定?
答案1
找到一个优秀的脚本这里感谢 Evan Boldt 提供的有关如何执行此操作的信息。谢谢 Evan!
首先使用以下方法找出你的设备 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通用公共许可协议2.0 或更高版本。
答案2
更简单的脚本
使用 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