在 i3wm 中,如何在启动时在另一个工作区中打开程序?

In i3wm how can I open programs on another workspace at startup?

我在我的配置文件中尝试了多种方法来让 Chromium 在 $ws2 上打开,但它在启动时一直在 $ws1 上打开。

首先你必须从 xprop 中找到 WM_CLASS(STRING)。打开 xprop 并单击目标 window 您将看到有关该 window 的信息。找到 WM_CLASS(STRING) 第二个字符串(对于 i3wm)然后转到 i3 wm .config/i3/config 的配置文件并定义这样的规则 for_window [class="Chromium"] move to workspace $ws2 for_window [class="TelegramDesktop"] move to workspace $ws3 这里把class="String"替换成我们之前用xprop找到的字符串。

或者,按照 4.17 of the i3 User’s Guide 部分中的说明,在您的配置文件中插入一个 assign 声明,例如assign [class="Chromium"] $ws2。这将直接在指定的工作区上打开程序。但是,对于像 Spotify 这样性能较差的程序,需要 for_window ... move to workspace ... 方法在程序打开后移动程序。

要在启动期间在特定工作区上打开程序(在您的情况下为 chromium)并 return 到您的第一个工作区:

1: 将以下内容添加到您的 ~/.config/i3/config 文件中。

exec --no-startup-id i3-msg 'workspace $ws2; exec PROGRAM; workspace $ws1'

1a: 将示例中的“$ws2”替换为您要使用的工作区的名称。

1b:用 PROGRAM 的任何选项替换 运行(execute) 的程序名称。此部分不需要引号

1c: 将示例中的“$ws1”替换为您想要 return 的工作空间的名称,或者省略“;工作空间 $ws1”以进入 $ws2。

1d:确保你在我将它们包含在示例中的地方有单引号

2:保存编辑(我让编辑器保持打开状态,以防我必须在原地重启后更改文件)

3: 测试:

3a:让 i3 重新读取配置文件(在我的系统上是 mod4+shift+c)

3b:就地重启 i3(在我的系统上是 mod4+shift+r)

注意:我在我的配置中使用 $ws1 $ws2 等,因为一旦这些配置完成,我就可以更轻松地在一个地方更改标题和很棒的图标,而不是在许多地方。无耻地从 i3 和其他人那里偷来的方法是我所有 linux 的知识。 :-)