Отключить переключение tty в labwc

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

Я запускаю лабораторное приложение 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, к сожалению, только частично решило задачу, сделав невозможным возврат в исходное состояние.

Применение

Исходя из проблематики, следует предпринять следующие шаги для решения вашей задачи:

  1. Перехват TTY переключения на уровне ядра:

    • Переключение реализуется глубже уровня обработчика keybind в labwc. Единственный надёжный метод заблокировать его — использование настройки ядра Linux. Один из возможных вариантов — внесение изменений в параметры загрузки ядра через конфигурацию bootloader (например, GRUB).
    • Редактируйте конфигурацию GRUB и добавьте параметр consoleblank=0 к GRUB_CMDLINE_LINUX_DEFAULT в файле /etc/default/grub, после чего выполните update-grub и перезагрузите систему. Это уменьшит шансы на неожиданное переключение в консольный режим.
  2. Использование udev для блокировки функциональных клавиш:

    • Создайте udev-правило, которое будет глушить события нажатия функциональных клавиш. Например, создайте файл с именем /etc/udev/rules.d/99-disable-tty.rules и добавьте правила для функциональных клавиш, чтобы предотвратить их обработку.
  3. Дополнительные настройки:

    • Убедитесь, что все ключевые сочетания клавиш, которые могут вызывать переключение консолей, блокируются через mapkey или аналогичный инструмент управления клавиатурой.

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

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

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