问题描述
由于我的键盘布局不适合我,我在登录时运行xmodmap
。该脚本名为.profile
,它运行正常,但它打破了Unity接口。
我想知道在哪里放置xmodmap
线,以便它在我的登录时执行,并且不会破坏任何东西。
我已经尝试将其放入.bash_login
和.bash_profile
文件中,但未成功(xmodmap
未设置我的键盘)。
我有什么选择?
最佳解决办法
放置xmodmap ~/.Xmodmap
的正确位置(以便在启动时读取您的更改)位于~/.xinitrc
(请参阅下面的说明),但您也可以将xmodmap
命令作为启动项(/usr/bin/xmodmap /home/user/.Xmodmap
)。我可以说,对于12.04(可能是12.10),这两个选项确实可行,因为在您使用lightdm
登录后,它们都会被读取。 (我更改了Return to Right Shift,更改仅在输入密码并登录后生效)。
请注意:如果您使用的是Xfce,则在official Xfce FAQ上注明,您可能必须创建启动项而不是使用〜/.xinitrc,并且您可能必须延迟执行,以便setxkbmap不会覆盖xmodmap更改。您可以在启动条目中使用延迟来实现此目的:
/bin/bash -c "sleep 20; /usr/bin/xmodmap /home/$USER/.Xmodmap"
(对于启动条目,必须指定绝对路径)
每次运行setxkbmap
以更改键盘布局时,您必须在终端中再次运行xmodmap ~/.Xmodmap
。
创建~/.xinitrc
在您的主文件夹中创建一个名为.xinitrc
的文件
touch .xinitrc
并放入其中:
xmodmap ~/.Xmodmap
您的Xmodmap
文件不应具有xmodmap -e " "
样式的条目,因为它在终端中用于临时设置值。它必须具有以下格式的条目:
keycode 65 = Tab
keycode 23 = Space
在启动时读取各种X
文件(例如.xprofile
,.xinitrc
等)通常会造成混淆,但.xinitrc
似乎仍然在12.04下读取,而.Xmodmap
或.xinputrc
本身不能读取。
次佳解决办法
我正在使用ElementaryOS(使用基于GNOME的窗口管理器),并通过使用xdg
自动启动脚本找到了解决方案。许多窗口管理器正在使用xdg,所以我认为这种方法也适用于其他环境。至少它应该与GNOME一起使用。
xdg在X会话中登录后在~/.config/autostart
中运行脚本。要在登录时加载xmodmap配置,请将以下脚本添加到~/.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
然后注销并再次登录,并且您的Xmodmap配置应该已加载。
如果它不起作用,尝试在终端中运行xmodmap以查看它是否是抱怨的xmodmap:
$ xmodmap ~/.Xmodmap
如果没有收到任何错误,请运行以下命令进行调试:
$ sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap
第三种解决办法
我刚才没有在我面前的统一界面,但尝试单击启动器上的“应用程序”按钮,然后键入启动。应该有一个名为Startup Applications的应用程序(或其他一些应用程序)。单击它并添加您的xmodmap命令(例如xmodmap /home/thiago/.Xmodmap
)。
第四种办法
在Mint 17/18上,我可以实现将我的脚本放入启动应用程序,延迟1秒。
由于Mint 18源自Ubuntu 1604,我认为您可以这样做,或者如果不存在,则首先安装Startup Application管理面板。
希望能帮助到你。