You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:25:28