4 votes

script ne s'exécute pas lors de la reprise

J'utilise la version 11.04 sur un Asus UL30. J'essaie d'exécuter un script pour corriger mes paramètres synclient (qui sont perdus lors de la reprise). J'ai écrit le script suivant dans /etc/pm/sleep.d/10_touchpad :

#!/bin/sh

#change synclient settings on resume

case "$1" in 

    resume|thaw)

        sleep 15 && synclient TapButton2=2 TapButton3=3 ;;
esac

Le fichier /var/log/pm-suspend affiche ce qui suit :

/etc/pm/sleep.d/10_grub-common suspend suspend : success. Crochet en cours d'exécution /etc/pm/sleep.d/10_touchpad suspend suspend : /etc/pm/sleep.d/10_unattended-upgrades-hibernate resume suspend : success. Exécution du hook /etc/pm/sleep.d/10_touchpad resume suspend : Échec de la connexion au serveur X.

/etc/pm/sleep.d/10_touchpad resume suspend : success. Exécution du crochet /etc/pm/sleep.d/10_grub-common

Je ne sais pas vraiment pourquoi les changements de synclient ne sont pas gérés par ce script sur resume. J'apprécierais tout éclaircissement....

3voto

mfaerevaag Points 129

Réponse directe

Pour atteindre votre objectif (exécuter un script dépendant de la session X dans l'espace utilisateur lorsque votre machine reprend), vous devez.. :

  1. exécuter le script en tant qu'utilisateur approprié ; et
  2. s'assurer que la variable DISPLAY est définie.

Je déplacerais la ligne sleep 15 && synclient TapButton2=2 TapButton3=3 dans un fichier séparé, par exemple /usr/local/sbin/setupTouchpad.sh et remplacez la ligne par :

   export DISPLAY=:0
   su -c - <yourusername> /usr/local/sbin/setupTouchpad.sh

<yourusername> doivent être remplacés. Notez qu'il est toujours bon de prévoir un temps de sommeil pour s'assurer que le système est réveillé avant d'exécuter le code. Veillez également à chmod +x que setupTouchpad.sh script.


Une meilleure façon de faire

Le problème est que vous devez coder en dur votre nom d'utilisateur (ou utiliser un moyen détourné pour découvrir quel utilisateur est connecté et dispose de la session X active). Il est préférable de définir les paramètres du pavé tactile au niveau du système pour X.

Ces options peuvent être définies dans /usr/share/X11/xorg.conf.d/

Pour moi, le fichier à modifier est le suivant 50-synaptics.conf Ici, j'ai défini des options, voici une partie de ce fichier :

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"

        Option          "TapButton2"              "2"
        Option          "TapButton3"              "3"

        # Etc...
EndSection

Comme vous le savez peut-être déjà, pour voir les options valables, il suffit d'exécuter la commande synclient .

Note vous devez redémarrer X pour que ces modifications soient prises en compte. Pour ce faire, sous Ubuntu, par exemple, vous pouvez exécuter la commande suivante sudo /etc/init.d/lightdm restart

Pour prévisualiser vos modifications, vous pouvez essayer d'exécuter la ligne suivante (ou une variante). Enlever | bash depuis la fin pour voir les commandes qu'il émet.

cat /usr/share/X11/xorg.conf.d/50-synaptics.conf | grep Option | grep -v "^\#" | awk '{print "synclient " $2 "=" $3}' | sed 's/\"//g' | bash

Si vous cherchez sur Google touchpad settings synaptics xorg.conf.d vous trouverez également quelques bonnes vues d'ensemble des options.


参考文献

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X