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

Questions et astuces concernant l'installation et la configuration d'archlinux
sushi
Hankyu
Messages : 36
Inscription : mer. 27 juil. 2011, 23:18

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

Message par sushi » jeu. 08 nov. 2012, 20:50

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 ! :|
Dernière modification par sushi le ven. 16 nov. 2012, 01:39, modifié 1 fois.

Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10565
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

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

Message par FoolEcho » ven. 09 nov. 2012, 09:53

Tu peux montrer ton logind.conf ?
Tu es sous quel environnement (dès fois qu'il y ait un conflit avec) ?
«The following statement is not true. The previous statement is true.» :nage:

sushi
Hankyu
Messages : 36
Inscription : mer. 27 juil. 2011, 23:18

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

Message par sushi » dim. 11 nov. 2012, 19:28

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

Avatar de l’utilisateur
cdemoulins
Chu Ko Nu
Messages : 310
Inscription : mar. 11 mars 2008, 04:15
Localisation : Paris

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

Message par cdemoulins » mar. 13 nov. 2012, 17:57

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.

Avatar de l’utilisateur
banditblue
Chu Ko Nu
Messages : 466
Inscription : dim. 10 janv. 2010, 10:19

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

Message par banditblue » mar. 13 nov. 2012, 18:02

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


La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- Z170A Sli Plus, I7-6700K, GTX980, 24Go DDR4, SSD 860 EVO 500Go, SSD 830 Serie,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> Clique ICI

sushi
Hankyu
Messages : 36
Inscription : mer. 27 juil. 2011, 23:18

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

Message par sushi » jeu. 15 nov. 2012, 21:53

@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.

Avatar de l’utilisateur
cdemoulins
Chu Ko Nu
Messages : 310
Inscription : mar. 11 mars 2008, 04:15
Localisation : Paris

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

Message par cdemoulins » ven. 16 nov. 2012, 00:37

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

sushi
Hankyu
Messages : 36
Inscription : mer. 27 juil. 2011, 23:18

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

Message par sushi » ven. 16 nov. 2012, 01:35

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.

Répondre