В общем, задача стоит такая :
- есть приложение, запущенное «снаружи» (DISPLAY=:0.0)
- есть второе, запущенное «внутри» xephyr-а (DISPLAY=:1.0).
- есть третье запущенное в xephyr приложение (вообще - второе, это скорее что-то wm-подобное) - (DISPLAY=:1.0)
Нужно обеспечить корректную смену раскладок.
Как я понял, «из коробки» xephyr позволяет задать только 1 «стартовую» раскладку (или ошибаюсь?) В рамках костыля вижу такой вариант - у 1 и 2 приложения есть расшаренная память, в которой можно, ко всему прочему, положить название раскладки.
Тогда второе могло бы просто выполнять по мере изменения
DISPLAY=:1.0 setxkbmap <layoutName>
# setkbxmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+ru:2+inet(evdev)+group(alt_shift_toggle)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
В рамках извращений - следующее :
case "$(xset -q|gr LED| awk '{ print $10 }')" in
"00000002") KBD="English" ;;
"00001002") KBD="Thai" ;;
*) KBD="unknown" ;;
esac
Также нашёл гномоспецифичное org/gnome/desktop/input-sources/current, но в моём mate оно всегда выставлено в 0.
Есть какие-то ещё варианты?