Я використовую 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/isissue/15), але не пощастило отримати хороших відповідей.
І в цей момент я застряг. Я недостатньо кваліфікований, щоб визначити проблему в коді оболонки gnome. Я навіть не впевнений, що це проблема (оболонка гнома).
Що я хочу - це спосіб, який знає gnome, щоб переключити розкладку клавіатури з терміналу. Чи може хтось вказати мені в правильному напрямку? Чи слід подавати це як помилку (особливо той факт, що розкладку клавіатури неможливо змінити через 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()"