Как запретить gnome менять порядок ввода языка при переключении языков?

Как запретить gnome менять порядок ввода языка при переключении языков?

Вот мои настройки ввода (обратите внимание на порядок языков в списке, который соответствует моим предпочтениям).

введите описание изображения здесь

Теперь, когда я изначально вызываю сочетание клавиш для переключения ввода, список выглядит так (как и ожидалось):

введите описание изображения здесь

Теперь я выбираю ввод на корейском языке (второй пункт) и снова активирую сочетание клавиш. Вот как выглядит список:

введите описание изображения здесь

Как видите, порядок изменился.
И теперь, если я выберу другой вход и попробую переключиться снова, список полностью сместится.

Есть ли способ запретить gnome постоянно перестраивать список?

Думаю, стоит упомянуть, что моя работа связана с языками, и я постоянно переключаюсь с одного языка на другой (ищу китайский иероглиф, возвращаюсь к английской клавиатуре, возвращаюсь к корейскому словарю, чтобы найти определение и т. д.), я обнаружил, что мозг легче запоминает расположение языков в списке, чем то, что на самом деле написано, и именно так работает Windows.
Хотелось бы, чтобы был способ это исправить, иначе мне пришлось бы сообщать об этом как о проблеме на веб-сайте gnome.

Заранее спасибо.

решение1

Поскольку на данный момент не существует расширения gnome-shell для статического переключения раскладки клавиатуры с использованием стандартных сочетаний клавиш Super+Пробел и Shift+Super+Пробел.

и комментарии по этой ссылкеСтатический порядок переключения раскладки клавиатуры в Ubuntu 17.10 и более поздних версиях с GNOME 3от ОП

Проблема с решением, предложенным в ссылке (Alt+Shift), заключается в том, что в нем отсутствует визуальная обратная связь, и нельзя использовать сочетание клавиш для предыдущего (например, win+shift+space для возврата на один ввод). Так что это не совсем удовлетворительно.

Я мог бы достичь по крайней мере одного пункта из двух (визуальная обратная связь и возврат к предыдущему макету) с помощью следующего обходного решения.

Обходной путь

ОС: Ubuntu 19.10

Ссылка:Управление сочетанием клавиш по умолчанию Super+Space для переключения на следующий источник ввода без графического представления

Создайте два скрипта с указанным ниже содержимым, я назвал их «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

Вы можете создать собственные сочетания клавиш для этих двух скриптов по своему желанию.

введите описание изображения здесь

Связанный контент