如何通过.xinitrc在启动时自动执行bash命令以实现登录后自动切换键盘布局
如何通过.xinitrc在启动时自动执行bash命令以实现登录后自动切换键盘布局
嘿,我来帮你搞定这个问题!你现在遇到的核心问题是**.xinitrc里的执行顺序**——当你写exec dwm的时候,这行命令会直接替换当前的shell进程,所以它后面的所有代码都根本没机会运行,这就是你最后加的$(setxkbmap...)没生效的原因。
正确的修改方法
你只需要把setxkbmap命令放在exec dwm之前,而且不需要用$()包裹(那是命令替换语法,完全没必要在这里用),直接执行命令就行。另外要注意,这个命令是一次性执行的,不需要加&后台运行,直接写就好。
修改后的完整.xinitrc应该是这样的:
/usr/bin/pipewire & /usr/bin/pipewire-pulse & picom & ~/.fehbg while true do xsetroot -name "$(cat /sys/class/power_supply/BAT1/capacity)% | $(cat ~xenovar/mission.txt) | $(date +"%H:%M")" sleep 1m done & # 在这里添加键盘布局设置命令,放在exec之前 setxkbmap -layout us,ua -option grp:toggle #exec startplasma-x11 exec dwm
为什么之前的写法没用?
你之前尝试的$(setxkbmap...)是命令替换,它会先执行setxkbmap命令,然后把命令的输出(而setxkbmap本身没有任何输出)当作新的命令来执行,这完全是多余的操作。更关键的是,你把它放在了exec dwm之后,这行代码永远不会被执行到。
这样修改之后,每次你通过startx启动dwm时,键盘布局切换的设置就会自动生效了~
备注:内容来源于stack exchange,提问作者Oleksandr Danulchyk
相关产品推荐
相关产品推荐

