Пропускать определенные ключи через экран блокировки

Другие указали, что предпосылки вопроса о том, что оболочка Bourne Again используется по умолчанию и повсеместно используется, совершенно неверны.

В дополнение к этому, действительно есть веские причины для использования чего-то другого, кроме оболочки Bourne Again, для интерпретации сценариев оболочки. Эти причины побудили в течение ряда лет большой проект Ubuntu и Debian удалить bashisms и сделать так, чтобы как можно больше сценариев оболочки запускалось при инициализации системы (это было много сценариев оболочки с Системой 5 . ] rc ) и установка / удаление пакетов используют оболочку Debian Almquist вместо оболочки Bourne Again.

Проще говоря: оболочка Bourne Again, набитая интерактивными функциями, не является самым быстрым интерпретатором оболочки для POSIX-совместимого сценария оболочки. Так что, если можно сделать свои сценарии оболочки POSIX-совместимыми, интерпретируя их с помощью более легкой программы, такой как оболочка Debian Almquist, его система будет работать лучше. (В конце концов, Debian пришлось внести небольшие изменения в оболочку Almquist, чтобы добавить поддержку пары не-POSIX конструкций оболочки, которые были просто слишком глубоко и широко внедрены и слишком полезны, чтобы от них избавиться.)

Результат из всего этого был большой выигрыш в производительности начальной загрузки.

Итак, здесь необходимо рассмотреть два различных класса оболочек:

  • Оболочки со всеми яркими интерактивными функциями, которые сконфигурированы как интерактивные оболочки входа для пользователей в базе данных учетных записей.
  • Оболочки, которые быстро интерпретируют множество сценариев, которые используются в качестве интерпретаторов сценариев программами сценариев оболочки.

Обратите внимание, что выражение «предпочтение / bin / sh » является чрезмерным упрощением. У Debian на самом деле было как минимум две цели:

  1. Перед администраторами, использующими оболочку Debian Almquist, Z Shell (в режиме POSIX), оболочку Bourne Again (в режиме POSIX), MirBSD Korn shell и другие, такие как / bin / sh , либо…

    1. … делали скрипты максимально переносимыми, так что переключение того, что / bin / sh было сопоставлено с didn ' т ломать вещи; или

    2. … создание непереносимых сценариев явно нацелено на правильную программу интерпретатора , вместо того, чтобы просто ожидать, что / bin / sh будет отображаться на нее.

  2. Оболочка Debian Almquist была сделана отображением по умолчанию для / bin / sh вместо Bourne Shell, так что те сценарии, которые были POSIX-совместимыми (или, точнее , Соответствует Руководству по политике Debian) выполнялась быстрее.

И, конечно, как только человек попадает в это, он может пойти намного дальше; например, рассмотрение компромиссов эффективности подобных / bin / true и / usr / bin / clear сценариев оболочки или скомпилированных программ. Но, к счастью, это выходит за рамки этого ответа. ☺

Все это, конечно, не ново и даже не специфично для Unix.Еще на рубеже веков я написал и опубликовал интерпретатор командной строки, который имел как «интерактивную», так и «неинтерактивную» разновидности, объясняя это самое разделение в своей документации и отмечая разницу между COMSPEC и переменные среды OS2_SHELL . Точно так же обсуждение удаления башизмов в Debian System V rc и сценарии установки / удаления пакетов восходит к 1990-м годам.

Дополнительная литература

6
12.02.2017, 21:37
2 ответа

Я кое-что понял: прослушивание необработанных нажатий клавиш возможно, даже когда фокус клавиатуры перехвачен экраном шкафчик. Недостатком является то, что при необработанных нажатиях клавиш вам нужно вручную отслеживать состояние клавиш-модификаторов, но, похоже, это работает довольно хорошо.

На основе этой идеи я создал небольшой демон горячих клавиш, который позволяет выполнять команды, даже когда экран заблокирован. Если кому интересно, можно найти здесь: https://github.com/tinloaf/lhkd

1
27.01.2020, 20:30

Если ваши медиа-клавиши посылают события ACPI, вы можете использовать acpid, чтобы действовать в соответствии с ними.

К сожалению, это требует глобальных изменений конфигурации (а не для каждого пользователя), и может быть сложно передать события в приложения X11.

Вы можете увидеть, какие события ACPI, если таковые имеются, посылаются вашими мультимедийными клавишами, запустив acpi_listen, а затем нажав эти клавиши. Например, вот что появляется в выводе acpi_listen при нажатии клавиши "яркость вверх" на моем ноутбуке:

video/brightnessup BRTUP 00000086 00000000

Если ваши клавиши действительно посылают события ACPI, вы можете настроить acpid на выполнение команды при их нажатии. Соответствующие файлы конфигурации обычно находятся в /etc/acpi/events/. Они могут иметь любое имя, если находятся в нужном каталоге. Они выглядят следующим образом:

event=^video/brightness(up|down) .*[^K]$
action=/etc/acpi/backlight-handler.sh %e

Первая строка содержит event=, за которой следует regex для поиска событий ACPI. Если событие соответствует regex, выполняется команда, указанная во второй строке (после action=). Команда %e расширяется до строки события. В данном случае она используется для передачи события в качестве аргументов командной строки сценария.

На Arch Wiki также есть хорошая статья о acpid: https://wiki.archlinux.org/index.php/Acpid

Следующим шагом будет выяснение того, как управлять медиаплеером из сценария.

0
27.01.2020, 20:30

Теги

Похожие вопросы