i3wm如何实现容器布局双向循环切换?
i3wm 布局双向循环切换实现方案
实现思路
- i3 默认未内置双向布局切换能力,可通过自定义脚本记录布局状态+快捷键绑定实现正向/反向遍历4种布局
第一步:编写布局切换脚本
创建脚本文件~/.config/i3/layout_switch.sh,内容如下:
#!/bin/bash # 定义所有可用布局列表,可自行调整遍历顺序 LAYOUTS=("splitv" "splith" "stacked" "tabbed") # 存储当前布局索引的临时文件 STATE_FILE="/tmp/i3_layout_state" # 初始化状态文件如果不存在 if [ ! -f "$STATE_FILE" ]; then echo 0 > "$STATE_FILE" fi CURRENT_INDEX=$(cat "$STATE_FILE") MAX_INDEX=$((${#LAYOUTS[@]} - 1)) # 判断是正向还是反向切换 if [ "$1" = "prev" ]; then NEW_INDEX=$((CURRENT_INDEX - 1)) if [ $NEW_INDEX -lt 0 ]; then NEW_INDEX=$MAX_INDEX fi else NEW_INDEX=$((CURRENT_INDEX + 1)) if [ $NEW_INDEX -gt $MAX_INDEX ]; then NEW_INDEX=0 fi fi # 写入新索引并切换布局 echo $NEW_INDEX > "$STATE_FILE" i3-msg layout "${LAYOUTS[$NEW_INDEX]}"
给脚本添加执行权限:chmod +x ~/.config/i3/layout_switch.sh
第二步:绑定i3快捷键
编辑i3配置文件~/.config/i3/config,添加以下内容:
# 正向循环切换布局,可自行替换为常用按键 bindsym $mod+space exec --no-startup-id ~/.config/i3/layout_switch.sh next # 反向循环切换布局,可自行替换为常用按键 bindsym $mod+Shift+space exec --no-startup-id ~/.config/i3/layout_switch.sh prev
配置完成后执行Mod+Shift+C重载i3配置即可生效。
内容的提问来源于stack exchange,提问作者Maximiliano Padulo
相关产品推荐
相关产品推荐

