Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/06/2019, à 22: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, à 16: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, à 16:22)

Hors ligne

#3 Le 02/07/2019, à 17: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 26/07/2019, à 00: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 26/07/2019, à 00:28)


Ubuntu / Mint / Windows 10

Hors ligne