Мне было интересно, почему события power не работают должным образом, когда я использую виртуальную консоль (или что-то, что появляется после Ctrl kbd> - Alt kbd> - F1 kbd> называется).
Я поставил свой ноутбук в режим сна, когда крышка закрыта, и он работает нормально, когда я в графическом интерфейсе. Но когда я переключаюсь на виртуальную консоль, закрытая крышка просто выключает экран.
Как это возможно, я думал, что такие вещи низкого уровня управляются демонами, и они не зависят от типа интерфейса, в котором я нахожусь?
Вы найдете ответ в /etc/acpi/lid.sh
. Вы правы, что есть демон ACPI, который реагирует на такие вещи, как закрытие крышки. Однако, если вы посмотрите на строку в верхней части скрипта:
if [ `CheckPolicy` = 0 ]; then exit; fi
вы увидите строку, которая отменяет все это. CheckPolicy
проверяет, работает ли что-то вроде Gnome Power Manager на текущей консоли. Если это так, то он прерывается и позволяет менеджеру питания справиться с этим.
Итак, когда GNOME является активным сеансом, Gnome Power Manager обрабатывает крышку. Когда консоль является активным сеансом, демон ACPI обрабатывает крышку. Если вы прочтете оставшуюся часть скрипта lid.sh
, вы увидите, что все, что он делает - это пустой экран.
Вероятно, связано с consolekit. Consolekit отслеживает, кто вошел в систему и где иметь дело с многопользовательскими системами. Вход в vt getty, вероятно, не регистрируется в consolekit. Вы можете проверить с помощью ck-list-sessions
. G-p-m спрашивает CK точно так же, как и pulseaudio. Когда вы переключаетесь на vt, звук отключается.