Openbox écrase la configuration de xmodmap

9

Je configure openbox sur mon ordinateur portable exécutant Linux Mint 13. Je veux que ma touche de verrouillage des majuscules agisse comme une clé de contrôle supplémentaire. J'ai mis les paramètres requis dans mon ~/.Xmodmapfichier et l' ai vérifié en exécutant

xmodmap ~/.Xmodmap

Cela fonctionne correctement.

Cependant, lorsque je me reconnecte à ma session openbox, ces modifications clés ne sont pas présentes. L'exécution de la xmodmapcommande ci-dessus le fait fonctionner à nouveau, mais je veux que cela se produise automatiquement au démarrage.

Ce qui est intéressant, c'est que j'ai ajouté une zenitycommande de test comme suit à mon ~/.config/openbox/autostartfichier

zenity --info --text=Hello

Cela produit une petite fenêtre de dialogue et se ferme uniquement après la fermeture de la boîte de dialogue.

Maintenant, lorsque je me reconnecte à ma session openbox, le verrouillage des majuscules agit comme une touche Ctrl, jusqu'à ce que la boîte de dialogue de zénité soit fermée. Une fois cette boîte de dialogue fermée, le verrouillage des majuscules revient à son comportement par défaut.

Je n'ai rien trouvé à ce sujet avec google, donc je demande de l'aide ici. Avez-vous des idées sur ce qui pourrait mal se passer?

Mise à jour:

J'ai essayé de comprendre cela et dans mes expériences, j'ai copié mon /usr/bin/xmodmapfichier /usr/bin/xmodmap_et remplacé le /usr/bin/xmodmapfichier par le script bash suivant

#!/bin/bash

{
    echo '-------'
    date
    echo xmodmap "$@"
} >> ~/xmodmap-calls

exec /usr/bin/xmodmap_ "$@"

Donc, chaque fois qu'un putain de script sur le système s'exécute xmodmap, je le connais.

Avec cela, je me reconnecte et je ne trouve qu'une seule entrée dans mon ~/xmodmap-callsfichier, qui est celle qui exécute mon ~/.Xmodmap, qui est attendue. Donc, j'ai pensé que ce n'est pas un xmodmapqui écrase mes changements.

Ensuite, un peu de recherche sur Google m'a présenté la setxkbmapcommande, qui peut apparemment faire la même chose. J'ai également remplacé cet exécutable, similaire à xmodmap ci-dessus. Et j'ai obtenu la commande coupable!

setxkbmap -option terminate:ctrl_alt_bksp

Je n'ai absolument aucune idée de ce que cela fait, mais après avoir exécuté xmodmap ~/.Xmodmap(qui a appliqué mes paramètres correctement), si j'exécute la commande ci-dessus, mes modifications sont réinitialisées! Edit : Cela s'avère vraiment drôle. Juste une setxkbmapcommande sans aucun argument, écrase heureusement mes modifications par la xmodmap ~/.Xmodmapcommande.

Maintenant, j'ai deux choses à comprendre, d'où cela est-il setxkbmapexécuté et pourquoi et comment y remédier. Je suis toujours en enquête mais je pourrais sérieusement utiliser de l'aide :)

Update 2

Au diable xmodmap. Je ne peux pas comprendre d'où setxkbmapest appelé, mais j'ai trouvé un moyen d'utiliser la setxkbmapcommande pour que mon verrouillage des majuscules se comporte comme Ctrl.

setxkbmap -option ctrl:nocaps

Juste avant de démarrer openbox. Fonctionne brillamment. La touche de verrouillage des majuscules agit toujours comme une touche ctrl. xmodmapn'est jamais exécuté.

Je vais laisser cette question ouverte pour que quelqu'un qui sache ces choses puisse donner un aperçu Aussi, pour les gens qui font face à ça après moi :)

Mise à jour 3

Voici le contenu de mon .config/openbox/autostart, tel que demandé par pedrosaurio.

