i3:如何在指定工作区启动启动时间较长的程序

tif*_*rel 8 x11 workspaces i3 window-management

是否可以在我的 i3 启动文件中专门配置一个桌面来启动程序,但只在那里启动一次而不将该程序分配给桌面。

我知道存在一个涉及更改到另一个工作区的解决方案,但这给我留下了一个主要问题:只要我有一个具有“非即时”启动时间的程序,该程序就会出现在我最后一个工作区中切换到而不是在我想要的工作区。

具体来说,这是我当前的启动文件,我在其中做了一个解决方法,涉及将原子(这是困扰我 atm 的程序)分配到工作区 9,这目前还可以,但从长远来看是不可取的:

assign [class="Atom"] $workspace9
exec atom

exec --no-startup-id i3-msg 'workspace $workspace9; exec 
/usr/bin/urxvt'
#exec --no-startup-id i3-msg 'workspace $workspace9; exec /usr/bin/atom'
exec --no-startup-id i3-msg 'workspace $workspace1; exec /usr/bin/urxvt'
Run Code Online (Sandbox Code Playgroud)

我想获得对 atom 的注释调用以所需的方式执行并完全抛弃赋值方法。

我实际上并不认为它具有相关性,但以防万一:我运行基于 Arch 的 Manjaro-Linux。

编辑:以下代码片段有效,但仍然保留这个问题,因为它限制我最后打开原子并在该桌面上启动我的会话:

#assign [class="Atom"] $workspace9
#exec atom

exec --no-startup-id i3-msg 'workspace $workspace9; exec 
/usr/bin/urxvt'
exec --no-startup-id i3-msg 'workspace $workspace1; exec /usr/bin/urxvt'
exec --no-startup-id i3-msg 'workspace $workspace9; exec /usr/bin/atom'
Run Code Online (Sandbox Code Playgroud)

这也有一个明显的缺点,它不允许多个程序在不同的工作空间上启动,如果它们表现出与 atom 相同的行为。

Wie*_*and 0

您注释掉的调用确实适用于支持启动通知的应用程序 - 事实上,用户指南中的“在工作区 3 上启动iceweasel(一次)”示例具有几乎相同的exec命令:

exec --no-startup-id i3-msg 'workspace 3; exec iceweasel; workspace 1'
Run Code Online (Sandbox Code Playgroud)

然而,Atom似乎不支持启动通知,因此您需要继续使用该assign方法。