Вот мои настройки ввода (обратите внимание на порядок языков в списке, который соответствует моим предпочтениям).
Теперь, когда я изначально вызываю сочетание клавиш для переключения ввода, список выглядит так (как и ожидалось):
Теперь я выбираю ввод на корейском языке (второй пункт) и снова активирую сочетание клавиш. Вот как выглядит список:
Как видите, порядок изменился.
И теперь, если я выберу другой вход и попробую переключиться снова, список полностью сместится.
Есть ли способ запретить gnome постоянно перестраивать список?
Думаю, стоит упомянуть, что моя работа связана с языками, и я постоянно переключаюсь с одного языка на другой (ищу китайский иероглиф, возвращаюсь к английской клавиатуре, возвращаюсь к корейскому словарю, чтобы найти определение и т. д.), я обнаружил, что мозг легче запоминает расположение языков в списке, чем то, что на самом деле написано, и именно так работает Windows.
Хотелось бы, чтобы был способ это исправить, иначе мне пришлось бы сообщать об этом как о проблеме на веб-сайте gnome.
Заранее спасибо.
решение1
Поскольку на данный момент не существует расширения gnome-shell для статического переключения раскладки клавиатуры с использованием стандартных сочетаний клавиш Super+Пробел и Shift+Super+Пробел.
и комментарии по этой ссылкеСтатический порядок переключения раскладки клавиатуры в Ubuntu 17.10 и более поздних версиях с GNOME 3от ОП
Проблема с решением, предложенным в ссылке (Alt+Shift), заключается в том, что в нем отсутствует визуальная обратная связь, и нельзя использовать сочетание клавиш для предыдущего (например, win+shift+space для возврата на один ввод). Так что это не совсем удовлетворительно.
Я мог бы достичь по крайней мере одного пункта из двух (визуальная обратная связь и возврат к предыдущему макету) с помощью следующего обходного решения.
Обходной путь
ОС: Ubuntu 19.10
Создайте два скрипта с указанным ниже содержимым, я назвал их «SuSpace.sh» и «ShSuSpace.sh».
SuSpace.sh
#!/bin/bash
totalLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources.length" | grep -oP "(?<=').*?(?=')")
currentLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index" | grep -oP "(?<=').*?(?=')")
declare -i math=$currentLang+1
if [ "$math" -lt "$totalLang" ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$currentLang+1"].activate()"
else
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"
fi
ShSuSpace.sh
#!/bin/bash
totalLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources.length" | grep -oP "(?<=').*?(?=')")
currentLang=$(gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().currentSource.index" | grep -oP "(?<=').*?(?=')")
declare -i math=$currentLang-1
if [ "$math" -eq -1 ]; then
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$totalLang-1"].activate()"
else
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources["$currentLang-1"].activate()"
fi
Вы можете создать собственные сочетания клавиш для этих двух скриптов по своему желанию.