Измените “Powerbutton” на “выполнить скрипт”

Вопрос или проблема

Я пытаюсь привыкнуть к современному Linux. Запускаю Ubuntu 24.04.1 LTS на HP HP EliteDesk 800 G3 DM 35W / Intel® Pentium® G4560T × 4

Что я хочу сделать: Привязать кнопку питания на корпусе (единственную кнопку) к “sudo reboot” (или эквиваленту), вместо стандартного “Выключение через 60 секунд”.

Что я уже пробовал:

#1 Редактирование /etc/systemd/logind.conf -> изменить (раскомментировать) HandlePowerKey= [ничего не работает]

#2 Редактирование /usr/share/X11/xkb/symbols/inet -> изменить
key { [ XF86PowerOff ] };
на
key { [ XF86XK_LaunchA ] };

Это сработало – какая бы клавиша здесь ни была, кажется, она передается системе, когда я нажимаю кнопку. Но теперь я не знаю, как использовать эти XF86XK_Launch0-9 / XF86XK_LaunchA-F клавиши…

Поскольку набор символов XF86XK_ похоже не содержит элемента “reset” или “reboot”, мне по сути нужно будет запустить .sh, верно?

Графический интерфейс Ubuntu для привязки клавиш не распознает кнопки XF86XK_Launch, но их замечает sudo showkey – XF86XK_LaunchA имеет код клавиши 116, например [0xe0 0x5e 0xe0 0xde с флагом -s]

Итак, какой был бы “правильный способ” заставить мой компьютер запустить здесь скрипт?

Спасибо!

Ответ или решение

Чтобы перенастроить кнопку питания на вашем HP EliteDesk 800 G3 DM в Ubuntu 24.04.1 LTS так, чтобы она запускала команду "sudo reboot", вам необходимо выполнить несколько шагов. Мы рассмотрим решение, которое включает в себя создание скрипта и настройку системы для его вызова при нажатии на кнопку питания.

Шаг 1: Создание скрипта

Первым делом создайте bash-скрипт, который будет выполнять команду перезагрузки. Откройте терминал и выполните следующие команды:

sudo nano /usr/local/bin/reboot_script.sh

В открывшемся редакторе вставьте следующий код:

#!/bin/bash
sudo reboot

Сохраните изменения, нажав CTRL + X, затем Y, и Enter.

Теперь необходимо сделать скрипт исполняемым:

sudo chmod +x /usr/local/bin/reboot_script.sh

Шаг 2: Настройка системы для запуска скрипта

Теперь, когда у вас есть скрипт для перезагрузки, необходимо настроить систему так, чтобы нажатие кнопки питания вызывало этот скрипт. Для этого используйте утилиту systemd.

  1. Создайте новый service файл:
sudo nano /etc/systemd/system/reboot-button.service
  1. Вставьте в файл следующий код:
[Unit]
Description=Reboot on Power Button Press

[Service]
Type=oneshot
ExecStart=/usr/local/bin/reboot_script.sh

[Install]
WantedBy=multi-user.target
  1. Сохраните и закройте редактор.

Шаг 3: Настройка логина

Теперь нам нужно настроить systemd логин, чтобы он вызывал этот сервис на нажатие кнопки питания. Для этого откройте конфигурационный файл:

sudo nano /etc/systemd/logind.conf

В этом файле найдите строку, начинающуюся с #HandlePowerKey= и измените ее на:

HandlePowerKey=ignore

Также добавьте строку:

HandleLidSwitch=ignore

Это предотвратит стандартное поведение при нажатии кнопки питания на вашем ПК. Сохраните изменения.

Шаг 4: Запуск и настройка

Чтобы запустить новый юнит и убедиться, что изменения вступили в силу, выполните:

sudo systemctl daemon-reload
sudo systemctl enable reboot-button.service

Шаг 5: Перезагрузка системы

Теперь, когда все настройки завершены, перезагрузите систему:

sudo reboot

Заключение

После перезагрузки при нажатии на кнопку питания должно сработать выполнение вашего скрипта, который выполняет команду sudo reboot. Если возникнут сложности, проверьте логи с помощью команды journalctl -xe для поиска ошибок. Этот способ позволяет настроить функциональность кнопки питания под ваши нужды и избежать стандартной задержки выключения.

Если у вас есть дополнительные вопросы или вам нужна помощь, не стесняйтесь спрашивать!

Оцените материал
Добавить комментарий

Капча загружается...