我知道在 i3-wm 中可以将某些应用程序绑定到某些工作区,并将某些工作区绑定到某些显示器(我有双显示器设置)。是否也可以将特定的 google-chrome 选项卡绑定到某些空间/显示?对于那些想知道我如何进行应用程序工作区或工作区显示绑定的人,这是我的 i3config 的片段:
# binding workspaces to displays(run xrandr --query to get display names)
workspace $ws1 output "eDP-1" workspace_layout tabbed
workspace $ws2 output "HDMI-1" workspace_layout tabbed
workspace $ws3 output "HDMI-1" workspace_layout tabbed
workspace $ws4 output "eDP-1" workspace_layout tabbed
workspace $ws5 output "HDMI-1" workspace_layout tabbed
# Bind App to workspaces
# Check class by using xprop command
assign [class="Google-chrome"] $ws1
assign [class="Nemo"] $ws2
assign [class="eDEX-UI"] $ws2
assign [class="Vlc"] $ws5
assign [class="crx_eppojlglocelodeimnohnlnionkobfln"] $ws5
可以使用应用程序的窗口类和实例将应用程序分配给特定的工作区。例如,
chromium
它将是:但这里的问题是每个 Chromium 选项卡都有相同的窗口类。您只能为整个运行实例更改它:
因此,您不能将单独的选项卡分配给不同的工作区。唯一的解决方法是通过从命令行手动启动每个选项卡来在应用程序模式下使用 Chromium:
这样每个选项卡将被创建为不同的实例:
绑定一个特定的 Chrome 窗口可以通过它的 title 属性来完成:
exec google-chrome --app="https://app.excalidraw.com/"
xprop
以获取WM_NAME(UTF8_STRING)
价值。我相信这与启动应用程序时 Chrome 窗口顶部的标题显示的值相同。对于 excalidraw,值为Excalidraw Plus — Workspace dashboard
.for_window [title="Excalidraw Plus — Workspace dashboard"] move to workspace $ws3
对我有用的是在将选项卡(实例)绑定到工作区时使用类和实例(使用 xprop 时 WM-CLASS 中逗号前的字符串)。
以 netflix 为例,我首先去了 netflix,然后单击 google-chrome 中地址栏旁边的 3 个点,然后单击更多工具>创建快捷方式。这会为您桌面上的 URL 创建一个 google-chrome 实例的快捷方式。
您可以使用任何文件管理器检查 dektop 快捷方式的属性,然后复制命令部分的内容并将其粘贴到 i3config 中的 exec 之后的键绑定行中,如下所示:
使用绑定调用实例,在终端中运行 xprop 并单击实例窗口以拉取详细信息。我的返回:
然后简单地使用逗号之前的字符串作为实例,使用逗号之后的字符串作为类,如下所示:
希望这对像我一样被困住的人有所帮助。:)