Как сделать так, чтобы кнопка питания не отключала систему напрямую?

23

Я сделал новую установку Ubuntu 13.10. Когда я нажимаю кнопку питания, мой компьютер немедленно выключается. В Ubuntu 13.04 у меня появилось красивое меню, где я мог выбирать, что делать. Сейчас его нет, и я хочу его вернуть. Вот мой /etc/acpi/powerbtn.sh в пастбине.

я уже сделал

gsettings set org.gnome.settings-daemon.plugins.power button-WORD 'interactive'

где WORDесть hibernate, power, sleepи suspend.

Wauzl
источник
1
Я прошел через мой /etc/acpi/powerbtn.shи обнаружил, что это просто ничего не делает. Меню, о котором я говорю, может быть вызвано командойgnome-session-quit --power-off
Wauzl
лулзы. Хотелось бы, чтобы я прочел твой комментарий, прежде чем отправился в погоню за диким гусем, пытаясь найти эту команду.
мой ответ не сработал для вас?
Я проголосовал за ваш ответ, и я уверен, что это сработало бы; Я переустановил всю мою систему. У меня были и другие проблемы. Это (очевидно) исправило это для меня.
Wauzl
ах, к только что увидел, что вы зашли на сайт без комментариев, поэтому думал, что уведомление могло быть потеряно. странно, полная переустановка исправила это? ты скачал последнюю 13.10? Я сделал новую установку, и у меня недавно возникла эта проблема.

Ответы:

29

Проверьте свой /etc/systemd/logind.confфайл. Это должно выглядеть так:

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

Раскомментируйте строку с надписью #HandlePowerKey=poweroffи измените значение на ignore.

Затем перезапустите logind с помощью команды: sudo restart systemd-logindили перезагрузите компьютер.

РЕДАКТИРОВАТЬ: как создать новый обработчик acpi Создать новый файл в /etc/acpi/events/. Содержание файла должно быть:

event=<acpi_event_code>
action=<script_to_call>

где <acpi_event_code>код, который вы получаете, используя acpi_listenинструмент, и <script_to_call>полный путь к сценарию, который вы хотите вызвать, когда произойдет это событие.

Должно быть, они изменили что-то в 13.10, потому что кажется, что у меня слишком мало файлов в моей папке / etc / accpi / events по сравнению с 13.04.

jeremija
источник
Это не возвращает мое любимое меню. Это просто ничего не делает, когда я нажимаю кнопку питания сейчас.
Wauzl
Если powerbtn.sh фактически выполняется при нажатии кнопки питания, вы можете попытаться заставить его выполнить команду меню выключения, если X-сервер работает, а gnome - это среда вашего рабочего стола. Посмотрите на вывод exportкоманды, чтобы определить, какие переменные нужно тестировать. Если скрипт powerbtn.sh вообще не выполняется, вы можете попытаться увидеть, к какому событию acpi привязать, запустив acpi_listenи нажав кнопку питания. Также, возможно, в gnome есть возможность вернуть меню питания, но я не уверен, так как это было давно с тех пор, как я последний раз использовал gnome.
Иеремия
Я пробовал это, и powerbtn.sh(вероятно) не выполняется, потому что ничего не происходит, когда я нажимаю кнопку. Это acpi_listenговорит мне, что кнопка запускает событие acpi. К сожалению, мои клавиши увеличения и уменьшения громкости тоже не работают. Может быть, это связано?
Wauzl
Вы можете попробовать следующее: grep "<acpi_event_code>" /etc/acpi/events/*где <acpi_event_code>находится код события acpi, которое вы видели в acpi_listen. Если вы получили результат, просмотрите этот файл и посмотрите имя скрипта, который он вызывает. Если вы не получите результат, вы можете попробовать добавить новый файл в /etc/acpi/events/. Смотрите отредактированный ответ для более подробной информации.
Иеремия
Подтвердите, что это работает с 16.04 LTS на моем Mac.
Бенджамин Р
4

Иеремия поставил меня на правильный путь, так что слава!

Я отредактировал /etc/systemd/logind.confв соответствии с рекомендациями, но я тоже сделал это .

Сообщество
источник
1

Если вышеуказанные решения не работают для вас, вот быстрый способ обойти:

  • Установить xtrlock

Эта утилита сделает всю работу за вас. Хотя это может не дать ответа на вопрос, но во многих пробных решениях (в том числе на этой странице) ни одно из них не работает

Установить:

sudo apt install xtrlock 

Для использования: введите xtrlockв командной строке. Это заморозит мышь, клавиатуру

Чтобы разблокировать, введите свой пароль и нажмите [Enter]


Это также может заморозить вашу кнопку питания.

PS Это решение особенно полезно для тех, кто имеет детей и хочет отключить кнопку питания по этой причине.

xtrlock - блокирует отображение X до тех пор, пока не будет введен пароль, оставляя видимыми окна. Источник: http://manpages.ubuntu.com/manpages/artful/man1/xtrlock.1x.html

Dody Body
источник
Пожалуйста, расширьте свой ответ. Это приложение доступно в репозиториях? Как вы его установили, из командной строки или через Ubuntu Software Center? Если через командную строку, какую команду вы использовали? Вы это настроили, ну и как?
user68186
1

Сначала вы можете отредактировать файл раскладки клавиатуры, чтобы изменить поведение кнопки питания, чтобы назначить ее другой клавише.

Редактировать файл: /usr/share/X11/xkb/symbols/inet(редактировать клавишу POWR)

Тогда вам нужно будет эффективно отключить кнопку питания, хороший метод с xinput

xinput --listкнопки включения запуска имеют свой собственный вход ... выбрать номер устройства, затем запустить

xinput disable devnumber что-то типа xinput disable 8

intika
источник