Понимание и настройка различных методов ввода

21

Я использую Trisquel GNU / Linux 7.0 LTS с GNOME 3 Flashback Environment.

Я слышал о трех разных методах ввода, а именно. ibus, ximИ uim. И, кажется ibus, предустановлен в моей системе.

$ cat trisquel_7.0_i686.iso.manifest | grep ibus
gir1.2-ibus-1.0 1.5.5-1ubuntu3
ibus 1.5.5-1ubuntu3
ibus-gtk:i386 1.5.5-1ubuntu3
ibus-m17n 1.3.4-3ubuntu1
ibus-table 1.5.0.is.1.5.0.20130419-2
libibus-1.0-5:i386 1.5.5-1ubuntu3
libusb-0.1-4:i386 2:0.1.12-23.3ubuntu1
libusb-1.0-0:i386 2:1.0.17-1ubuntu2
libusbmuxd2 1.0.8-2ubuntu1
libustr-1.0-1:i386 1.0.4-3ubuntu2

Сталкиваясь этой проблемой , я узнал об установке uimи настройки с GTK_IM_MODULE="uim"в ~/.profile. Недавно я удалил uimи удалил GTK_IM_MODULE="uim"строку из ~/.profile. Но чтобы преодолеть эту ошибку, я планирую избавиться ibusсейчас.

Без установки какого-либо дополнительного метода ввода (скажем, свежеустановки Trisquel), echo $GTK_IM_MODULEвыводит ximИтак, я запутался, потому что, учитывая, что метод ввода по умолчанию есть ibus, тогда зачем $GTK_IM_MODULEговорить xim?

Также я могу apt-get remove ibus? или я должен uimсначала установить, а потом удалить ibus? Также я хочу знать, какой метод ввода в настоящее время работает ibusили xim? И Что такое правильный способ задать метод ввода (т.е. он GTK_IM_MODULE="uim"в ~/.profile)?

Кроме того, я нашел одну схему gsettings:

$ gsettings get org.gnome.desktop.interface gtk-im-module
'gtk-im-context-simple'

Кратко / В общих чертах мне нужна помощь, чтобы понять установку / удаление и настройку другого метода ввода:

  • Как узнать, какой метод ввода активен в данный момент?
  • Как мне установить и настроить другой метод ввода? (я должен удалить другой?)
Pandya
источник

Ответы:

45

Весь стек ввода X11 - беспорядок. Прежде всего, вам не нужны какие-либо специальные методы ввода, если вы просто печатаете латинские символы или многосимвольные последовательности создания, как определено раскладкой клавиатуры XKB. Строго говоря, любые многоключевые последовательности, такие как мертвые клавиши, требуют очень простого метода ввода. Но они предоставляются libx11 / XKB и работают без каких-либо дополнительных IM-фреймворков. Так что совершенно нормально удалить все ibus, uim, fcitx или любой другой метод ввода, если у вас нет необходимости печатать языки, такие как китайский или японский.

Как вы уже сказали, Gnome сделал ibus стандартным методом ввода, решение, которое не всем понравилось. Есть много людей, которые предпочитают fcitx (который, по-видимому, используется по умолчанию для большинства дистрибутивов KDE), а не ibus по нескольким причинам: будь то правильная языковая поддержка (в основном японский или упрощенный, а не традиционный китайский) или проблемы с производительностью. Поскольку я не говорю на каких-либо восточных языках, которые нуждаются в специальной системе обмена мгновенными сообщениями, я не могу ничего добавить к этой дискуссии. Но если вы заинтересованы в более подробной информации о fcitx vs ibus, вы можете прочитать эту слегка устаревшую (2012), но, вероятно, все еще точную статью LWN .

Однако тот факт, что ibus является IM по умолчанию для Gnome, не делает его обязательным. Вы можете использовать любой другой метод ввода, который вам нравится, или вообще никакого. Конфигурация IM выполняется через переменные среды. Но за исключением случаев, когда вы используете исключительно приложения GTK + (в чем я сомневаюсь), вы должны устанавливать больше, чем просто GTK_IM_MODULE. Правильный способ установки метода ввода:

export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS="@im=fcitx"

в случае fcitx или

export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"
export XMODIFIERS="@im=ibus"

в случае ibus. UIM работает так же. Если вы хотите явно отключить любой метод ввода, используйте эти настройки:

export GTK_IM_MODULE="gtk-im-context-simple"
export QT_IM_MODULE="simple"

Пустая строка также работает.

Вы можете установить эти переменные в масштабе всей системы /etc/profile(или выделенном файле внутри /etc/profile.dсоответственно) или внутри вашей локальной системы ~/.xprofile. Установка этого параметра ~/.bashrcили ~/.profileне гарантирует, что линии будут выполняться при входе в систему с использованием графического диспетчера входа, такого как GDM, SDDM, KDM или LightDM. Если вы начинаете сеанс X с использованием XDM, Slim или startx, вам нужно вставить эти строки ~/.xinitrc.

Если вы настроили метод ввода, отличный от ibus, перейдите к настройкам Gnome и убедитесь, что все настройки, связанные с ibus, отключены, особенно любые сочетания клавиш. В качестве альтернативы, скажите Gnome не трогать настройки клавиатуры, используя:

gsettings set org.gnome.settings-daemon.plugins.keyboard active false

или вообще удалите ibus.

А что насчет XIM? XIM - это довольно устаревший протокол метода ввода, который ibus и fcitx реализуют только по причинам устаревшей поддержки. Нет никакой реальной причины, почему вы хотели бы использовать XIM в настоящее время для любого из этих двух. Единственная причина, по которой вы хотите установить GTK_IM_MODULE="xim"это переопределение жестко закодированных настроек ComposeKey в GTK .

Чтобы ответить на ваш другой вопрос: я не думаю, что на самом деле есть способ определить, какой метод ввода активен в данный момент, кроме как посмотреть на переменные среды или узнать, какие IM установлены в вашей системе. Если GTK_IM_MODULEне установлено, GTK выбирает встроенный IM на основе конфигураций в /etc/gtk-2.0/gtk.immodules. GTK 3.0 смотрит в /usr/lib/gtk-3.0/3.0.0/immodules.cacheкотором генерируется gtk-query-immodules-3.0.

Причина , по которой GTK_IM_MODULEустановлен на ximэто , вероятно , какой - то шальной где - то определение переменной в /etc/profile, /etc/profile.d/*или любой другой из ваших локальных или глобальных оболочки RC файлов. Не стесняйтесь сбросить или переопределить эту переменную, если вы чувствуете необходимость сделать это.

Однако, согласно этому комментарию к сообщению об ошибке в Gnome, я предполагаю, что значение, настроенное через, gsettingsпереопределяет значение, установленное GTK_IM_MODULEдля приложений, активируемых DBus. Так что, по крайней мере, ваши приложения Gnome, вероятно, используют gtk-im-context-simpleв данный момент, что фактически означает стандартное поведение (то есть, нет ibus или любого другого выделенного IM).

Янек Бевендорф
источник
Отличное объяснение и предыстория. Теперь, если только я gsettingsне буду приставать к себе, всякий раз, когда я пытаюсь что-то сделать xD (даже --version segfaults !!)
sqweek
Так что у меня на Ubuntu 18.04 есть ibus и xim. Могу ли я безопасно удалить их оба, если я не собираюсь печатать на языках CJK?
Suncatcher
Да, но я не буду удалять XIM без необходимости. Это очень устарело, но иногда используется в качестве основы для других функций. Поэтому, если вам действительно не нужны несколько килобайт, я бы не стал их удалять.
Янек Бевендорф