#!/bin/bash

# Set the wallpaper.
feh --bg-scale /wall.png

# Set default brightness.
xbacklight -time 1 '=40'

# Compositing.
xcompmgr &

# The panel.
tint2 &

# Start a terminal too.
roxterm &

Pour autant que je sache, cela n'a rien à voir avec le clavier. En outre, voici le script qui démarre ma session: (exécuté par lightdm)

#!/bin/bash

setxkbmap -option ctrl:nocaps

exec openbox-session
Shrikant Sharat
la source
vous utilisez probablement une sorte de configuration de clavier, par exemple, choisissez la disposition du clavier ou quelque chose de similaire qui annule vos modifications appliquées
Ulrich Dangel
Le seul autre endroit que j'ai manipulé avec la configuration du clavier est la fenêtre des préférences de disposition du clavier GUI, où j'ai changé la touche de verrouillage des majuscules pour se comporter comme un ctrl supplémentaire. Cela fonctionne très bien, dans le DE cannelle, mon verrouillage des majuscules agit comme un ctrl même après une reconnexion. Je pense que cette configuration était uniquement cannelle, mais je ne suis pas sûr.
Shrikant Sharat
comment ajoutez-vous la commande dans le script de démarrage automatique?
pedrosaurio
Pouvez-vous publier votre autostartdossier?
pedrosaurio

Réponses:

1

Je rencontrais un problème similaire. Il s'est avéré qu'elle était causée par ibus. Je l'ai simplement désinstallé car je n'ai pas besoin de ses services.

J'ai trouvé le coupable en utilisant votre astuce pour remplacer setxkbmap par un script, mais j'ai également ajouté ps -AF --forestpour identifier l'appelant de setxkbmap.

gobenji
la source
0

Sans connaître votre script de démarrage automatique, je parie que vous n'utilisez pas la syntaxe appropriée en laissant vos commandes s'exécuter en arrière-plan à l'aide de l'esperluette ( &).

Essayez de modifier votre .config/openbox/autostartfichier pour qu'il ressemble à ceci:

# Run the system-wide support stuff
#. $GLOBALAUTOSTART
# Programs to launch at startup
# Programs that will run after Openbox has started
(sleep 1 && xmodmap ~/.Xmodmap ) &

En cas de doute, consultez le wiki openbox et voyez comment tous les exemples se trouvent &après chaque entrée.

http://openbox.org/wiki/Help:Autostart

pedrosaurio
la source
Mon fichier de démarrage automatique est vide. À un moment donné, je l'avais xmodmap ~/.Xmodmapdans ce dossier (sans &, cela ne semblait pas nécessaire). J'ai appelé xmodmap(et maintenant setxkbmap) dans le script qui démarre ma session openbox. Juste avant de courir exec openbox-session, j'exécute la setxkbmapcommande.
Shrikant Sharat
De plus, l'ajout d'un sleep 1délai pour que xmodmapses modifications soient appliquées après le chargement de tout le reste, tout en fonctionnant la plupart du temps, ne me donne pas trop confiance en la solution. Je préférerais ne pas le faire, si j'ai des alternatives.
Shrikant Sharat
Vous pouvez évidemment éviter tous les commentaires et la sleepcommande, néanmoins le &est nécessaire après chaque entrée, sinon tous les programmes après la première entrée ne fonctionneront pas du tout.
pedrosaurio
Oui, si c'est une application / un processus de longue haleine, ne pas ajouter un &le bloquera. J'ai utilisé ce comportement avec la zenitycommande pour constater que mes xmodmapmodifications sont écrasées après la autostart fin. Mon démarrage automatique prend maintenant de l'ampleur et va le coller dans la question dans un instant. Cela n'a rien à voir avec le clavier.
Shrikant Sharat
Et, sans la commande sleep, les modifications apportées par xmodmapsont écrasées dès que le fichier de démarrage automatique se termine.
Shrikant Sharat