У меня есть (на первый взгляд довольно экзотический) ноутбук Dell Latitude XT2 под управлением Lubuntu 12.04, только что установленный. Попытка заставить кнопку питания работать должным образом (открытие диалогового окна выхода из системы lubuntu-logout
), но безуспешно: кнопка питания не делает ничего, кроме принудительного отключения при длительном нажатии.
Сама кнопка питания обнаружена и работает. В xfce4-power-manager-settings, когда я устанавливаю действие кнопки питания с «Ask» (= open lubuntu-logout
) на «Shutdown», ноутбук успешно выключается; нажатие кнопки питания распознается и обрабатывается правильно.
Редактировать: я удалил кучу информации из вопроса, так как она, похоже, не связана с проблемой.
Установите acpi
и acpi-support
, если они еще не установлены.
/etc/acpi/events
. powerbtn
(если нет, создайте его). Содержимое файла в моей установке: # /etc/acpi/events/powerbtn # This is called when the user presses the power button and calls # /etc/acpi/powerbtn.sh for further processing. # Optionally you can specify the placeholder %e. It will pass # through the whole kernel event message to the program you've # specified. # We need to react on "button power.*" and "button/power.*" because # of kernel changes. event=button[ /]power action=/etc/acpi/powerbtn.sh
action
в этом файле. /etc/acpi/powerbtn.sh
: #!/bin/sh # /etc/acpi/powerbtn.sh # Initiates a shutdown when the power putton has been # pressed. [ -r /usr/share/acpi-support/power-funcs ] && . /usr/share/acpi-support/power-funcs # getXuser gets the X user belonging to the display in $displaynum. # If you want the foreground X user, use getXconsole! getXuser() { user=`pinky -fw | awk '{ if ($2 == ":'$displaynum'" || $(NF) == ":'$displaynum'" ) { print $1; exit; } }'` if [ x"$user" = x"" ]; then startx=`pgrep -n startx` if [ x"$startx" != x"" ]; then user=`ps -o user --no-headers $startx` fi fi if [ x"$user" != x"" ]; then userhome=`getent passwd $user | cut -d: -f6` export XAUTHORITY=$userhome/.Xauthority else export XAUTHORITY="" fi export XUSER=$user } # Skip if we just in the middle of resuming. test -f /var/lock/acpisleep && exit 0 # If the current X console user is running a power management daemon that # handles suspend/resume requests, let them handle policy This is effectively # the same as 'acpi-support's '/usr/share/acpi-support/policy-funcs' file. [ -r /usr/share/acpi-support/power-funcs ] && getXconsole PMS="gnome-settings-daemon kpowersave xfce4-power-manager" PMS="$PMS guidance-power-manager.py dalston-power-applet" if pidof x $PMS > /dev/null; then exit elif test "$XUSER" != "" && pidof dcopserver > /dev/null && test -x /usr/bin/dcop && /usr/bin/dcop --user $XUSER kded kded loadedModules | grep -q klaptopdaemon; then exit elif test "$XUSER" != "" && test -x /usr/bin/qdbus; then kded4pid=$(pgrep -n -u $XUSER kded4) if test "$kded4pid" != ""; then dbusaddr=$(su - $XUSER -c "grep -z DBUS_SESSION_BUS_ADDRESS /proc/$kded4pid/environ") if test "$dbusaddr" != "" && su - $XUSER -c "export $dbusaddr; qdbus org.kde.kded" | grep -q powerdevil; then exit fi fi fi # If all else failed, just initiate a plain shutdown. /sbin/shutdown -h now "Power button pressed"
Кажется, это известная ошибка в Lubuntu. В xfce4-power-manager-settings есть несколько действий для нажатия кнопки питания. Когда вы выбираете «Завершение работы», оно работает как положено, но когда вы выбираете «Спросить», ничего не происходит.
Обходной путь есть в комментарии № 10 . Меня устраивает. Кажется, между xfce4 и LXDE есть основная проблема.
Вы можете создать такое же поведение с (дополнительным) демоном acpi, как сказал green7. Версия в его ответе закрывает ПК без диалога, но мы обсуждали в чате, что вы можете запустить lubuntu-logout
из сценария вместо простого выключения компьютера. Это требует некоторой работы, поскольку вы должны запустить приложение выхода из системы как пользователь, которому разрешено подключаться к X, и предоставить необходимые переменные среды (например, $DISPLAY
). Поскольку переменные env различаются в разных дистрибутивах, я думаю, что вам пришлось тщательно их искать для LXDE.