MyTetra Share
Делитесь знаниями!
Как в Astra Linux 1.6 разрешить работу клавиатурного ввода в интергрируемом окне xterm?
Время создания: 03.03.2025 14:27
Текстовые метки: astra, linux, xterm, tkinter, parsec, X11, tkinter, python, окно, интеграция, вставка, клавиатурный, ввод, символ, терминал
Раздел: Компьютер - Linux - Дистрибутив Astra Linux
Запись: xintrea/mytetra_syncro/master/base/1741001227f37ruxb2m6/text.html на raw.github.com

В классическом терминале xterm имеется специальная опция -into. Она позволяет "вставить" терминал в окно, идентификатор которого известен. Это свойство XTerm используется для быстрого добавления терминала в ПО, например если программа написана на Python с использованием библиотеки Tkinter.


Итак, интеграция окна происходит через давно существующую опцию -into терминала xterm. Программа на Tkinter создает окно, выясняет X-идентификатор этого окна, и вставляет в него терминал xterm путем запуска команды:



xterm -into <id_окна> ... прочие опции ...



Однако, в обновлениях Astra Linux 1.6 старше 12 Update перестал работать текстовый ввод в xterm. То есть, отключилась возможность писать команды в интегрированном xterm, ввод просто не работает.


В файле /var/log/fly-dm/Xorg.0.log обнаруживаются следующие ошибки:



[ 28822.592] XPARSEC: keyloger /usr/bin/xterm(pid=23872) detected by receive event from other owned and-or mac level window (/usr/bin/python3.5,pid=23863)

[ 28822.593] XPARSEC: keyloger /usr/bin/xterm(pid=23872) detected by receive event from other owned and-or mac level window (/usr/bin/python3.5,pid=23863)


То есть, ввод блокирует обновленная подсистема безопасности PARSEC. Она думает, что клавиатурный ввод утекает в другое окно. Техподдержка говорит так: "Логика работы функции блокировки следующая: приложение получает клавиатурные нажатия, выполненные оператором в окнах, созданных не этим приложением, поэтому ввод запрещен".


Решение данной проблемы достаточно простое. Необходимо в файл /etc/X11/trusted добавить строку:



/usr/bin/xterm(KBD_R)



Чтобы это сделать, можно от суперпользователя выполнить команду:



echo "/usr/bin/xterm(KBD_R)" >> /etc/X11/trusted



После выполнения данной команды ввод в GUI интерфейсе заработает. Перегружать компьютер или рабочий стол нет необходимости. Дстаточно просто перезапустить само GUI-приложение, в котором используется XTerm-терминал.


Значения ролей, устанавливаемых в файле настройки доверенных программ /etc/X11/trusted, следующие:




Роль

Значение

PROP_R

Работать со свойствами других окон

CLIPB_R

Работать с буфером обмена (для менеджеров буфера обмена)

MAC_R

Подключаться с иной меткой (выше), чем метка сессии

HOST_R

Управлять механизмом Host Access Control

KBD_R

Оперировать с некоторыми событиями ввода (для виртуальных клавиатур)

SNAP_R

Делать скриншоты (в т. ч. VNC-серверу, композитным менеджерам и т. п.)

NESTED_R

Для пометки вложенных Х-серверов (Xephyr, Xnest и т. п.)

REPARENT_R

Менять окна родительских окон (для менеджеров окон)

WM_R

Для менеджеров окон, комбинация PROP_R, SNAP_R, REPARENT_R, KBD_R

ALL_R

Комбинация всех ролей



Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования