i3wm如何通过快捷键切换mouse warping行为?
解决i3wm中通过快捷键动态切换mouse_warping的问题
我完全懂你的需求——批量打开浏览器文章时,不想让鼠标自动跳转到新窗口,等读完再恢复这个功能。直接把mouse_warping none绑定到快捷键会报错,是因为mouse_warping是i3的配置项,不是可以直接执行的命令。下面给你两种实用的解决方案:
方案1:绑定两个快捷键分别控制禁用/恢复
直接用i3-msg config命令动态修改配置,这是i3官方支持的动态调整配置项的方法。把以下内容加到你的i3配置文件(通常是~/.config/i3/config)里:
# 按下Mod+Shift+m禁用鼠标自动跳转 bindsym $mod+shift+m exec "i3-msg config mouse_warping none" # 按下Mod+Shift+M恢复默认的鼠标跳转(默认值是output,如果你用的是container就改成container) bindsym $mod+shift+M exec "i3-msg config mouse_warping output"
保存配置后按Mod+Shift+c重新加载配置,就能用这两个快捷键分别开关mouse_warping了。
方案2:一键切换状态(更便捷)
如果你不想记两个快捷键,可以写个简单的脚本实现一键切换当前状态:
- 在
~/.config/i3/目录下创建一个脚本文件,比如toggle_mouse_warping.sh,内容如下:
#!/bin/bash # 获取当前mouse_warping的设置值 current_setting=$(i3-msg -t get_config | grep -oP 'mouse_warping\s+\K\w+') # 根据当前值切换状态 if [ "$current_setting" = "none" ]; then i3-msg config mouse_warping output else i3-msg config mouse_warping none fi
- 给脚本添加执行权限:
chmod +x ~/.config/i3/toggle_mouse_warping.sh
- 在i3配置文件里绑定快捷键:
bindsym $mod+shift+m exec --no-startup-id ~/.config/i3/toggle_mouse_warping.sh
这样每次按下Mod+Shift+m就会自动切换mouse_warping的状态,不用手动区分禁用和恢复,更省心。
小贴士:如果你的i3默认mouse_warping设置是
container而不是output,记得把脚本里的output改成container哦。
内容的提问来源于stack exchange,提问作者xji
相关产品推荐
相关产品推荐

