web-dev-qa-db-fra.com

Le script ne fonctionne pas sur CV

Je cours 11.04 sur un Asus UL30. J'essaie d'exécuter un script pour corriger les paramètres de mon 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

/ var/log/pm-suspend affiche les éléments suivants:

/etc/pm/sleep.d/10_grub-common suspend suspend: success. Lancer hook /etc/pm/sleep.d/10_touchpad suspendre suspendre: /etc/pm/sleep.d/10_unattended-upgrades-hibernate resume suspend: success. Exécution de 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. Lancer le crochet /etc/pm/sleep.d/10_grub-common

Vous ne savez pas vraiment pourquoi les modifications du synclient ne sont pas modifiées par ce script lors de la reprise. J'apprécierais toute idée ...

4
benbeel

Réponse directe

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

  1. exécuter le script en tant qu'utilisateur approprié; et
  2. assurez-vous 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 remplacerais la ligne par:

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

<yourusername> devrait être remplacé. Notez qu'il est toujours judicieux de disposer de temps de sommeil pour vous assurer que le système est bien réveillé avant d'exécuter le code. Assurez-vous également de chmod +x que setupTouchpad.sh script.


Une meilleure façon

Le problème avec ce qui précède est que vous devez coder en dur votre nom d'utilisateur (ou utiliser un moyen détourné pour déterminer quel utilisateur est connecté et possède la session X active). Il est préférable de définir les paramètres du touchpad à l'échelle du système pour X.

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

Pour moi, le fichier correct à éditer est 50-synaptics.conf ici j'ai défini les 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 valides, lancez simplement synclient.

Remarque vous devez redémarrer X pour que ces modifications prennent effet. Pour ce faire dans Ubuntu, par exemple, vous pouvez exécuter Sudo /etc/init.d/lightdm restart

Pour prévisualiser vos modifications, essayez d’exécuter la ligne suivante (ou une variante). Supprimez | bash de la fin pour voir les commandes émises.

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 naviguez sur Google pour touchpad settings synaptics xorg.conf.d, vous trouverez également quelques aperçus intéressants des options.


Références

3
Geoff