Весь стек входу X11 - це безлад. Перш за все, вам не потрібна якась спеціальна рамка методу введення, якщо ви просто набираєте латинські символи або багатосимвольні композиційні послідовності, як визначено вашою розкладкою клавіатури XKB. Строго кажучи, будь-які послідовності з декількома клавішами, такі як мертві ключі, вимагають дуже простого способу введення. Але вони забезпечуються libx11 / XKB і працюють без будь-яких додаткових фреймворків IM. Тож цілком добре видалити всі ibus, uim, fcitx або будь-який інший спосіб введення, якщо вам не потрібно вводити такі мови, як китайська чи японська.
Як ви вже говорили, Gnome зробив ibus методом введення за замовчуванням, рішенням якого не всі були задоволені. Є багато людей, які віддають перевагу fcitx (який, мабуть, є за замовчуванням для більшості дистрибутивів KDE) через ibus з кількох причин: будь то правильна підтримка мови (переважно японська проти спрощеної порівняно з традиційною китайською) або проблеми з продуктивністю. Оскільки я не розмовляю ні однією східною мовою, для якої потрібна спеціальна система IM, я не можу нічого додати до цієї дискусії. Але якщо вас цікавить докладніша інформація про fcitx vs ibus, ви, можливо, захочете прочитати цю трохи датовану (2012 р.), Але, ймовірно, все-таки точну статтю про LWN .
Однак той факт, що ibus є типовим IM для Gnome, не робить його обов'язковим. Ви можете використовувати будь-який інший спосіб введення, який вам подобається, або взагалі його немає. Конфігурація чату здійснюється за допомогою змінних середовища. Але за винятком випадків, коли ви використовуєте виключно програми 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 .
Щоб відповісти на ваше інше запитання: я не думаю, що дійсно існує спосіб визначити, який метод введення активний на даний момент, за винятком перегляду змінних оточуючих середовищ або знань, які ІМ встановлені у вашій системі. Якщо GTK_IM_MODULE
не встановлено, GTK вибирає вбудований чат на основі конфігурацій в /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 чи будь-якого іншого виділеного чату).
gsettings
на мене не було segfault будь-коли, коли я намагаюся зробити що-небудь xD (навіть --version segfaults !!)