# Interompre le script quand le rabat de l’écran est ouvert sur laptop

**URL:** <https://www.debian-fr.org/t/interompre-le-script-quand-le-rabat-de-l-ecran-est-ouvert-sur-laptop/86195>\
**Category:** Support Debian\
**Tags:** écran, veille\
**Created:** [Février 27, 2022, 10:48 UTC](https://www.debian-fr.org/t/interompre-le-script-quand-le-rabat-de-l-ecran-est-ouvert-sur-laptop/86195 "2022-02-27T10:48:40Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![fauve](https://www.debian-fr.org/user_avatar/www.debian-fr.org/fauve/32/14813_2.png) [@fauve](https://www.debian-fr.org/u/fauve)\
**Post date:** [Février 27, 2022, 10:48 UTC](https://www.debian-fr.org/t/interompre-le-script-quand-le-rabat-de-l-ecran-est-ouvert-sur-laptop/86195/1 "2022-02-27T10:48:40Z")

</div>

Bonjour o/

Sur un ordinateur portable, j’ai désactivé la mise en veille automatique lors du rabat de l’écran grâce aux commandes :

```auto
echo 'HandleLidSwitch=ignore' | tee --append /etc/systemd/logind.conf
echo 'HandleLidSwitchDocked=ignore' | tee --append /etc/systemd/logind.conf
sudo service systemd-logind restart

```

Et j’ai fais en sorte qu’un script de mon propre cru se déclenche à chaque rabattement de l’écran (si vous êtes curieux, le script en question se trouve ici [dpaste/rLFD (Bash)](https://dpaste.org/rLFD/slim) mais il ne contient rien d’interessant pour la suite du problème).

Or, ce script contient une minuterie qui fait qu’au bout de 15 min d’inactivité, la commande `shutdown 0` se lance.

Problème : le script continue à s’exécuter — même quand l’ordinateur est réactivé —.  
Or, je voudrais faire en sorte que la totalité du script soit interrompue dès lors que l’ordinateur est de nouveau actif. Comment dire ça à ACPI ?

Merci par anticipation 🙂

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 28, 2022, 2:35 UTC](https://www.debian-fr.org/t/interompre-le-script-quand-le-rabat-de-l-ecran-est-ouvert-sur-laptop/86195/2 "2022-02-28T02:35:41Z")

</div>

Bonjour

Dans le script suivant, qui est une copie du tiens,  
j’ai ajouté une fonction nommée `​myScrOpened` dans le script  
qui sera lancée juste après la fin d’exécution de chaque ligne de commande `sleep`  
et qui fera se terminer l’exécution du script si l’écran est «&nbsp;ouvert&nbsp;»

```auto
#!/bin/bash
#
# Lid closing event script
​
# main user
USER=fauve

# my exit function
myScrOpened() {
    if [[$(</proc/acpi/button/lid/LID/state) =~ open]]; then
        echo "Screen opened."
        exit 125 # Exit status 125 <=> Operation canceled
    fi
}

# Remaining percent of battery
REMAININGBAT=$(</sys/class/power_supply/BAT0/capacity)
​
# Test battery remaining percentage
if [$REMAININGBAT -gt 10]; then
    # If the percentage is higher than 10
    TIMEBEFORELOCK="1m"
    TIMEBEFORESUSPENSION="9m"
    TIMEBEFORESHUTDOWN="5 minutes"
else
    # If the percentage is less than 10
    TIMEBEFORELOCK="1m"
    TIMEBEFORESUSPENSION="2m"
    TIMEBEFORESHUTDOWN="4 minutes"
fi
​
TIMEBEFORELOCK="1m"
TIMEBEFORESUSPENSION="1m"
TIMEBEFORESHUTDOWN="1 minutes"
​
# Do noting a ${TIMEBEFORELOCK} time
# In case if a quick shifting from a room to another
echo "$(date): Waiting ${TIMEBEFORELOCK} before lock"
sleep ${TIMEBEFORELOCK}
​myScrOpened

# set screensaver for ${TIMEBEFORESUSPENSION} time
echo "$(date): Lock now"
su -c "DISPLAY=:0.0 /home/$USER/.local/bin/screenlock" - $USER &
echo "$(date): Waiting ${TIMEBEFORESUSPENSION} before suspension"
sleep ${TIMEBEFORESUSPENSION}
​myScrOpened

# Set a wake up at given time
echo "$(date): Seting time before waking up to ${TIMEBEFORESHUTDOWN}"
echo `date '+%s' -d "+ ${TIMEBEFORESHUTDOWN}"` > /sys/class/rtc/rtc0/wakealarm
​
# Suspend for ${TIMEBEFORESHUTDOWN} time
echo "$(date): Starting suspension for ${TIMEBEFORESHUTDOWN}"
systemctl suspend
echo "$(date): Wake up"
​
# Wait 5s to ensure the next command will take effect
sleep 5s
​myScrOpened

# shutdown
echo "$(date): Shutdown"
shutdown +0

```

* * *

**EDIT :** Je n’ai pas très bien compris l’intérêt de programmer une heure de réveil dans ton script,  
peut-être qu’il s’agissait d’essais, alors j’ai laissé tel quel …

---

<div class="post-metadata">

**Author:** ![fauve](https://www.debian-fr.org/user_avatar/www.debian-fr.org/fauve/32/14813_2.png) [@fauve](https://www.debian-fr.org/u/fauve)\
**Post date:** [Février 28, 2022, 6:13 UTC](https://www.debian-fr.org/t/interompre-le-script-quand-le-rabat-de-l-ecran-est-ouvert-sur-laptop/86195/3 "2022-02-28T06:13:34Z")

</div>

Merci beaucoup, ta solution est interessante. Mon script a un peut évolué entre temps (je vais le mettre à jour dans la journée).

En fait, l’heure de réveil est très importante. Car en fait, le `shutdown` doit arriver après la veille. Or, tant que l’ordinateur est en veille, le `shutdown` (ni aucune autre commande d’ailleurs) ne peut pas s’éxecuter. Il faut d’abbord révieller l’ordinateur, et dès le réveil la commande `shutdwon`s’éxecute pour qu’il puisse effectivement s’éteindre. Voilà l’interet de la programmation du réveil.
