#1 Le 30/06/2019, à 21:41
- Pending...
[Ubuntu] Savoir si le screensaver est activé en ligne de commande
Bonsoir,
Je souhaiterais savoir s'il existe une commande pour savoir si l'économisateur d'écran est activé (même s'il est activé par défaut).
Merci d'avance.
Ubuntu / Mint / Windows 10
Hors ligne
#2 Le 01/07/2019, à 15:17
- LeoMajor
Re : [Ubuntu] Savoir si le screensaver est activé en ligne de commande
bonjour,
quel screensaver, utilises-tu ?
je vois 2 approches mais cela dépend du but final, ...
A/ variante avec pam, et pam_exec pour type /etc/pam.d/xscreensaver
B/ variante avec inotify . appeler un script lorsque l' évènement est détecté, qui correspondra à l'exécutable de l'économiseur, ou un *.lock qu'il produit ? (à vérifier) (faire un service avec iwatch, par exemple)
C ...
Dernière modification par LeoMajor (Le 01/07/2019, à 15:22)
Hors ligne
#3 Le 02/07/2019, à 16:10
- LeoMajor
Re : [Ubuntu] Savoir si le screensaver est activé en ligne de commande
cela a l'air de fonctionner pour xscreensaver . Il faut sélectionner "verouillage de l'écran" pour que pam soit sollicité.
/etc/pam.d/xscreensaver
#
# /etc/pam.d/xscreensaver - PAM behavior for xscreensaver
#
#ajout
#ok account optional pam_exec.so debug log=/tmp/pam_xscreensaver.log /usr/local/bin/pam_xscreensaver
auth sufficient pam_exec.so debug log=/tmp/pam_xscreensaver.log /usr/local/bin/pam_xscreensaver
## -----------
#@include common-auth
#@include common-account
account optional ... conserve l'authentification
auth sufficient ... courcircuite l'authentification, et rend la main après avoir bougé la souris par exemple.
/usr/local/bin/pam_xscreensaver
#!/bin/bash
declare -a aexporter
active_session=$(loginctl --no-pager --no-legend list-sessions | awk '$2>=1000 {cmd="loginctl -p State -p Type show-session "$1; \
while (cmd|getline tmp)if(tmp~/active|x11/){sess[$1]++}; close(cmd)}; END {for (s in sess)if(sess[s]==2)print s}')
if [ -n "$active_session" ]; then
active_userid=$(loginctl -p User show-session "$active_session" | cut -d= -f2)
#active_pid=$(pgrep -u "$active_userid" gnome-session) # lightdm
active_pid=$(pgrep -u "$active_userid" gnome-session) #gdm3
aexporter=($(awk '/^(DBUS_SESSION_BUS_ADDRESS|DISPLAY|XAUTHORITY)/ ' < <(strings /proc/${active_pid}/environ)))
export "${aexporter[@]}"
notify-send "chocolat"
else
echo "machine en veille ou ssh ou execution d'application graphique interdite par le contexte ..." &>/dev/null; exit
fi
echo "$(date):chocolat" >> /tmp/chocolat.log
Hors ligne
#4 Le 25/07/2019, à 23:20
- Pending...
Re : [Ubuntu] Savoir si le screensaver est activé en ligne de commande
Désolé, j'avais mis tout ça de coté. Du coup, j'ai trouvé ça :
gsettings get org.gnome.desktop.session idle-delay | awk '{print $2}'
Pour savoir au bout de combien de temps l'écran se met en veille, et
gsettings get org.gnome.desktop.lockdown disable-lock-screen
Pour savoir si la session se verrouille à l'écran de veille avec un mot de passe ("true" = non). Il y en a un autre pour savoir le temps entre le début de l'écran de veille et le verrouillage de l'écran par mot de passe, mais je n'en ai pas besoin.
Du coup, si je veux avoir si l'écran de verrouillage est activé, ça me donne un truc comme ça :
if [ $(gsettings get org.gnome.desktop.session idle-delay | awk '{print $2}') -gt 0 ] && [ $(gsettings get org.gnome.desktop.lockdown disable-lock-screen) == "true" ]; then echo "verrouillage activé"; fi
Dernière modification par Pending... (Le 25/07/2019, à 23:28)
Ubuntu / Mint / Windows 10
Hors ligne