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 奇怪的窗口名称。