我使用的是摇摆窗口管理器,但我想i3也是如此。
在启动时,我希望在同一个工作区上启动2个终端窗口。其中一个将运行Neovim,第二个将是一个空的(不运行任何应用程序)终端。两个终端应该显示在选项卡式布局中,但是空终端应该有堆叠布局集,这样当我从它打开一个新的终端时,它将在第二个选项卡中显示为一个新的堆栈条目。视觉:
启动时
-------------------------------------------------------------------------------
| Tab: Terminal with Neovim | Tab: Other terminals (active) |
-------------------------------------------------------------------------------
| |
| |
| |
| |
| |
| |
| Terminal 1 |
| |
| |
| |
| |
| |
| |
-------------------------------------------------------------------------------在其他终端选项卡上打开新终端后
-------------------------------------------------------------------------------
| Tab: Terminal with Neovim | Tab: Other terminals (active) |
-------------------------------------------------------------------------------
| Other terminals tab: Stack entry: Terminal 1 |
-------------------------------------------------------------------------------
| Other terminals tab: Stack entry: Terminal 2 (active) |
-------------------------------------------------------------------------------
| |
| |
| |
| |
| Terminal 2 |
| |
| |
| |
| |
-------------------------------------------------------------------------------如何在Sway/i3启动时配置这样的布局?
我尝试将以下内容添加到配置文件中,但它不起作用。两个终端窗口都会显示,但它们的布局设置不正确。我猜发生这种情况是因为exec异步执行,因此当执行layout命令时,容器仍然不打开。
exec swaymsg "workspace $workspace_programming; exec $term --command nvim; layout tabbed; exec $term; split vertical; layout stacking"发布于 2020-03-05 07:59:02
我使用该配置成功地做到了这一点:
exec \
swaymsg "workspace $workspace_programming"; \
swaymsg "exec $neovim"; \
swaymsg "layout tabbed"; \
sleep 0.3s; \
swaymsg "exec $term"; \
sleep 0.3s; \
swaymsg "split vertical"; \
swaymsg "layout stacking"编辑:上面的操作有效,但只有在启动后才能执行(使用exec_always)。由于某些原因,在使用exec启动时执行时,它无法工作。令我惊讶的是,它根本没有打开任何窗户,就连Neovim终点站也没有打开。我对它进行了一些重构,这个版本在启动过程中也能工作:
exec swaymsg "workspace $workspace_programming; exec $neovim; layout tabbed;"
exec sleep 0.3s && swaymsg "exec $term";
exec sleep 0.6s && swaymsg "workspace $workspace_programming; split vertical; layout stacking"我不明白这两个版本之间有什么区别,为什么第一个版本不能工作。如果有人能解释我,我会很高兴的。
我还在想,是否有一种更干净的方法可以做到这一点,而不必求助于sleep。
https://unix.stackexchange.com/questions/571234
复制相似问题