Если я подключен к своей домашней сети Wi-Fi, я не хочу иметь экран блокировки, когда я возобновляюсь от, приостанавливают или после X минут неактивности.
Если я не подключен ни к какой сети Wi-Fi, или название сети Wi-Fi отличается, чем моя домашняя сеть, я хочу, чтобы экран блокировки был активен.
Как я могу сделать это?
#!/bin/sh
essid="name-here"
while :
do
ausgabe=$(iwgetid -r)
if [ "$essid" = "$ausgabe" ]
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
Попытка это:
sudo gedit /etc/network/interfaces
добавляют под wlan0
post-up sh /path/to/script
Когда я соединяюсь со своей домашней сетью, я запускаю скрипт для отправки разблокировать команды в gnone-экранную-заставку. Вот то, что я придумал:
Файл /path/to/smart_unlock.py
import os
ssid = '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)
Файла /etc/network/if-up.d/smart-unlock
#!/bin/sh
runuser -l marc -c '/path/to/smart_unlock.py'
Для тех, кто использует Cinnamon, я подготовил решение здесь:
https://github.com/cookiebinary1/trusted-wifi-area
Основной сценарий bash (дополнительную информацию см. на github):
#!/bin/sh
current_essid=""
config_file=~/.trusted-wifi-area
while :
do
new_essid=$(iwgetid -r)
if [ "$new_essid" = "" ]
then
new_essid="no-wifi"
fi
if [ "$new_essid" != "$current_essid" ]
then
current_essid="$new_essid"
echo "New wifi: $new_essid"
killall cinnamon-screensaver
sleep 5s
if grep -q "$new_essid" "$config_file"; then
cinnamon-screensaver --disable-locking & echo "Restart screensaver without locking..."
else
cinnamon-screensaver & echo "Restart screensaver with locking..."
fi
fi
sleep 1s
done