bspwm多显示器桌面焦点切换异常问题求助
问题描述
- 需求:笔记本屏幕分配桌面1-4,第二屏幕分配桌面5-8
- 异常现象:
- 在笔记本屏按下
Super+1-4可正常切换桌面,但按下Super+5-8时焦点停留在桌面4,无法切换到第二屏幕 - 鼠标移至第二屏幕后,按下
Super+1-4会切换该屏幕的5-8桌面 - 在第二屏幕终端执行
bspc desktop --focus 2可正常切换到笔记本屏的桌面2
- 在笔记本屏按下
配置文件
bspwmrc
#! /bin/bash pgrep -x sxhkd >/dev/null || sxhkd & ... other startup commands start_from=1 monitors_connected=$(bspc query -M | wc -l) per_monitor=$(( 8 / monitors_connected )) for monitor in $(bspc query -M); do bspc monitor $monitor -d $(seq $start_from $(( start_from + per_monitor - 1))) start_from=$(( start_from + per_monitor )) done
sxhkdrc
super + {_,shift + }{1-8} bspc {desktop --focus,node --to-desktop} 'focused:^{1-8}'
疑问
- 为何
Super+5-8无效? - 第二屏幕按
Super+1-4会切换5-8桌面?
问题分析与解决
核心原因
你当前sxhkdrc里的focused:^{1-8}匹配规则,是基于当前焦点所在显示器的本地桌面索引,而非全局桌面编号:
- 笔记本屏的全局桌面是1-4,它的本地桌面索引也是1-4,所以
focused:^5在这个显示器上不存在,导致Super+5-8无反应 - 第二屏幕的全局桌面是5-8,但它的本地桌面索引是1-4(每个显示器的桌面都会从1开始编号),所以
focused:^1对应这个显示器的第一个桌面,也就是全局的5号桌面,这就出现了按Super+1切到5号桌面的情况
修复方案
修改sxhkdrc的规则,去掉focused:前缀,直接匹配全局桌面编号:
super + {_,shift + }{1-8} bspc {desktop --focus,node --to-desktop} ^{1-8}
修改后:
- 在笔记本屏按
Super+5-8会直接切换到第二屏幕的对应全局编号桌面 - 在第二屏幕按
Super+1-4会直接切换到笔记本屏的对应全局编号桌面
另外你的bspwmrc桌面分配逻辑是正常的,两个显示器连接时会自动给笔记本屏分配1-4、第二屏分配5-8,无需调整。
内容的提问来源于stack exchange,提问作者Jan van Veldhuizen
相关产品推荐
相关产品推荐

