पूरे X11 इनपुट स्टैक एक गड़बड़ है। सबसे पहले, आपको किसी विशेष इनपुट मेथड फ्रेमवर्क की जरूरत नहीं है, यदि आप अपने XKB कीबोर्ड लेआउट द्वारा परिभाषित लैटिन अक्षरों या मल्टी-कैरेक्टर कम्पोज़ सीक्वेंस को टाइप कर रहे हैं। सख्ती से बोलना, किसी भी बहु-कुंजी अनुक्रम, जैसे कि डेड-की, को बहुत ही सरल इनपुट विधि की आवश्यकता होती है। लेकिन वे libx11 / XKB द्वारा प्रदान किए जाते हैं और बिना किसी अतिरिक्त IM फ्रेमवर्क के काम करते हैं। तो यह ibus, uim, fcitx या जो भी इनपुट विधि आपके पास है अगर आपको चीनी या जापानी जैसी भाषाओं को लिखने की आवश्यकता नहीं है, तो सभी की स्थापना रद्द करना पूरी तरह से ठीक है।
जैसा कि आपने पहले ही कहा, ग्नोम ने आईबस को डिफ़ॉल्ट इनपुट विधि बनाया, एक निर्णय जो हर कोई खुश नहीं था। ऐसे कई लोग हैं जो कई कारणों से ibus पर fcitx (जो कि ज्यादातर KDE वितरण के लिए डिफ़ॉल्ट लगते हैं) पसंद करते हैं: यह उचित भाषा समर्थन (ज्यादातर जापानी बनाम सरलीकृत बनाम पारंपरिक चीनी) या प्रदर्शन के मुद्दे हैं। चूँकि मैं किसी भी पूर्वी भाषा को नहीं बोलता जिसके लिए एक विशेष IM फ्रेमवर्क की आवश्यकता है, मैं वास्तव में उस बहस में कुछ नहीं जोड़ सकता। लेकिन अगर आप fcitx बनाम ibus के बारे में अधिक जानकारी में रुचि रखते हैं, तो आप इसे थोड़ा दिनांकित (2012) पढ़ना चाह सकते हैं, लेकिन संभवतः अभी भी सटीक LWN लेख ।
हालाँकि, यह तथ्य कि ibus Gnome के लिए डिफ़ॉल्ट IM है, यह अनिवार्य नहीं बनाता है। आप किसी भी अन्य इनपुट विधि का उपयोग कर सकते हैं जिसे आप पसंद करते हैं या बिल्कुल भी नहीं। IM कॉन्फ़िगरेशन पर्यावरण चर के माध्यम से किया जाता है। लेकिन सिवाय इसके कि जब आप पूरी तरह से जीटीके + एप्लिकेशन (जिसका मुझे संदेह है) का उपयोग कर रहे हैं, तो आपको बस से अधिक सेट करना चाहिए 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
यह सुनिश्चित नहीं करेगा कि जीडीएम, एसडीडीएम, केडीएम या लाइटडैम जैसे ग्राफ़िकल लॉगिन प्रबंधक का उपयोग करके आपके सिस्टम में लॉग इन करते समय लाइनों को निष्पादित किया जाएगा। यदि आप XDM, स्लिम या का उपयोग करके अपना X सत्र शुरू कर रहे हैं 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"
वह है GTK की हार्डकोड की गई ComposeKey सेटिंग को ओवरराइड करना ।
आपके अन्य प्रश्न का उत्तर देने के लिए: मुझे नहीं लगता है कि वास्तव में यह पता लगाने का एक तरीका है कि पर्यावरण चर को देखने या यह जानने के लिए कि कौन सा आईएम आपके सिस्टम पर स्थापित है, को छोड़कर किस समय इनपुट विधि सक्रिय है। यदि GTK_IM_MODULE
सेट नहीं किया गया है, तो GTK कॉन्फ़िगरेशन के आधार पर एक अंतर्निहित IM का चयन करता है /etc/gtk-2.0/gtk.immodules
। जीटीके 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/*
या आपके स्थानीय या वैश्विक शेल आरसी फ़ाइलों में से किसी अन्य में है। यदि आप ऐसा करने की आवश्यकता महसूस करते हैं, तो इस वैरिएबल को अप्राप्त या ओवरराइड करने के लिए स्वतंत्र महसूस करें।
हालाँकि, इस गनोम बग रिपोर्ट टिप्पणी के अनुसार, मुझे लगता है कि डीबीस-सक्रिय अनुप्रयोगों के लिए gsettings
निर्धारित मूल्य को ओवरराइड करने के माध्यम से कॉन्फ़िगर किया गया मान है GTK_IM_MODULE
। तो कम से कम आपके Gnome अनुप्रयोगों का उपयोग संभवत: gtk-im-context-simple
उस समय हो रहा है, जिसका प्रभावी रूप से मानक व्यवहार (यानी कोई ibus या कोई अन्य समर्पित IM) नहीं है।
gsettings
जब भी मैं कुछ भी xD करने की कोशिश मुझ पर SEGFAULT नहीं था (यहां तक कि --version segfaults !!)