Я использую GNOME 3.22.1, но проблема существует с 3.18.
До этого (не помню точную версию) я мог переключать раскладку клавиатуры, используя xkb-witch , простое приложение, которое использует привязки X.org под капотом.
После 3.18, если вы запустите xkb-switch, раскладка клавиатуры не будет переключаться в gnome. Дальнейшие исследования показали, что переключение раскладки работает, но в течение очень короткого промежутка времени.
Если вы запустите этот скрипт:
for i in $(seq 1000); do
lang=$(xkb-switch -s ru; xkb-switch);
if [[ "$lang" == "ru" ]]; then
echo $lang;
fi;
done
Вы получите от 3 до 20 «удачных» переключений раскладки, в зависимости от того, насколько вам повезло.
После поиска этой проблемы я получил следующий совет :
gsettings set org.gnome.desktop.input-sources current 0
Настройка изменяется, но макет остается прежним.
Я нашел один «хакерский» метод для изменения макета:
setxkbmap us,ru
setxkbmap ru,us
но оболочка gnome не знает об этом изменении и показывает неверный язык в индикаторе макета.
Я написал об этой проблеме (извините, недостаточно репутации, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15), но не повезло получить хорошие ответы.
И в этот момент я застрял. Я не достаточно опытен, чтобы определить проблему в коде оболочки gnome. Я даже не уверен, что это проблема гномов.
То , что я хочу , это гном-Aware способ переключения раскладки клавиатуры от терминала. Может ли кто-нибудь указать мне правильное направление? Должен ли я регистрировать это как ошибку (особенно тот факт, что раскладка клавиатуры не может быть изменена с помощью gsettings)?
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"