web-dev-qa-db-fra.com

Comment définir Xmodmap lors de la connexion?

Comme la disposition de mon clavier ne me convient pas, je lance xmodmaplors de la connexion. Le script s'appelle .profile et il s'exécute correctement, mais il rompt l'interface Unity.

Je veux savoir où placer la ligne xmodmapafin qu'elle s'exécute sur mon identifiant et ne casse rien.

J'ai déjà essayé de l'insérer dans les fichiers .bash_login et .bash_profile, sans succès (xmodmapne définit pas mon clavier).

Quelles sont mes options?

45
Thiago Moraes

L'emplacement correct pour xmodmap ~/.Xmodmap (afin que vos modifications soient lues au démarrage) est dans ~/.xinitrc (voir l'explication ci-dessous), bien que vous puissiez également placer la commande xmodmap en tant qu'élément de démarrage (/usr/bin/xmodmap /home/user/.Xmodmap). Je peux dire que pour 12.04 (et vraisemblablement 12.10), ces deux alternatives fonctionnent vraiment, car de toute façon elles sont lues après vous vous connectez avec lightdm. (J'ai changé Renvoyez en Décalage vers la droite , et la modification n'a pris effet qu'après la saisie de mon mot de passe et la connexion).

S'il vous plaît noter: si vous êtes sur Xfce, il est noté sur le FAQ officielle de Xfce que vous devrez peut-être créer un démarrage item au lieu d'utiliser ~/.xinitrc et qu'il vous faudra peut-être retarder l'exécution pour que les modifications de xmodmap ne soient pas écrasées par setxkbmap. Vous pouvez utiliser un délai pour y parvenir dans votre entrée de démarrage:

/bin/bash -c "sleep 20; /usr/bin/xmodmap /home/$USER/.Xmodmap"

(Pour l'entrée de démarrage, il est nécessaire de spécifier des chemins absolus)

Chaque fois que setxkbmap est exécuté pour modifier la disposition du clavier, vous devrez réexécuter xmodmap ~/.Xmodmap dans le terminal.

Création de ~/.xinitrc

Créez un fichier dans votre dossier personnel appelé .xinitrc avec

touch .xinitrc

et place dedans:

xmodmap ~/.Xmodmap

Votre fichier Xmodmap doit et non avoir des entrées dans le style xmodmap -e " " tel qu'il est utilisé dans le terminal pour définir temporairement les valeurs. Il doit avoir des entrées dans ce format:

keycode 65 = Tab
keycode 23 = Space

Il est souvent difficile de savoir lequel des différents fichiers X (tels que .xprofile, .xinitrc, etc.) est lu au démarrage, mais .xinitrc semble toujours être lu sous 12.04, alors que .Xmodmap ou .xinputrc ne semble pas être lu par eux-mêmes.

28
user76204

J'utilise ElementaryOS (avec son gestionnaire de fenêtres basé sur GNOME) et j'ai trouvé une solution à l'aide des scripts xdg autostart. De nombreux gestionnaires de fenêtres utilisent xdg, je suppose donc que cette approche fonctionnera également dans d'autres environnements. Au moins, cela devrait fonctionner avec GNOME.

xdg exécute des scripts dans ~/.config/autostart lors de la connexion à une session X. Pour charger la configuration xmodmap lors de la connexion, ajoutez le script suivant à ~/.config/autostart/xmodmap.desktop:

[Desktop Entry]
Name[en_US]=Xmodmap
Comment[en_US]=xmodmap ~/.Xmodmap
Exec=/usr/bin/xmodmap .Xmodmap
Icon=application-default-icon
X-GNOME-Autostart-enabled=true
Type=Application

Ensuite, déconnectez-vous et reconnectez-vous, et votre configuration Xmodmap aurait dû être chargée.

Si cela ne fonctionne pas, essayez d'exécuter xmodmap dans un terminal pour voir si c'est xmodmap qui se plaint:

$ xmodmap ~/.Xmodmap

Si vous n'obtenez aucune erreur, exécutez la commande suivante pour déboguer:

$ Sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap
8
kontrollanten

Je n'ai pas l'interface de l'unité devant moi en ce moment, mais essayez de cliquer sur le bouton Applications du lanceur, puis tapez démarrage. Il devrait exister une application appelée Applications de démarrage (ou une application similaire). Cliquez dessus et ajoutez votre commande xmodmap (par exemple xmodmap /home/thiago/.Xmodmap).

2
djeikyb

Sur Mint 17/18, je peux réaliser cela, mais mettre mes scripts dans l'application de démarrage, avec un délai de 1 seconde.

Comme Mint 18 est dérivé d’Ubuntu 1604, je pense que vous pouvez en faire de même ou installer d’abord le panneau de gestion de Startup Application s’il n’y est pas.

J'espère que ça aide.

2
hxpax

Aucune des suggestions ci-dessus ne me réjouissait (l'option .bashrc n'était pas vraiment viable, car elle exécute xmodmap sur chaque nouveau terminal)

J'ai touché un script appelé xmodstartup.sh dans mon dossier personnel

  #!/bin/bash           
  sleep 1;               
  echo "running xmodmap" 
  xmodmap ~/.Xmodmap     

avec cela enregistré, j’ai alors fait Sudo chmod +x xmodstartup.sh

puis j'ai simplement ajouté le fichier exécutable à la fenêtre "Préférences de l'application de démarrage" de gnome. bish bosh, mise en page anglaise y Español sur altgr:)

0
Jay Edwards