• [^] # Re: Une autre approche (réalisable ?)

    Posté par . En réponse au message détecter le branchement ou l'allumage d'un périphérique USB (VPI Epson). Évalué à 2.

    J'ai essayé ceci, suggéré par ailleurs (mais qui ne marche pas mieux :-( )

    /etc/udev/rules.d/91-vpi-epson.rules :

    SUBSYSTEM=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0907", OWNER="${USER}", GROUP="${USER}", MODE="0664"
    ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0907", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/dev/vpi"
    ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="04b8/0907/*", TAG+="systemd"
    

    /etc/systemd/user/epson-vpi.service :

    [Unit]
    Description=VPI Epson
    Requisite=dev-vpi.device
    After=dev-vpi.device
    StartLimitIntervalSec=1m
    StartLimitBurst=5
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/map-epson.sh
    Restart=on-failure
    RestartSec=1
    [Install]
    WantedBy=dev-vpi.device
    

    et le script :

    #!/bin/sh
    xinput | grep EPSON | grep -oP '(?<=id=)[0-9]+' | xargs -I % xinput map-to-output % DP-2
    logger -t epson 'epson détecté...'
    

    Le service est activé par par systemctl --user enable epson-vpi.service

    En branchant le VPI, je vois bien que le script est lancé
    Mais le stylet n'est pas aligné !! alors que si l’utilisateur lance la commande directement, ça fonctionne et le stylet est aligné.

    Pourtant dans ce cas, su n'est pas nécessaire, c'est bien l'utilisateur qui exécute le script.