我在 Ubuntu 18.04 上尝试交换Ctrl并CapsLock使用xmodmap
.但未能找到一种自动执行此操作的方法:.[X|x]modmap[rc]
并且.config/autostart
不起作用。还有哪些其他方法呢?有可能通过吗systemd
?
短的:桌面条目为.config/autostart
或/etc/xdg/autostart
。Exec
不是一个成熟的 shell 命令,因此sh -c
可能需要
[Desktop Entry]
Type=Application
Exec=sh -c "xmodmap ~/.xmodmaprc"
答案1
由于 Ubuntu 在 17.10 版本中从 Unity 切换回了 Gnome,因此您应该能够使用Gnome自启动机制(如果登录时启动 shell 命令就足够了)。
为此:
- 你将需要
sudo
特权 - 创建一个运行必要命令(例如
switch_ctrl_capslock.sh
)的 shell 脚本并将其放入/usr/local/bin
- 创建一个包含(或多或少)以下内容的
.desktop
文件:/etc/xdg/autostart/switch_ctrl_capslock.desktop
[Desktop Entry] Type=Application Exec=/usr/local/bin/switch_ctrl_capslock.sh
如果一切设置正确,该脚本应该在用户登录 Gnome 时运行一次。
如需进一步阅读,请查看
答案2
道路systemd
:
登录后
[Unit]
Description=Change keyboard layout AFTER LOGIN TO GUI session
After=graphical.target
[Service]
#execute once only
Type=oneshot
ExecStart=/usr/bin/xmodmap home/<user>/.xmodmaprc
[Install]
WantedBy=graphical.target
放在下面~/.config/systemd/user/xmodmap.service
(注意不要用您的用户名替换用户!)。
要启用服务自动加载:
systemctl --user enable xmodmap.service
首次启动无需重新登录;
systemctl --user start xmodmap.service
一旦gdm
启动就运行它
与上面相同的文件,但将其放置在/etc/systemd/system/xmodmap.service
并将以下行添加到[Unit]
要保存的部分:
After=display-manager.service
以 root 身份(或通过 sudo):
systemctl enable xmodmap.service
当然,这会影响所有用户。