As my keyboard layout doesn't suit me, I run xmodmap
on login. The script is named .profile
and it runs OK, but it breaks the Unity interface.
I want to know where to put the xmodmap
line so that it executes on my login and doesn't break anything.
I have already tried putting it in the .bash_login
and .bash_profile
files, without success (xmodmap
doesn't set my keyboard).
What are my options?
Best Answer
The correct place to put
xmodmap ~/.Xmodmap
(so that your changes are read at startup) is in~/.xinitrc
(see explanation below), although you could alternately place thexmodmap
command as a startup item (/usr/bin/xmodmap /home/user/.Xmodmap
). I can say that for 12.04 (and presumably 12.10) that these two alternatives definitely do work, as either way they are read after you log in withlightdm
. (I changed Return to Right Shift, and the change only took effect after entering my password and logging in).Please note: if you are on Xfce, it is noted on the official Xfce FAQ that you may have to create a startup item instead of using
~/.xinitrc
, and that you might have to delay the execution so thexmodmap
changes are not overwritten bysetxkbmap
. You can use a delay to achieve this in your startup entry:(For the startup entry it is necessary to specify absolute paths)
Each time
setxkbmap
is run to change keyboard layout, you will have to runxmodmap ~/.Xmodmap
again in the terminal.Creating
~/.xinitrc
Create a file in your home folder called
.xinitrc
withand place in it:
Your
Xmodmap
file should not have entries in thexmodmap -e " "
style as that is used in the terminal for temporarily setting the values. It must have entries in this format:It is often confusing which of the various
X
files (such as.xprofile
,.xinitrc
, etc) are read at startup, but.xinitrc
does seem to be still read under 12.04, whereas.Xmodmap
or.xinputrc
are not read by themselves.