我按照文档保存了工作区的布局:
i3-save-tree --workspace 1 > ~/.i3/layouts/ws1.json
因为我的工作区名称是一个带引号的字符串变量,所以我必须制作一个脚本 ( ~/.i3/scripts/load_layout.sh
) 才能i3-msg
正确调用:
i3-msg "workspace $1"
i3-msg "append_layout /home/villasv/.i3/layouts/ws$2.json"
然后我的~/.i3/config
文件具有以下工作区设置:
set $ws1 "1 "
bindsym $mod+1 workspace $ws1
bindsym $mod+Shift+1 move container to workspace $ws1
exec --no-startup-id 'sh ~/.i3/scripts/load_layout.sh $ws1 1'
exec firefox
但是退出并登录后布局更改不会发生。我什至尝试使用exec_always
并重新启动i3
,但仍然没有效果。
运行sh ~/.i3/scripts/load_layout.sh "dummy" 1
成功会创建一个带有布局的工作区。
此外,使用exec --no-startup-id "i3-msg 'workspace 1; append_layout ~/.i3/layouts/ws1.json'"
wil 也可以,几乎可以满足需要。我猜问题发生在脚本或脚本调用中,但我不知道是什么。
使用工作区变量名称进行这项工作我缺少什么?