Cara mengubah tata letak keyboard di gnome 3 dari baris perintah

15

Saya menggunakan gnome 3.22.1 tetapi masalah ada sejak 3.18.

Sebelum itu (tidak ingat versi persisnya) saya bisa mengganti tata letak keyboard menggunakan xkb-penyihir , aplikasi sederhana yang menggunakan binding X.org di bawah tenda.

Setelah 3,18 jika Anda menjalankan xkb-switch, tata letak keyboard tidak akan diaktifkan di gnome. Penyelidikan lebih lanjut menunjukkan bahwa pergantian tata letak berfungsi, tetapi untuk waktu yang sangat singkat.

Jika Anda menjalankan skrip ini:

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

Anda akan beralih dari 3 ke 20 "layout sukses", tergantung pada seberapa beruntungnya Anda.

Setelah googling masalah ini saya saran berikut :

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

Pengaturan sedang diubah, tetapi tata letak tetap sama.

Saya telah menemukan satu metode "peretasan" untuk mengubah tata letak:

setxkbmap us,ru
setxkbmap ru,us

tetapi gnome shell tidak mengetahui perubahan itu, dan menunjukkan bahasa yang salah dalam indikator tata letak.

Saya telah memposting tentang masalah ini (maaf, reputasi tidak cukup, https: //bbs.archlinux.org/viewtopic.php? Pid = 1657582 https: //github.com/ierton/xkb-switch/issues/15), tetapi tidak beruntung mendapatkan jawaban yang baik.

Dan pada titik ini saya terjebak. Saya tidak cukup terampil untuk mengidentifikasi masalah dalam kode shell gnome. Aku bahkan tidak yakin itu masalah (gnome shell).

Yang saya inginkan adalah cara gnome-aware untuk mengganti tata letak keyboard dari terminal. Bisakah seseorang mengarahkan saya ke arah yang benar? Haruskah saya mengajukan ini sebagai bug (terutama fakta bahwa tata letak keyboard tidak dapat diubah melalui gsettings)?

RGBD
sumber

Jawaban:

8

Karena gnome-shell memperlihatkan antarmuka JS eval pada DBus yang memiliki akses ke semua variabel, fitur ini dimungkinkan dengan perintah berikut:

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

Yang akan mengaktifkan layout 0, dan sebagainya.

Kredit.


Dan ini cara beralih ke metode input yang terakhir digunakan (dari komentar):

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()"
sanmai
sumber
Terima kasih atas jawaban Anda - ini menyelamatkan saya dari banyak googling! Dan ini adalah bagaimana beralih ke metode input yang terakhir digunakan: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

Jika Anda menggunakan IBus sebagai metode input Anda (yang kemungkinan merupakan default), Anda dapat mengubah input Anda menggunakan ibusperintah:

# 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

Anda dapat melihat semua tata letak yang tersedia dengan ibus list-engineperintah.

Harus dicatat bahwa pendekatan ini tidak mengubah indikator bahasa, meskipun itu bekerja dengan andal sebaliknya.

Undercat memuji Monica
sumber
Itu sama dengan setxkbmap us- tanpa ada cara untuk mengubah tata letak menggunakan cara pintas standar setelah itu.
sanmai
@sanmai Tidak persis sama - tidak mungkin untuk beralih ke bahasa yang membutuhkan IME (Jepang, Cina, dll) menggunakan setxkbmap. Selanjutnya, setxkbmapdapat bertindak buggy di lingkungan WM modern, lihat pertanyaan untuk detailnya.
Undercat memuji Monica
Tidak dapat mengomentari pintasan default yang tidak berfungsi - Saya menggunakan yang khusus untuk setiap tata letak yang saya gunakan.
Undercat memuji Monica
OK, tidak sama, tapi tetap saja saya tidak bisa menggunakan saklar default. Seperti yang Anda ketahui, hanya ada banyak tombol tambahan pada keyboard Jepang, untuk tata letak lainnya saya masih harus menggunakan sakelar default.
sanmai
3

Menggunakan gsettings.

Pengaturan org.gnome.desktop.input-sources.sourceske daftar nol , "[]", memungkinkan Anda untuk menggunakan konfigurasi keyboard server X tanpa gnome-shell mencoba mengkonfigurasinya, sehingga Anda dapat melakukan seperti sebelumnya.

$ gsettings set org.gnome.desktop.input-sources sources '[]'
xae
sumber
Ketika saya mencoba ini, Terminal Gnome saya macet di QWERTY tidak peduli berapa banyak setxkbmapperintah yang saya ketikkan sesudahnya, sampai saya mengembalikan sumber input melalui dialog Pengaturan.
Silas S. Brown
0

Saya pikir Anda harus mencoba sudo dpkg-reconfigure keyboard-configuration

Romain L.
sumber
0

Anda dapat mengatur dan beralih ke metode input pada baris perintah bahkan jika Anda sebelumnya tidak mengatur metode input dengan mouse:

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

Untuk Dvorak, gunakan us+dvorak(atau gb+dvorakjika Anda berada di Inggris, atau apa pun).

Silas S. Brown
sumber