web-dev-qa-db-fra.com

Comment exécuter un script lorsque le mot de passe est entré à l'écran de verrouillage?

Pour activer/désactiver le pavé tactile de mon ordinateur portable en fonction de la souris USB connectée, j'ai utilisé le pavé tactile-indicateur, qui exécute un démon pour surveiller les périphériques connectés et prendre les mesures appropriées. Lorsque j'envoie mon portable en veille puis que je débranche ma souris, le pavé tactile est désactivé au réveil; je dois donc connecter-déconnecter la souris pour l'activer! J'ai cherché le problème sur ce forum et les deux solutions trouvées (ajout de script dans /etc/pm/sleep.d ou /usr/lib/pm-utils/sleep.d) ne fonctionnaient pas! J'ai mis en place une question pour le résoudre, mais après tout, même lorsque nous avons retravaillé les règles en utilisant udev au lieu de touchpad-indicateur, le problème persiste!

Je tiens à préciser: si le pavé tactile était désactivé au niveau système (c'est-à-dire désactivé avant même de vous connecter, et que le script se trouverait dans rc.local, ce que j'ai cependant essayé et que cela n'a pas fonctionné), en mettant des scripts dans/etc/pm et usr/lib/pm-utils peuvent fonctionner .

Mais il est désactivé au niveau de la session ou quel que soit le niveau auquel udev s’applique. Pouvez-vous s'il vous plaît me dire où mettre les scripts qui seront exécutés lorsque je saisis le mot de passe? PAS SE CONNECTER, MAIS ENTRER MOT DE PASSE par ex. après le réveil.

Mise à jour: @terdon Vous ne l'avez pas bien compris. Je n'ai même pas activé xscreensaver, je doute qu'il soit même installé. Vous voyez, parce que mon compte a un mot de passe, si je clique sur "Déconnexion" ou sur "Changer d'utilisateur" OR MODE SOMMEIL, je devrai ensuite entrer mon mot de passe et cela n'a rien à voir avec xscreensaver. OR TOUT ÉCONOMISEUR D'ÉCRAN QUE JE NE LES DISPOSE PAS.

J'ai essayé ce que vous aviez suggéré avant de poser cette question et cela n'a pas fonctionné.

Mise à jour 2: OK, après une enquête, je peux dire qu'il s'agit d'un problème spécifique à Lubuntu. Je travaille maintenant sur "befriending" lightdm (qui, je suppose, s'applique à un niveau autre que udev) et à udev. Toute personne ayant une expérience de lighdm est appréciée.

Mise à jour 3: Merci à buntu Wiki J'ai (correctement?) Déterminé où placer l'appel de mon script. J'ai donc ajouté session-setup-script=/home/n76/tptoggle.sh à /etc/lightdm/lightdm.conf La situation actuelle est identique à celle du début, sauf que lightdm tente actuellement de mettre le pavé tactile au démarrage de la session utilisateur

Le problème n’est pas réglé, mais j’ai le sentiment que je suis proche et il s’agit simplement de donner à Lightdm les bons privilèges.

S'il vous plaît suggérer comment le faire.

6
mekkanizer

Je ne sais pas s'il existe un moyen de gérer les choses après la saisie de votre mot de passe tel que vous le demandez et je doute qu'il en sera ainsi puisqu'il est géré par l'environnement de bureau (probablement le démon économiseur d'écran). Cependant, cela devrait fonctionner parfaitement si vous ajoutez les bons scripts à /etc/pm/sleep.d. Puisque vous n'avez pas montré les scripts que vous avez essayés, je suppose que vous n'avez tout simplement pas écrit le script correctement. Ce qui suit fonctionne bien sur mon système:

  1. Créez un fichier appelé /etc/pm/sleep.d/20_resume avec le contenu suivant:

    #!/bin/sh
    
    case "$1" in
        thaw|resume)
        /home/terdon/scripts/onoff.sh
        ;;
    esac
    exit $?
    

    Veillez à adapter le chemin ci-dessus (/home/terdon/scripts/onoff.sh) au chemin réel du script présenté à l'étape 3.

  2. Donnez au fichier les permissions adéquates (rwxr-xr-x)

    Sudo chmod 755 /etc/pm/sleep.d/20_resume
    
  3. Ecrivez un script qui éteint le pavé tactile si une souris est connectée et allumé s'il n'y a pas de souris connectée:

    #!/bin/sh
    
    ## Get the xinput ID of the touchpad
    TID=$(xinput list | grep -iPo 'touchpad.*id=\K\d+')
    
    ## Check if a mouse is connected and act accordingly
    xinput list | grep -iq mouse &&  xinput disable "$TID" || xinput enable "$TID" 
    

    Enregistrez maintenant le script ci-dessus en utilisant le chemin et le nom de l'étape 1 (dans cet exemple, /home/terdon/scripts/onoff.sh), rendez-le exécutable (chmod +x /home/terdon/scripts/onoff.sh) et vous devez être défini.

Si c'est ce que vous avez déjà essayé, modifiez votre question et montrez-nous les scripts que vous avez utilisés.


L’autre approche à laquelle je peux penser est d’utiliser la procédure décrite dans mon réponse à votre autre question . Je ne comprends pas ce que vous avez contre les boucles, c’est une construction de programmation parfaitement valable et même inestimable. Le seul problème auquel je peux penser est que le fait d’exécuter une boucle infinie peut taxer votre processeur, mais cela ne devrait pas poser de problème si votre script utilise sleep pour attendre une ou deux secondes entre chaque exécution de boucle. Puisque ma suggestion ne fait que cela, vous pouvez simplement utiliser cela si ce qui précède vous échoue.

2
terdon