Mar*_*ont 5 wireless lock-screen
如果我连接到我的家庭 wifi 网络,当我从暂停状态或 X 分钟不活动后恢复时,我不希望有一个锁定屏幕。
如果我没有连接到任何 wifi 网络或 wifi 网络的名称与我的家庭网络不同,我希望锁定屏幕处于活动状态。
我怎样才能做到这一点?
小智 4
您可以使用这个 shell 脚本。检查此项以获取您的 WiFi 信息。
#!/bin/sh
trusted_essid="trusted-wifi-name"
while :
do
current_essid=$(iwgetid -r)
if [ "$trusted_essid" = "$current_essid" ]
then
gsettings set org.gnome.desktop.lockdown disable-lock-screen true
echo 1
else
gsettings set org.gnome.desktop.lockdown disable-lock-screen false
echo 2
fi
sleep 60
done
Run Code Online (Sandbox Code Playgroud)
以 root 身份编辑此文件:
sudo gedit /etc/network/interfaces
Run Code Online (Sandbox Code Playgroud)
在 wlan0(或您的 Wifi 接口)下添加ls /sys/class/net | grep -o "wl[^\t]\+":
post-up sh /path/to/wifi-smartlock.sh
Run Code Online (Sandbox Code Playgroud)
当我连接到家庭网络时,我运行一个脚本来向 gnone-screensaver 发送解锁命令。这是我想出的:
文件/etc/network/if-up.d/smart-unlock
#!/bin/sh
runuser -l marc -c '/path/to/smart_unlock.py'
Run Code Online (Sandbox Code Playgroud)
将 marc 替换为当前的$USER.
文件/path/to/smart_unlock.py
import os
ssid = 'trusted-wifi-name'
if os.system("/sbin/iwgetid | /bin/grep %s" % ssid) == 0:
for j in range(2):
os.system(
". ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-%s && "
"export DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID && "
"dbus-send --session --dest=org.gnome.ScreenSaver --type=method_call --print-reply --reply-timeout=20000 /org/gnome/ScreenSaver org.gnome.ScreenSaver.SetActive boolean:false" % j)
Run Code Online (Sandbox Code Playgroud)