У меня была эта точная проблема, но вместо установки плагина Adobe я перешел в Firefox -> edit preferences -> Applications и изменил действие PDF с «предварительного просмотра в Firefox» на «Использовать средство просмотра документов». Это запускает отдельное окно Evince с документом, который хорошо печатается. Мне никогда не нравилась идея просмотра pdf-файлов в окне браузера, поэтому я счастлив. Однако есть что-то неприятное с Firefox для печати пустых страниц из окна предварительного просмотра.
У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.
Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:
$ acpi_listen
button/prog1 PROG1 00000080 00000000 K
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку. Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:
# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=systemctl reboot
Сохранить файл и перезапустить демона acpi:
sudo systemctl restart acpid.service
IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите . Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключенияМы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.
Измените /etc/acpi/events/reboot следующим образом:# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.
]# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
[!d23 ] Измените /etc/acpi/events/reboot следующим образом:
sudo visudo -f /etc/sudoers.d/my_rbt
Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt
Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:
Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:
У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.
Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:
$ acpi_listen
button/prog1 PROG1 00000080 00000000 K
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку. Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:
# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=systemctl reboot
Сохранить файл и перезапустить демона acpi:
sudo systemctl restart acpid.service
IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключенияМы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.
Измените /etc/acpi/events/reboot следующим образом:# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.
]# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Измените /etc/acpi/events/reboot следующим образом:
sudo visudo -f /etc/sudoers.d/my_rbt
Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt
Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:
Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:
У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.
Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:
$ acpi_listen
button/prog1 PROG1 00000080 00000000 K
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку. Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:
# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=systemctl reboot
Сохранить файл и перезапустить демона acpi:
sudo systemctl restart acpid.service
IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключенияМы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.
Измените /etc/acpi/events/reboot следующим образом:# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.
]# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Измените /etc/acpi/events/reboot следующим образом:
sudo visudo -f /etc/sudoers.d/my_rbt
Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt
Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:
Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:
У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.
Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:
$ acpi_listen
button/prog1 PROG1 00000080 00000000 K
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку. Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:
# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=systemctl reboot
Сохранить файл и перезапустить демона acpi:
sudo systemctl restart acpid.service
IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключенияМы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.
Измените /etc/acpi/events/reboot следующим образом:# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.
]# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Измените /etc/acpi/events/reboot следующим образом:
sudo visudo -f /etc/sudoers.d/my_rbt
Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt
Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:
Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:
У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.
Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:
$ acpi_listen
button/prog1 PROG1 00000080 00000000 K
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку. Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:
# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=systemctl reboot
Сохранить файл и перезапустить демона acpi:
sudo systemctl restart acpid.service
IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключенияМы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.
Измените /etc/acpi/events/reboot следующим образом:# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.
]# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Измените /etc/acpi/events/reboot следующим образом:
sudo visudo -f /etc/sudoers.d/my_rbt
Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt
Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:
Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:
У меня нет идеи, как использовать эту кнопку с GRUB, но есть как минимум два подхода, как сделать их пригодными для использования в Ubuntu. Например, если вы хотите связать команду перезагрузки с этой кнопкой, вы можете: (1) создать событие acpi или (2) создать пользовательский ярлык.
Сначала вам нужно использовать acpi_listen и поймать событие при нажатии кнопки. Просто выполните команду acpi_listen и нажмите кнопку:
$ acpi_listen
button/prog1 PROG1 00000080 00000000 K
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажимаю обсуждаемую кнопку. Затем вы должны создать файл, который будет обрабатывать это событие. Файл должен находиться в каталоге /etc/acpi/events/. Назовите его, например, reboot. Содержимое /etc/acpi/events/reboot должно быть похоже на:
# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=systemctl reboot
Сохранить файл и перезапустить демона acpi:
sudo systemctl restart acpid.service
IMO это самый простой метод. Это должно работать также, когда пользователь не вошел в систему. Ниже приведено несколько ссылок, где вы можете найти дополнительную информацию и примеры:
В приведенном выше примере button/prog1 PROG1 00000080 00000000 K - это событие в моей системе, когда я нажмите [D7]. Ноутбук Ubuntu 17.10 не закрывается при закрытии крышки. Батарея стекает даже после выключенияМы можем добавить страховку, если вы случайно нажмете кнопку. Здесь мы создадим скрипт, который будет использовать файл tmp как флаг и счетчик, как описано здесь. Таким образом, перезагрузка системы будет выполняться, когда вы нажимаете кнопку три раза.
Измените /etc/acpi/events/reboot следующим образом:# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Создайте сценарий /etc/acpi/reboot.sh и установите следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
Сделать его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Теперь команда systemctl reboot будет выполняться, когда вы нажимаете кнопку три раза в течение 30 секунд.
]# /etc/acpi/events/reboot
# This will reboot the system
event=button/prog1 PROG1 00000080 00000000 K
action=/etc/acpi/reboot.sh
Перезапустите демона acpi: sudo systemctl restart acpid.service
Измените /etc/acpi/events/reboot следующим образом:
sudo visudo -f /etc/sudoers.d/my_rbt
Содержимое файла должно быть: ALL ALL=NOPASSWD: /usr/local/bin/my_rbt
Создайте сценарий /etc/acpi/reboot.sh и поместите в него следующие строки: #!/bin/bash
FLAG_FILE="/tmp/sysyem_reboot_flag"
# If the file exists and it is older than 30 seconds, then reset the counter
# Else If the file doesn't exist or its 'value' is less than 2, then increment
# Else (when the file exists, its value is equal or greater than 2, and its age is less than 30 seconds) reboot the system
if [ -f "${FLAG_FILE}" ] && [[ $(find "${FLAG_FILE}" -newermt '-30 sec') == '' ]]; then
echo '1' > "$FLAG_FILE"
elif [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
touch "$FLAG_FILE"
NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
else
systemctl reboot
fi
] Сделайте его исполняемым: sudo chmod +x /etc/acpi/reboot.sh
Создайте скрипт /etc/acpi/reboot.sh и поместите в него следующие строки:
Проблема (в рамках этого подхода) мы должен использовать sudo для выполнения сценария и должен позволить пользователям делать это без пароля - здесь приводятся более подробные сведения об этом шаге: как мне запустить конкретный sudo c omsands без пароля? Поэтому мы должны собрать файл, расположенный в /etc/sudoers.d/, который называется, например, my_rbt. Для этого мы должны использовать команду visudo -f:
Похоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.
Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.
KeyPress event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Вы можете видеть код ключа как keycode 156. [!d2 ]
После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:
Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkbПохоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.
Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.
KeyPress event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Вы можете видеть код клавиши как keycode 156.
После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:
Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkbПохоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.
Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.
KeyPress event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Вы можете видеть код клавиши как keycode 156.
После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:
Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkbПохоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.
Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.
KeyPress event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Вы можете видеть код клавиши как keycode 156.
После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:
Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkbПохоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.
Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.
KeyPress event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Вы можете видеть код клавиши как keycode 156.
После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:
Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkbПохоже, что для ноутбуков Lenovo (по крайней мере, мой G575) ключ OneKey Recovery - это еще один ключ.
Используя команду xev, вы можете узнать scancode. xev откроет окно с черным квадратом, наведите курсор на него и затем нажмите клавишу OKR.
KeyPress event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 51, synthetic NO, window 0x1600001,
root 0x497, subw 0x1600002, time 1092364, (50,41), root:(52,479),
state 0x0, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Вы можете видеть код клавиши как keycode 156.
После нахождения кода ключа все, что вам нужно найти, - это сопоставление кода ключа с конкретным действием. Вот несколько полезных вопросов:
Как сделать ключ Caps Lock третьим ключом Shift? https://unix.stackexchange.com/questions/188164/override-a-few-keycodes-with-xkb