कमांड लाइन से gnome 3 में कीबोर्ड लेआउट कैसे बदलें


15

मैं gnome 3.22.1 का उपयोग कर रहा हूं, लेकिन समस्या 3.18 के बाद से मौजूद है।

इससे पहले (सटीक संस्करण याद नहीं है) मैं xkb- चुड़ैल , सरल एप्लिकेशन का उपयोग करके कीबोर्ड लेआउट को स्विच करने में सक्षम था जो हुड के नीचे X.org बाइंडिंग का उपयोग करता है।

3.18 के बाद यदि आप xkb- स्विच चलाते हैं, तो कीबोर्ड लेआउट gnome में स्विच नहीं किया जाएगा। आगे की जांच से पता चला है कि लेआउट स्विचिंग काम कर रही है, लेकिन बहुत कम समय के लिए।

यदि आप यह स्क्रिप्ट चलाते हैं:

for i in $(seq 1000); do
  lang=$(xkb-switch -s ru; xkb-switch);
  if [[ "$lang" == "ru" ]]; then
    echo $lang;
  fi;
done

आप 3 से 20 "सफल" लेआउट स्विचिंग से प्राप्त करेंगे, यह इस बात पर निर्भर करता है कि आप कितने भाग्यशाली हैं।

इस समस्या को हल करने के बाद मैं निम्नलिखित सलाह देता हूं :

gsettings set org.gnome.desktop.input-sources current 0

सेटिंग बदली जा रही है, लेकिन लेआउट समान है।

मुझे लेआउट बदलने के लिए एक "हैकी" विधि मिली है:

setxkbmap us,ru
setxkbmap ru,us

लेकिन सूक्ति शैल उस परिवर्तन से अवगत नहीं है, और लेआउट संकेतक में गलत भाषा दिखाता है।

मैंने इस समस्या के बारे में पोस्ट किया है (क्षमा करें, पर्याप्त प्रतिष्ठा नहीं, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15) लेकिन कोई सौभाग्य नहीं मिला कि कोई अच्छा जवाब नहीं मिला।

और इस बिंदु पर मैं फंस गया हूं। मैं इतना कुशल नहीं हूं कि समस्या को पहचानने में सक्षम हूं। मुझे यकीन नहीं है कि यह (सूक्ति शैल की) समस्या है।

जो मैं चाहता हूं वह टर्मिनल से कीबोर्ड लेआउट को बदलने के लिए एक सूक्ति-जागरूक तरीका है। क्या कोई मुझे सही दिशा दिखा सकता है? क्या मुझे इसे बग के रूप में दर्ज करना चाहिए (विशेषकर यह तथ्य कि कीबोर्ड लेआउट gsettings के माध्यम से नहीं बदला जा सकता है)?

जवाबों:


9

चूंकि सूक्ति-शैल DBus पर JS eval इंटरफ़ेस को उजागर करता है जिसकी सभी चर तक पहुंच होती है, इसलिए निम्नलिखित निर्देश के साथ करतब संभव है:

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()"

जो 0 वें लेआउट को सक्रिय करेगा, और इसके बाद।

क्रेडिट।


और यह पिछले उपयोग इनपुट विधि (टिप्पणियों से) पर स्विच करने का तरीका है:

gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"

आपके उत्तर के लिए धन्यवाद - इसने मुझे बहुत कुछ बचा लिया! और इस तरह से अंतिम प्रयुक्त इनपुट विधि पर स्विच किया जाता है:gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager()._mruSources[1].activate()"
19 Envek

4

यदि आप IBus को अपनी इनपुट विधि के रूप में उपयोग कर रहे हैं (जो कि संभावित डिफ़ॉल्ट है), तो आप ibusकमांड का उपयोग करके अपना इनपुट बदल सकते हैं :

# Set the layout to US English
ibus engine xkb:us::eng
# Set the input method to Japanese Mozc IME
ibus engine mozc-jp
# Set the layout to Russian
ibus engine xkb:ru::rus

आप ibus list-engineकमांड के साथ सभी उपलब्ध लेआउट देख सकते हैं ।

यह ध्यान दिया जाना चाहिए कि यह दृष्टिकोण भाषा संकेतक को नहीं बदलता है, हालांकि यह मज़बूती से काम करता है अन्यथा।


इसके setxkbmap usबाद मानक शॉर्टकट का उपयोग करके लेआउट को बदलने का कोई तरीका नहीं है।
sanmai

@sanmai काफी समान नहीं है - आईएमई (जापानी, चीनी, आदि) का उपयोग करने वाली भाषाओं पर स्विच करना असंभव है setxkbmap। इसके अलावा, setxkbmapआधुनिक WM परिवेशों में सादे छोटी गाड़ी का कार्य कर सकते हैं, इस पर विवरण के लिए प्रश्न देखें।
अंडरकॉन्ड्स मोनिका

हालांकि काम नहीं करने वाले डिफ़ॉल्ट शॉर्टकट पर टिप्पणी नहीं कर सकते हैं - मैं अपने द्वारा उपयोग किए जाने वाले हर लेआउट के लिए कस्टम का उपयोग कर रहा हूं।
अंडरकॉन्ड्स मोनिका

ठीक है, समान नहीं है, लेकिन फिर भी मैं डिफ़ॉल्ट स्विच का उपयोग नहीं कर सकता। जैसा कि आप जानते हैं, जापानी कीबोर्ड पर केवल अतिरिक्त कुंजियाँ हैं, अन्य लेआउट के लिए मुझे अभी भी डिफ़ॉल्ट स्विच का उपयोग करना होगा।
sanmai

3

का उपयोग कर gsettings

स्थापना org.gnome.desktop.input-sources.sourcesकरने के लिए अशक्त सूची, "[]", आप का उपयोग करने की अनुमति देता X सर्वर के बिना कुंजीपटल विन्यास सूक्ति-खोल यह कॉन्फ़िगर करने का प्रयास है, तो आप पहले की तरह करने में सक्षम हो सकता है।

$ gsettings set org.gnome.desktop.input-sources sources '[]'

जब मैंने यह कोशिश की, तो मेरा गनोम टर्मिनल QWERTY पर अटक गया, चाहे setxkbmapमैं बाद में कितने भी कमांड टाइप करूं, जब तक कि मैं इनपुट संवादों को सेटिंग्स संवाद के माध्यम से वापस नहीं डाल देता।
सिलास एस। ब्राउन


0

आप कमांड लाइन पर एक इनपुट विधि पर सेट और स्विच कर सकते हैं, भले ही आपने पहले माउस के साथ उस इनपुट विधि को सेट न किया हो:

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'ru')]"

ड्वोरक के लिए, उपयोग करें us+dvorak(या gb+dvorakयदि आप यूके में हैं, या जो भी हो)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.