GNOME 3'te klavye düzenini komut satırından değiştirme


15

Gnome 3.22.1 kullanıyorum ancak 3.18'den beri sorun var.

Bundan önce (tam sürümü hatırlamıyorum) Xkb-cadı , başlık altında X.org bağlarını kullanan basit bir uygulama kullanarak klavye düzenini değiştirebildim .

3.18'den sonra xkb-switch çalıştırırsanız, klavye düzeni gnome olarak değiştirilmez. Daha fazla araştırma, düzen değiştirmenin çok kısa bir süre için çalıştığını göstermiştir.

Bu komut dosyasını çalıştırırsanız:

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

Ne kadar şanslı olduğunuza bağlı olarak 3 ila 20 "başarılı" düzen geçişi elde edersiniz.

Bu sorunu araştırdıktan sonra ben aşağıdaki tavsiyede bulunuyorum :

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

Ayar değiştiriliyor, ancak düzen aynı kalıyor.

Düzeni değiştirmek için bir "hacky" yöntemi buldum:

setxkbmap us,ru
setxkbmap ru,us

ancak gnome kabuğu bu değişikliğin farkında değildir ve düzen göstergesinde yanlış dil gösterir.

Bu sorun hakkında yayınladım (üzgünüm, yeterli itibar, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15), ama iyi cevaplar alma şansı olmadı.

Ve bu noktada sıkıştım. Gnome kabuk kodunda sorunu tanımlayacak kadar yetenekli değilim. Bunun (gnome kabuğunun) problemi olduğundan bile emin değilim.

İstediğim, klavye düzenini terminalden değiştirmek için gnome farkında bir yoldur. Birisi beni doğru yönde gösterebilir mi? Bunu bir hata olarak dosyalamalıyım (özellikle klavye düzeninin ayarlarla değiştirilememesi)?

Yanıtlar:


9

Gnome-shell, DBus üzerinde tüm değişkenlere erişimi olan bir JS eval arabirimi açtığından, aşağıdaki komutla başarı elde edilebilir:

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

Hangi 0 düzeni etkinleştirir, vb.

Kredi.


Ve bu en son kullanılan giriş yöntemine nasıl geçileceği (yorumlardan):

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

Cevabınız için teşekkür ederim - bu beni çok fazla kurtardı! Ve bu en son kullanılan giriş yöntemine geçmek için: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()"
Envek

4

Giriş yönteminiz olarak IBus kullanıyorsanız (bu varsayılan bir olasılıktır), ibuskomutunuzu kullanarak girişinizi değiştirebilirsiniz :

# 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

Kullanılabilir tüm düzenleri ibus list-enginekomutla görebilirsiniz.

O mu bu yaklaşımı dikkat edilmelidir değil güvenilir aksi çalışmasına rağmen, dil göstergesini değiştirin.


Bu aynı setxkbmap us- bundan sonra standart kısayolları kullanarak düzeni değiştirmenin bir yolu yok.
sanmai

@sanmai Tam olarak aynı değil - kullanarak IME (Japonca, Çince, vb.) gerektiren dillere geçmek imkansızdır setxkbmap. Ayrıca, setxkbmapmodern WM ortamlarında düz buggy hareket edebilir , bununla ilgili ayrıntılar için soruya bakın.
undercat alkışlar Monica

Varsayılan kısayollar üzerinde çalışmıyor olsa da yorum yapamıyorum - Kullandığım her düzen için özel olanlar kullanıyorum.
undercat alkışlar Monica

Tamam, aynı değil, ama yine de varsayılan anahtarı kullanamıyorum. Bildiğiniz gibi, Japonca klavyede sadece fazladan fazla tuş var, diğer düzenler için hala varsayılan anahtarı kullanmam gerekiyor.
sanmai

3

Kullanma gsettings.

Ayar org.gnome.desktop.input-sources.sourcesiçin boş listesinde, "[]", kullanmak için izin verir X sunucusu olmadan klavye yapılandırması gnome-shell önce olduğu gibi yapabilmek böylece, yapılandırmak için çalışıyor.

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

Bunu denediğimde, Gnome Terminalim daha sonra ne kadar setxkbmapkomut yazmış olsam da QWERTY'ye takıldı, ben de giriş kaynaklarını Ayarlar iletişim kutusu aracılığıyla geri alana kadar.
Silas S. Brown

0

bence denemelisin sudo dpkg-reconfigure keyboard-configuration


0

Bu giriş yöntemini daha önce fare ile ayarlamasanız bile komut satırında bir giriş yöntemini ayarlayabilir ve bu yönteme geçebilirsiniz:

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

Dvorak için kullanın us+dvorak(veya gb+dvorakİngiltere'deyseniz veya her neyse).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.