Вопрос или проблема
Я запускаю лабораторное приложение kiosk и хочу предотвратить легкое переключение пользователей на tty.
Ранее у меня был Xserver с включенной опцией “DontVTSwitch”, и он работал отлично. Я переключился на labwc из-за внешних причин и столкнулся с массой трудностей в реализации этого. Есть несколько требований:
- Предотвратить выход из вида labwc с помощью Ctrl+Alt+F[2-9]
- Разрешить переключение с помощью специального сочетания клавиш (это уже реализовано с помощью сочетания клавиш в
.config/labwc/rc.xml
, которое вызывает скрипт, использующийchvt
)
Некоторые вещи, которые я пробовал, но которые не сработали:
- Создание пустых сочетаний клавиш в
.config/labwc/rc.xml
так:<keybind key="C-A-F2"><action name="None"/></keybind>
- Это не сработало. Я думаю, что сочетание клавиш не доходит до этой части. Я пробовал изменить на
<action name="Execute" command="echo 'VT switching'"/>
, и сообщение не выводилось, но переключение всё равно происходило.
- Это не сработало. Я думаю, что сочетание клавиш не доходит до этой части. Я пробовал изменить на
- Изменение
NAutoVTs
в/etc/systemd/logind.conf
на 1- Это не предотвратило выход из вида labwc, но приглашение на вход не появилось.
- Удаление любой строки, содержащей ‘Console_’ в
dumpkeys
, а затем загрузка этой новой карты- Это сработало в обратном направлении. Я могу выйти из labwc с помощью команды, но не могу вернуться.
Ответ или решение
Для обеспечения надёжной блокировки переключения виртуальных терминалов (TTY) в среде лабwc, требуется несколько специализированных подходов, учитывая особенности взаимодействия с консолью Linux и конфигурацию вашего рабочего окружения. Давайте подробно разберем вашу задачу, используя подход TEA (Теория, Пример, Применение).
Теория
Переключение между виртуальными терминалами (TTY) в Linux осуществляется, в основном, через комбинации клавиш Ctrl+Alt+Fn, где ‘Fn’ — функциональные клавиши от F1 до F12. Обычно Xserver предоставляет опции для ограничения такого поведения посредством параметров, как, например, "DontVTSwitch". Однако, в случае с использованием оконного менеджера labwc, такой функционал может потребовать ручной настройки операционной системы и её конфигурационных файлов.
Пример
Вы столкнулись с проблемами, когда пытались блокировать переключение через редактирование конфигурационных файлов и системных настроек без должного эффекта:
- Попытка задать пустые горячие клавиши в
labwc
через файл конфигурации не достигла цели, так как нажатия клавиш, отвечающих за переключение, обрабатываются на более низком уровне. - Настройки
logind.conf
через параметрNAutoVTs
не привели к желаемому результату. - Изменение карты клавиатуры с использованием
dumpkeys
, к сожалению, только частично решило задачу, сделав невозможным возврат в исходное состояние.
Применение
Исходя из проблематики, следует предпринять следующие шаги для решения вашей задачи:
-
Перехват TTY переключения на уровне ядра:
- Переключение реализуется глубже уровня обработчика keybind в
labwc
. Единственный надёжный метод заблокировать его — использование настройки ядра Linux. Один из возможных вариантов — внесение изменений в параметры загрузки ядра через конфигурацию bootloader (например, GRUB). - Редактируйте конфигурацию GRUB и добавьте параметр
consoleblank=0
кGRUB_CMDLINE_LINUX_DEFAULT
в файле/etc/default/grub
, после чего выполнитеupdate-grub
и перезагрузите систему. Это уменьшит шансы на неожиданное переключение в консольный режим.
- Переключение реализуется глубже уровня обработчика keybind в
-
Использование udev для блокировки функциональных клавиш:
- Создайте udev-правило, которое будет глушить события нажатия функциональных клавиш. Например, создайте файл с именем
/etc/udev/rules.d/99-disable-tty.rules
и добавьте правила для функциональных клавиш, чтобы предотвратить их обработку.
- Создайте udev-правило, которое будет глушить события нажатия функциональных клавиш. Например, создайте файл с именем
-
Дополнительные настройки:
- Убедитесь, что все ключевые сочетания клавиш, которые могут вызывать переключение консолей, блокируются через mapkey или аналогичный инструмент управления клавиатурой.
Эти шаги помогут обеспечить требуемое поведение при использовании labwc
в режиме киоска, минимизируя риск случайного выхода из среды. Будьте осторожны с данными методами, так как они могут оказать влияние на общую функциональность системы.