Весь стек ввода 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 !!)