<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>43925</bug_id>
          
          <creation_ts>2022-10-03 13:46:53 +0300</creation_ts>
          <short_desc>Не переключает раскадку IBus через клавиатурное сочетание для Education XFCE</short_desc>
          <delta_ts>2026-09-23 15:41:55 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>libxfce4ui</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Evgeny Shesteperov">alimektor</reporter>
          <assigned_to name="Mikhail Efremov">sem</assigned_to>
          <cc>aris</cc>
    
    <cc>boyarsh</cc>
    
    <cc>cas</cc>
    
    <cc>karonus</cc>
    
    <cc>rauty</cc>
    
    <cc>sem</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>215528</commentid>
    <comment_count>0</comment_count>
    <who name="Evgeny Shesteperov">alimektor</who>
    <bug_when>2022-10-03 13:46:53 +0300</bug_when>
    <thetext>Версия
======

Обнаружено в версии ibus-1.5.25-alt1

Дистрибутивы
============

* p10-education-10-x86-64-xfce

Шаги воспроизведения
====================

1. Установить пакеты:

	# apt-get install -y ibus-m17n libm17n-db

2. Добавить строки в ~/.bashrc для тестового пользователя:


	$ cat &gt;&gt; ~/.bashrc &lt;&lt; EOF
	export GTK_IM_MODULE=ibus
	export XMODIFIERS=@im=ibus
	export QT_IM_MODULE=ibus
	EOF

3. Выбрать Меню приложений -&gt; Запустить Параметры IBus. При запросе &quot;IBus не выполняется. Запустить?&quot; нажать Да.
4. Перейти на вкладку Дополнительно -&gt; Раскладка клавиатуры -&gt; выбрать чекбокс Использовать системную раскладку клавиатуры.
5. Перейти на вкладку Метод ввода -&gt; нажать Добавить -&gt; выбрать Русский -&gt; в списке выбрать translit (m17n) -&gt; нажать Добавить.
6. Убедиться, что выбрана английская раскладка в системе (EN).
7. Поменять раскладку IBus через клавиатурное сочетание Win + Space на translit (m17n).

Ожидаемый результат: успешное изменение через клавиатурное сочетание.

Фактический результат: не происходит ничего. Меняется только через выбор в трее.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298124</commentid>
    <comment_count>1</comment_count>
    <who name="Vera Blagoveschenskaya">vercha</who>
    <bug_when>2026-09-11 14:17:37 +0300</bug_when>
    <thetext>Результат проверки актуальности

Состояние:
Образ Education XFCE p10 EOL. Sisyphus: ibus 1.5.34, Super+space по умолчанию; параллельно открыт 56102 про хоткеи. Без проверки на текущем XFCE нельзя сказать, жив ли срыв переключения.

Рекомендация:
ретест Win+Space на XFCE Sisyphus/p11</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299290</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2026-09-17 08:23:38 +0300</bug_when>
    <thetext>Sisyphus 2026-09-17, Альт Образование 11.2 XFCE: ibus-1.5.34-alt1, ibus-m17n-1.4.40-alt1, libm17n-db-1.8.6-alt1, branding-alt-education-xfce-settings-11.2-alt1. Шаги из описания повторены (ru-translit (m17n) добавлен, «Использовать системную раскладку» включено, триггер &lt;Super&gt;space): воспроизводится, но причина не в ibus.

В Education XFCE голые Super_L/Super_R заняты whisker-меню:
  $ xfconf-query -c xfce4-keyboard-shortcuts -p /commands/custom/Super_L
  xfce4-popup-whiskermenu
  $ rpm -qf /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
  branding-alt-education-xfce-settings-11.2-alt1.x86_64
xfsettingsd захватывает Super, и ibus не видит Super+Space: с привязкой `ibus engine` после Super+Space остаётся xkb:us::eng (текст «privet mir»); после
  xfconf-query -c xfce4-keyboard-shortcuts -p /commands/custom/Super_L -r   (и Super_R)
то же нажатие переключает на m17n:ru:translit, «privet» набирается как «привет» и в xterm (XIM через ibus-x11), и в mousepad (с ibus-gtk3): e1 xkb:us::eng → e2 m17n:ru:translit → e3 xkb:us::eng, текст «privet привет mir».

