如何在i3窗口管理器中通过自动启动应用程序来实现布局?


23

这是关于先前问题的后续问题,该问题如何使用i3窗口管理器自动启动各个工作区上的应用程序,以及在~/.i3/config配置文件中可以执行或不能执行的操作。

首先,提供的解决方案基于Arch Linux 文档以及op提供的更新,他进一步推论逻辑:

exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'
exec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'

同样有趣的是,这种交换是关于直接在命令行上利用其中一些而不进行重复的:

i3-msg workspace 3; i3-msg exec firefox
i3-msg workspace 9; i3-msg exec chromium

但是我从未见过根据所需的垂直或水平布局自动启动每个工作区中的许多窗口/应用程序的配置。我的目标是自动启动我使用的这个简单配置:

 _____ _____     ___________     ___________
| lx  | lx  |   |        |u_|   |     |     |   proportions:
|_____|_____|   |  FF    |lx|   |spacefm    |   1- 25% each
|medit| lx  |   |        |__|   |     | vlc |   2- 75/25 x 25/50/25
|_____|_____|   |________|u_|   |_____|_____|   3- 50/50
      1               2               3

因此,它从config文件中的类似内容开始:

exec --no-startup-id i3-msg 'workspace 1; exec i3-sensible-terminal; layout toggle split; layout splitv; split vertical; exec i3-sensible-terminal; exec i3-sensible-terminal; exec i3-sensible-terminal; workspace 2; exec firefox; exec urxvt; exec i3-sensible-terminal; exec urxvt; workspace 3; exec spacefm; exec vlc'

但是,您实际上如何实现所需的布局类型和垂直/水平拆分?我正在尝试,但尚不清楚您如何“混合”执行和布局。由于您是i3-img在i3的配置中执行的,因此该语法让人觉得有点特别。您是否使用split h(或v) - - layout split v- exec layout split vfocus down或右)在每间exec通话?

对于单个工作空间,该配置将垂直或水平启动所有应用程序,而且我似乎无法影响布局-或split链中的最后一条命令确定窗口是垂直添加还是水平添加。i3-msg似乎忽略了某些情况下命令格式不正确的部分,因此很难调试。事实是,您确实确实需要退出X并startx每次都再次验证结果,因为mod+shift+R即使您关闭了每个工作区上的所有内容,只要刷新配置就不会削减它,这进一步加剧了这一事实。

什么是正确的配置方式?有没有人能实现这样的解决方案?该文档非常好,但没有提供一个详细的示例,该示例混合了在多个工作空间上的执行和布局。


还扩展了这个

无需使用FF或urxvt即可提供解决方案。据我所知,这些程序没有什么特别之处,因此有人可以使用任何程序重现布局#2,保存json文件,将其剥离,看看是否可以在登录时从配置文件中启动它,然后只需更改程序名称即可。在提交答案之前...

您可以将i3文件中的零件与已保存/恢复的json布局一起上传吗?我有同样的问题..但没有使它正常工作。您在config / json文件中使用多显示器吗?

Answers:


11

我相信您正在寻找i3 v4.8(2014-06-15)中引入的 的节省布局的功能。链接的文档似乎非常详尽。

引用文档:

布局保存/还原允许您加载JSON布局文件,以便在启动计算机后可以使用基本布局开始工作。动态用例也浮现在脑海:如果您经常(但不总是如此!)需要使用ping / traceroute命令来对终端进行网格布局以诊断网络问题,则可以轻松地以正确的布局自动打开这些窗口。

...以及发行说明

TL;博士:出口1当前的布局JSON文件,将其加载到新酷睿i3的会议,获得将由实际的应用程序,一旦你开始它们被替换占位符的窗口。


1.您可能需要perl-anyevent-i3perl-json-xs软件包才能使用该i3-save-tree实用程序。


3
布局功能使用起来令人惊讶。它们占位符窗口的概念可以“吞噬”应用程序,这意味着,如果您想多次使用相同的应用程序,lxterminal或者urxvt希望使用单个工作区,则必须--name something在.i3 / config中执行时使用它们来区分它们。该文档中的示例有效,但是当我从一个工作空间使用导出时,我似乎无法使其正常工作。您使用class作为名称,并使用实例与--name一起使用。在这种情况下,我只能寄希望于gui工具,因为json格式中包含了很多括号!

1
我现在更新到4.8,对此新功能感到非常满意。从.i3/config早期版本开始,我在登录时始终无法可靠地启动设备时遇到了一些麻烦,但是一旦我正确登录,一切就可以正常进行。我要做的是安排一些布局并保存它们,然后编辑json文件的类变量。然后类似i3-msg workspace 2\; append_layout mylayout.json\;然后i3-msg exec lxterminal\; exec lxterminal\; exec lxterminal\; exec medit应该恢复您的第一个所需的布局。//感谢您改善我的回答,顺便说一句。
达米安
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.