web-dev-qa-db-fra.com

Exécuter le script de configuration à la reprise de la session X

Sur Ubuntu 13.04, je dois configurer manuellement le pavé tactile car un bug m'empêche d'utiliser l'outil de configuration standard (les modifications ne sont pas enregistrées). Cependant, j'ai créé un script qui définit la vitesse, l'accélération et le défilement, je l'ai configuré pour s'exécuter à sartup et cela fonctionne. Le problème se pose lorsque je reprends après la suspension: surtout les paramètres de défilement (les plus faciles à vérifier) ​​disparaissent. Suite à d'autres questions et réponses, j'ai écrit ce script (qui contient les mêmes commandes que j'ai utilisées dans celui mentionné ci-dessus) situé dans /etc/pm/sleep.d/ZZtouchpad:

#!/bin/sh 
case "$1" in
    resume|thaw)
        xinput  --set-prop "CyPS/2 Cypress Trackpad" "Device Accel Constant Deceleration" 2
        xinput  --set-prop "CyPS/2 Cypress Trackpad" "Device Accel Velocity Scaling" 35
        xinput  --set-prop "CyPS/2 Cypress Trackpad" "Synaptics Scrolling Distance" -20, -20
esac

Mais ça ne marche pas du tout.

Merci pour votre aide!

MODIFIER

J'ai découvert que le script fonctionne lors de la suspension avec pm-suspend ou pm-suspend-hybrid, mais lors de la suspension du menu système ou de la fermeture du couvercle de l'ordinateur portable, ce n'est pas le cas. Il semble que l'erreur soit "impossible de se connecter au serveur X".

Donc, la question devrait être reformulée: où dois-je mettre ces commandes pour qu'elles soient exécutées lorsque la session X reprendra? J'ai essayé ~/.xinitrc, un fichier sous ~/.xinitrc.d et ~/.xsessionrc. Aucune suggestion?

3
Earendil

J'avais un problème similaire. Le problème est de se connecter au serveur X. Je l'ai résolu en volant à /etc/acpi/sleep.sh. Mettez ce qui suit dans /etc/pm/sleep.d/99_setup_touchpad.

#! /bin/sh

. /usr/share/acpi-support/power-funcs

case "$1" in
    resume|thaw)
        if pidof xscreensaver > /dev/null; then
            for x in /tmp/.X11-unix/*; do
                displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
                getXuser;
                if [ x"$XAUTHORITY" != x"" ]; then
                    export DISPLAY=":$displaynum"
                    su $user -c "xinput set-prop 'CyPS/2 Cypress Trackpad' 'Device Accel Constant Deceleration' 2"
                    su $user -c "xinput set-prop 'CyPS/2 Cypress Trackpad' 'Device Accel Velocity Scaling' 35"
                    su $user -c "xinput set-prop 'CyPS/2 Cypress Trackpad' 'Synaptics Scrolling Distance' -20, -20"
                fi
            done
        fi
        ;;    
    *)
        # Nothing.
        ;;
esac

Rendez enfin le fichier exécutable: chmod 755 /etc/pm/sleep.d/99_setup_touchpad.

Remarque: Je suis généralement le seul connecté via X sur mon ordinateur portable. La boucle n'est donc qu'une seule itération. Je ne sais pas ce qui se passe s'il y a plus d'une session en direct en même temps. Ce qui précède est assez bon pour moi.

1
Meikel