Linux(最好是 Mint/MATE):如何避免 Chrome 重启时将多个 Chrome 窗口移动到不同的工作区

Linux(最好是 Mint/MATE):如何避免 Chrome 重启时将多个 Chrome 窗口移动到不同的工作区

Chrome 有一个很棒的功能,可以保存您打开的所有窗口。当您关闭 Chrome 时(无论是故意关闭,还是因为您家的电气系统很糟糕,而您的妻子想同时泡茶和使用微波炉),它会保存所有打开的窗口,然后下次您启动 Chrome 时,它​​会恢复这些窗口(或让您选择是否恢复,视情况而定)。

这一切都很棒,除了一件事:所有这些窗口都重新出现在当前工作区中,而不是它们关闭时所在的工作区中。从工作区的整体角度来看,我喜欢在工作区 #1 上设置 1-2 个 Chrome 窗口,其中包含有关主题 #1 的选项卡,在工作区 #2 上设置 1-2 个窗口,其中包含有关主题 #2 的选项卡,等等。但是,当 Chrome 崩溃或关闭时,我重新启动它,我必须将所有这些窗口重新定位到正确的工作区。

是否有人找到一个程序,甚至是脚本,可以让 Chrome(或启动 Chrome 的脚本)将所有这些窗口定位回它们所属的工作区?

答案1

看起来该wmctrl程序(来自同名包)可能对您的脚本有用,它的描述是

Wmctrl 是一个命令行工具,用于与 EWMH/NetWM 兼容的 X 窗口管理器(例如 Enlightenment、icewm、kwin、metacity 和 sawfish)进行交互。

Wmctrl 提供对 EWMH 规范中定义的几乎所有功能的命令行访问。例如,它可以最大化窗口、使窗口粘滞、将它们设置为始终位于最顶部。它可以切换和调整桌面大小以及执行许多其他有用的操作。

它有以下选项

  • -r <WIN> 为操作指定目标窗口。

  • -t <DESK> 将已使用 -r 操作指定的窗口移动到桌面<DESK>

  • -l 列出由窗口管理器管理的窗口。每个窗口输出一行,该行被分成空格分隔的列。第一列始终包含窗口标识(十六进制整数),第二列始终包含桌面编号(-1 用于标识粘性窗口)。如果-p指定了该选项,则下一列将包含窗口的 PID(十进制整数)。如果-G指定了该选项,则接下来将有四个整数列:x 偏移、y 偏移、宽度和高度。下一列始终包含客户端计算机名称。该行的其余部分包含窗口标题(标题中可能包含多个空格)。

看来 Chrome/Chromium 窗口可能会根据打开的选项卡更改标题...所以可能也需要这些:

  • -N name 将 -r 操作指定的窗口的名称(长标题)设置为 name。

  • -I name 将 -r 操作指定的窗口的图标名称(简称)设置为 name。

  • -T name 将 -r 操作指定的窗口的名称(长标题)和图标名称(短标题)都设置为 name。此操作类似于同时使用-N和操作(否则这是不可能的,因为 wmctrl 一次只能执行一个操作)。-I

  • -x 将 WM_CLASS 包含在窗口列表中或解释<WIN>为 WM_CLASS 名称。

    [例如,chromium.Chromium]


一个更快的“手动”想法

我正在查看 AntiX(也在 MX-Linux 中)软件包wingrid-antix,它有用于移动和调整窗口大小的 shell 脚本,它们在窗口管理器中用作键盘快捷键,使用wmctrl -r :ACTIVE: ...它给了我这个想法:

如果您使用一些键盘快捷键将窗口发送到特定桌面(编号从零开始):

wmctrl -r :ACTIVE: -t 0

其他的则使用快捷键比如“Ctrl+Super+1”发送到桌面-t 1-t 2等,然后当浏览器窗口处于活动状态时,您所要做的就是按下桌面的快捷键,该窗口就会发送到另一个桌面。

它不是自动的,但只需按一下按钮即可,并且无需担心 Chrome 奇怪的窗口名称。

相关内容