web-dev-qa-db-fra.com

Comment obtenir la disposition actuelle du clavier gnome depuis un terminal?

Pour une utilisation dans un script bash, je dois obtenir la disposition de clavier gnome que l'utilisateur utilise actuellement. Par exemple, si l'utilisateur définit sa disposition de clavier sur en-us, j'ai besoin d'une commande bash qui m'imprime ceci.

Comment puis-je obtenir cette information?

Mettre à jour:

setxkbmap -query ne fonctionne malheureusement pas. Vous trouverez ci-dessous la sortie avec la structure en (première commande) et de (seconde commande) activée. Changer la disposition du clavier semble avoir un lien avec la configuration de la session gnome

setxkbmap -query 
rules:      evdev
model:      pc105
layout:     us,de
variant:    ,
options:    terminate:ctrl_alt_bksp,lv3:ralt_switch,grp:alts_toggle

setxkbmap -query
rules:      evdev
model:      pc105
layout:     us,de
variant:    ,
options:    terminate:ctrl_alt_bksp,lv3:ralt_switch,grp:alts_toggle

Update2:

setxkbmap -print #with en-us layout
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+de:2+inet(evdev)+level3(ralt_switch_for_alts_toggle):1+level3(ralt_switch_for_alts_toggle):2+group(alts_toggle)+level3(ralt_switch)+terminate(ctrl_alt_bksp)"    };
    xkb_geometry  { include "pc(pc105)" };
};
setxkbmap -print #after switching to german layout
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+de:2+inet(evdev)+level3(ralt_switch_for_alts_toggle):1+level3(ralt_switch_for_alts_toggle):2+group(alts_toggle)+level3(ralt_switch)+terminate(ctrl_alt_bksp)"    };
    xkb_geometry  { include "pc(pc105)" };
};
12
ftiaronsem

Selon une question similaire sur Stackoverflow , ce qui suit devrait suffire:

setxkbmap -print | grep xkb_symbols | awk '{print $4}' | awk -F"+" '{print $2}'

Je n'ai pas pu le vérifier car je n'ai actuellement pas de * machine Nix avec X disponible (je ne suis pas à la maison) ...

9
Izzy

Pour Ubuntu 17.10 ou version ultérieure

Dans Ubuntu 17.10, avec GNOME, la valeur de gsettings actuelle n'est pas modifiée lorsque vous changez de source d'entrée. Au lieu de cela, il existe une clé mru-sources qui répertorie le m ost r de manière récente sources d'entrée sed.

$ gsettings get org.gnome.desktop.input-sources mru-sources
[('xkb', 'se'), ('xkb', 'us')]

La première source de cette liste est la source actuelle. Un programme en ligne permettant d’obtenir la présentation actuelle peut alors ressembler à ceci:

gsettings get org.gnome.desktop.input-sources mru-sources | sed -r "s/\S*\s'([^']+).*/\1/"

Veuillez noter que cette réponse ne s'applique pas si vous utilisez Unity sur un système Ubuntu 17.10. Avec Unity, il continue de fonctionner comme avant.

3

Pour Ubuntu 13.04 et inférieur

Vous pouvez utiliser xkblayout-state tool. Voir le fichier README.md pour la description, la compilation, l’installation et l’utilisation.

La commande suivante fera exactement ce que vous voulez:

xkblayout-state print "%s"

Pour Ubuntu 13.10 et supérieur

Ubuntu 13.10 a apporté de bonnes améliorations dans ce sens, et vous pouvez utiliser la fonction bash suivante:

get_current_xkblayout () {
      current_input_nr=$(gsettings get org.gnome.desktop.input-sources current | \
          awk '{ print $NF }')
      shift=$(( 2 * ( $current_input_nr + 1 )))
      gsettings get org.gnome.desktop.input-sources sources | tr -d "\',[]()" | \
          awk -v cur="$shift" '{ print $cur }'
}

Les commandes suivantes fonctionnent également dans 13.10:

setxkbmap -query | awk -F"(,|[ ]+)" '/layout:/ { print $2 }'

ou:

setxkbmap -print | awk -F"+" '/xkb_symbols/ {print $2}'
3
Radu Rădeanu

À l'aide du terminal, j'ai effectué un test en alternant 'pt' et 'nous', et après chaque modification, j'ai collecté avec succès la disposition de clavier utilisée:

Obtenir la disposition du clavier actif

setxkbmap -print | grep xkb_symbols | awk -F"+" '{print $2}'
  • Imprimez la configuration: setxkbmap -print
  • Collectez la ligne qui compte: grep xkb_symbols
  • obtient la chaîne après le premier signe "+": awk -F"+" '{print $2}'

La sortie dont la disposition 'us' est active est la suivante: usname__


entre les mises en page

Sudo setxkbmap -option grp:alt_shift_toggle pt

Passez où il lit 'pt', le code de langue vers lequel basculer.

enter image description here

Note: J'utilise Gnome sur Ubuntu 12.04 (Pangolin précis)

2
Zuul

Appuyez simplement sur Ctrl+Alt+T sur votre clavier pour ouvrir Terminal. Quand il s'ouvre, lancez la commande ci-dessous.

setxkbmap -query

C'est ce que vous devriez voir

enter image description here

2
Mitch

Pour Ubuntu 13.10 ou version ultérieure

(Je ne sais pas si cela fonctionne dans les versions précédentes)

current_layout=gsettings get org.gnome.desktop.input-sources current | awk '{print $2}'
gsettings get org.gnome.desktop.input-sources sources | grep -Po "'[[:alpha:]]+'\)" | sed -ne "s/['|)]//g;$(($current_layout+1))p"

Pour voir plus d'option:

gsettings list-recursively org.gnome.desktop.input-sources
0
user.dz