Page 1 sur 1

[ACPI] Eteindre l'écran en rabattant ? (Résolu)

Publié : jeu. 08 nov. 2012, 20:50
par sushi
Je viens de passer à systemd. J'ai désactivé la mise en veille quand l'écran est rabattu via /etc/systemd/logind.conf.

Problème : l'écran ne s’éteint plus quand je le rabat. Par contre il s'éteint une demi-seconde quand je l'ouvre !

J'ai beau chercher, je ne vois pas bien où je pourrais régler ça. Si quelqu'un a une idée, ca m’intéresse fortement ! :|

Re: [Systemd] Eteindre l'écran en rabattant ?

Publié : ven. 09 nov. 2012, 09:53
par FoolEcho
Tu peux montrer ton logind.conf ?
Tu es sous quel environnement (dès fois qu'il y ait un conflit avec) ?

Re: [Systemd] Eteindre l'écran en rabattant ?

Publié : dim. 11 nov. 2012, 19:28
par sushi
Mon logind.conf (tout le reste est commenté, donc paramètres par défault)

Code : Tout sélectionner

HandleLidSwitch=ignore
J'ai aussi testé

Code : Tout sélectionner

LidSwitchIgnoreInhibited=no
Mon environnement, c'est compiz (via 'exec fusion-icon' dans mon xinitrc). J'ai installé gnome-3.6 et KDE pour voir. Même punition.

En fouillant un peu mieux les wiki, j'ai trouvé quels fichiers sont censés gérer ça :
avec laptop-mode-tools installé : /etc/acpi/events/lm_lid qui lance /etc/acpi/actions/lm_lid.sh
avec ou sans laptop-mode-tools : /etc/acpi/handler.sh

J'ai testé les différentes méthodes de configuration proposées sur les wikis, sans succès.

Pour faire simple, j'ai fini par virer laptop-mode-tools, j'ai configuré /etc/acpi/handler.sh pour qu'il lance ce script quand l'écran est fermé :

Code : Tout sélectionner

#!/bin/bash
###Pour vérifier que le script est lancé
sudo echo "lid closed">/dev/tty2 ;
###Pour éteindre l'écran
sudo xset dpms force off
Le message apparaît bien sur le tty2, mais l'écran ne s’éteint pas. Alors que le script fonctionne quand je le lance moi même.

Je ne comprends vraiment pas. :(

edit : je sais pas si ca peut-être utile, mais voila ce que raconte systemctl

Re: [Systemd] Eteindre l'écran en rabattant ?

Publié : mar. 13 nov. 2012, 17:57
par cdemoulins
Pour ton script handler.sh, tu peux déjà enlevé les «sudo» qui trainent vu que le script est exécuté par le compte root.
Ensuite, est-ce que par hasard, la commande xset n'aurai pas besoin que la variable DISPLAY soit défini ?
Ça expliquerait pourquoi la commande fonctionne quand tu l'exécute dans un terminal mais pas lorsque acpid l'exécute.

Re: [Systemd] Eteindre l'écran en rabattant ?

Publié : mar. 13 nov. 2012, 18:02
par banditblue
voila le script que j'ai sur mon eeepc ainsi que sur le pc fixe et tout fonctionne parfaitement

sur le eeepc quand je rabbat l'ecran il s'éteint bien

Code : Tout sélectionner

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# See logind.conf(5) for details

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#Controllers=
#ResetControllers=cpu
#InhibitDelayMaxSec=5
HandleRebootKey=reboot
HandlePowerKey=poweroff
HandleSuspendKey=suspend
HandleHibernateKey=hibernate
HandleLidSwitch=suspend
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes



Re: [Systemd] Eteindre l'écran en rabattant ?

Publié : jeu. 15 nov. 2012, 21:53
par sushi
@cdemoulins
Je savais bien qu'on allait me faire la réflexion pour mes sudos ! Tu as raison, mais je lance aussi ce script à la main en tant qu'utilisateur, et comme je suis très feignant... Je dégaine un peu vite le sudo dans mes scripts :mrgreen:
Doublement inutile en plus, xset n'a pas besoin d'être lancé en root, et le "sudo echo" ne marche pas. Par contre quand je sudo le script avec la commande echo dedans, ca marche. Encore une subtilité de sudo qui m'échappe.

Pour le -display, j'avais commencé avec, vu que les wikis indiquent de le mettre. Ca ne marche pas plus.
J'avais fini par le virer car ma compréhension de cet argument est qu'il sert à limiter la commande à un écran, ce qui est utile uniquement quand on en possède plusieurs; je ne possède qu'un seul écran. J'ai revu les manuels xset et X pour vérifier, et je n'ai rien trouvé d'explicite sur ce qu'il se passe en l'absence de cette option.

Je l'ai donc remis, même si pour l'instant ça ne change rien à mon problème.


@banditblue

Code : Tout sélectionner

HandleLidSwitch=suspend
C'est l'option par défaut et ton écran ne devrait pas se contenter de s'éteindre quand tu le rabats : ton système devrait passer en veille. Si ce n'est pas le cas, c'est que tu vas un peu vite en disant "tout fonctionne parfaitement".

Le fichier logind.conf ne gère pas l'extinction seule de l'écran, sauf omission du manuel.

Re: [Systemd] Eteindre l'écran en rabattant ?

Publié : ven. 16 nov. 2012, 00:37
par cdemoulins
Je viens de voir que sur le wiki anglais il y a des trucs qui devrait t'intéresser :
https://wiki.archlinux.org/index.php/Ac ... _Power_Off

Re: [Systemd] Eteindre l'écran en rabattant ?

Publié : ven. 16 nov. 2012, 01:35
par sushi
sushi a écrit :J'ai testé les différentes méthodes de configuration proposées sur les wikis, sans succès.
Ca incluais le wiki anglais :chinois: Mais tu as bien fait de me le rapeller:
Ce script ne m'est pas apparu intéressant dans le sens où il fait doublon avec ce acpid fait déjà très bien : détecter si l'écran est ouvert ou rabattu. Et que je ne vois vraiment pas ce qu'apporte le "`ps -o ruser= -C xinit`".
Par contre le revoir avec ce sudo énorme m'a fait pensé que je n'avais pas testé avec un sudo dans le handler.sh... Et ça marche !

Je ne comprend pas vraiment, mais comme quoi, les sudos qui servent à rien des fois ils ont du bon :bravo:

Je confirme que -display est nécessaire.

La partie concernée de /etc/acpi/handler.sh
button/lid)
case "$3" in
close)
logger 'LID closed'
sudo xset dpms force off -display :0
;;
Résolu, merci à tous.

EDIT: Je pense savoir pourquoi ca marche avec le sudo. J'ai utilisé xauth pour autoriser root a controler X. J'avais fait ca suite a un message d'erreur (MIT-MAGIC-COOKIE-1) en utilisant xset en root depuis un tty.