首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在启动时设置多个sway/i3容器的布局?

如何在启动时设置多个sway/i3容器的布局?
EN

Unix & Linux用户
提问于 2020-03-05 06:51:12
回答 1查看 1.5K关注 0票数 3

问题

我使用的是摇摆窗口管理器,但我想i3也是如此。

在启动时,我希望在同一个工作区上启动2个终端窗口。其中一个将运行Neovim,第二个将是一个空的(不运行任何应用程序)终端。两个终端应该显示在选项卡式布局中,但是空终端应该有堆叠布局集,这样当我从它打开一个新的终端时,它将在第二个选项卡中显示为一个新的堆栈条目。视觉:

启动时

代码语言:javascript
复制
-------------------------------------------------------------------------------
|      Tab: Terminal with Neovim       |    Tab: Other terminals (active)     |
-------------------------------------------------------------------------------
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                 Terminal 1                                  |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
-------------------------------------------------------------------------------

在其他终端选项卡上打开新终端后

代码语言:javascript
复制
-------------------------------------------------------------------------------
|      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命令时,容器仍然不打开。

代码语言:javascript
复制
exec swaymsg "workspace $workspace_programming; exec $term --command nvim; layout tabbed; exec $term; split vertical; layout stacking"
EN

回答 1

Unix & Linux用户

发布于 2020-03-05 07:59:02

我使用该配置成功地做到了这一点:

代码语言:javascript
复制
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终点站也没有打开。我对它进行了一些重构,这个版本在启动过程中也能工作:

代码语言:javascript
复制
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

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/571234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档