Замечание к шагам: `apt-get install ibus-m17n libm17n-db` не ставит ibus-gtk3 (/usr/lib64/gtk-3.0/3.0.0/immodules/ без im-ibus.so), так что GTK-приложения без него ibus не используют вовсе — переключение через трей меняет только глобальный движок. aris@: стоит подумать о Requires/Recommends ibus-gtk3 в ibus.

Перевешиваю на branding-alt-education: нужно снять привязку голого Super с whisker-меню либо вызывать меню иначе (xcape / собственная обработка Super в whiskermenu), чтобы не ломать Super+Space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299951</commentid>
    <comment_count>3</comment_count>
    <who name="Ajrat Makhmutov">rauty</who>
    <bug_when>2026-09-23 15:41:28 +0300</bug_when>
    <thetext>Причина не в ibus и не в конкретном сочетании.

Одиночный модификатор как горячая клавиша реализован в libxfce4ui: xfce_shortcuts_grabber_xgrab() делает XGrabKey(xdisplay, g.keycode, g.non_virtual_modifiers | ..., root_window, False, GrabModeAsync, GrabModeAsync) — https://gitlab.xfce.org/xfce/libxfce4ui/-/blob/9e5b8a1efbd887821d451bb68d582bdeee2c5e7b/libxfce4kbd-private/xfce-shortcuts-grabber.c#L273-277 . Для сочетания из одной клавиши Super_L маска модификаторов нулевая, то есть захватывается сама клавиша Super, нажатая без Ctrl, Alt и Shift. Выполнение команды при этом отложено до отпускания клавиши — проверка is_modifier_key() в фильтре событий, https://gitlab.xfce.org/xfce/libxfce4ui/-/blob/9e5b8a1efbd887821d451bb68d582bdeee2c5e7b/libxfce4kbd-private/xfce-shortcuts-grabber.c#L797 — чтобы меню не вылезало при каждом Super+&lt;клавиша&gt;.

Пока Super удерживается, клавиатура активно захвачена xfsettingsd, и следующая нажатая клавиша уходит ему, а не приложению в фокусе. ibus ловит свой переключатель пассивным захватом XI2 на корневом окне — XI.grab_keycode(...), строка 245 в ibus/ui/gtk3/keybindingmanager.vala, https://git.altlinux.org/gitoskop/#/srpms/i/ibus.git/-/blob/sisyphus/ibus/ui/gtk3/keybindingmanager.vala — и активироваться в это время не может. (XGrabKey(3): пассивный захват срабатывает только при условии &quot;the keyboard is not grabbed&quot;, а активный &quot;terminated automatically when ... the specified key released&quot;.)

Перезапустить событие тоже не выйдет. XAllowEvents действует только на замороженную клавиатуру, а при GrabModeAsync она не заморожена. С GrabModeSync мимо по другой причине: ReplayKeyboard пропускает пассивные захваты на том же окне и выше по дереву (&quot;ignores any passive grabs at or above ... the grab_window&quot;), а захват ibus висит ровно на корневом окне.

Брендинг тут не при чём: то же получит любой, кто назначит одиночный Super через настройки сочетаний клавиш.

Апстрим этот сценарий уже видел: issue #29 https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/29 описывает ровно whiskermenu на Super_L плюс переключение метода ввода на Super+space и закрыт как дубликат #1 https://gitlab.xfce.org/xfce/libxfce4ui/-/issues/1 . Исправление #1 отложило одиночный модификатор на отпускание и тем убрало двойное срабатывание, но не то, что чужой захват на Super+&lt;клавиша&gt; перестаёт активироваться.

Дефект не только в Альт Образовании. Та же привязка раздаётся в branding-simply-linux (строки 7-8, и в p11, и в Sisyphus), https://git.altlinux.org/gitoskop/#/gears/b/branding-simply-linux.git/-/blob/sisyphus/xfce-settings/etcskel/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml ; в Sisyphus этот файл вообще приходит только из двух пакетов брендинга — нашего и Simply Linux. Конфигурация одна и та же, так что на Simply Linux ожидаемо воспроизводится так же.

Убрать привязку в брендинге — не починка. Дефект остаётся, и симптом вернётся у любого, кто назначит одиночный Super себе сам. По сути это отказ от целого класса сочетаний: одиночный модификатор нельзя использовать, не сломав Super+&lt;клавиша&gt; у всех остальных программ. Поэтому перевешиваю на libxfce4ui. Как чинить — вопрос к сопровождающему: очевидного решения средствами X11 нет, возможные пути — отпускать захват после нажатия любой другой клавиши либо перезапускать событие через XTEST.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>