跳转到主要内容

存储和恢复所选X11窗口的桌面、几何形状和阴影状态

项目描述

wm-win-tool

通过窗口标题和类模式选择X11窗口,存储它们的桌面、几何形状和阴影状态,以便稍后恢复布局。

此程序存在的主要原因是为了解决Firefox的问题,在常规X11窗口管理器下(以我的KF5为例),Firefox无法正确恢复会话。

请注意,这个问题是众所周知的,但不幸的是,在过去13年中,解决这个问题的工作很少(请参阅此问题)。

此程序是手动/外部解决此问题的谦逊尝试,但也可能对其他情况同样有用。

用法

wm-win-tool [-hVvfbr] [-c class][-t title] store
wm-win-tool [-hVvfbr] [-c class][-t title] restore [arg]
wm-win-tool [-hVvb][-c class][-t title] curlist [max]
wm-win-tool [-hVv] list [max]
       -h, --help           this message
       -V, --version        print version and exit
       -v, --verbose        verbose mode (cumulative)
       -f, --force          force store
       -b, --bracket        use the bracket pattern
       -r, --regexp         class and title pattern are regexp
       -c, --class class    match window class
       -t, --title title    match window title

命令

store 将通过类或模式保存所选窗口的几何形状、桌面和阴影状态,除非前一个状态未更改或操作通过 --force 强制执行。

restore 将恢复通过类或模式匹配的窗口几何形状,arg 是存储列表中的时间戳或相对索引(例如,默认的最后一个会话为 -1,之前的会话为 -2 等)。

请注意,存储和恢复的选项参数应该匹配。

使用 curlist 命令测试您当前的选择选项。

list 显示可用的会话,按日期(降序)排序,可选的最大项目数用于恢复。

选项

--class--title 是简单的区分大小写的通配符模式,可以多次提供以匹配窗口的子集。使用 --regexp 将其切换到正则表达式匹配。请确保正确引用此类参数。

--bracket 选项仅匹配窗口标题中的方括号部分,例如:[标题] 长标题 将仅匹配 [标题]。这对于与 Firefox 和 Window Titler 插件 结合使用非常有用。

示例用法

轻松恢复 Firefox 会话的方法

wm-win-tool -bc Navigator.Firefox store

将保存所有 Firefox 窗口,并且

wm-win-tool -bc Navigator.Firefox restore

将恢复所有已识别的窗口。唯一的缺点是,窗口标题必须完全匹配才能正确恢复。因此,最好在离开会话之前运行此工具。

针对该问题的更稳健的方法:安装 Window Titler 插件 并为所有希望管理的窗口提供具有在窗口标题前方的方括号中出现的 唯一 标题。这提供了一个静态标题,不依赖于哪个标签页处于活动状态。

现在保存会话就像这样简单

wm-win-tool -vb store

您可以根据需要多次运行此命令。只要会话在此期间没有更改,它就不会存储新会话(除非提供了 --force 选项)。

重启后,您可能希望恢复此会话

wm-win-tool -vb restore

é voila,窗口将移动到它们原来的桌面,并应用它们以前的几何形状和阴影状态。

安装

使用 pip

$ pip install wm-win-tool

从源代码

$ wget https://files.pythonhosted.org/packages/source/w/wm-win-tool/wm-win-tool-<version>.tar.gz
$ tar xvf wm-win-tool-<version>.tar.gz
$ cd wm-win-tool-<version>
$ python3 setup.py install

依赖项

您需要确保已安装命令行程序 wmctrlxprop。请使用您发行版的软件包管理器进行检查。

因此,wm-win-tool 需要正确的 DISPLAY/XAUTHORITY 环境设置。

最后注意事项

有很大机会,Firefox 的问题已在版本 75 中得到修复。万岁。让我们希望一切顺利。如果一切顺利,此工具提供了一种很好的方式来 验证 最终修复。如果所有窗口都匹配,它将不会在(详细)恢复时执行任何操作。:wink

当通过指向 wm-win-tool 的符号链接执行时,storerestore 命令可以隐式触发,例如。

$ cd <whatever>/bin
$ ln -s wm-win-tool wm-win-store
$ ln -s wm-win-tool wm-win-restore

这些操作模式有一些硬编码的默认值:对于最常用的用法模式,使用 --bracket--verbose。如果这还不够,配置文件选项可能很有用(待定)。

会话数据保存在 ~/local/share/wm-win-tool 中。

在病理情况下(我确实是这样计算的),完全排除 Firefox 从窗口管理器会话恢复中可能是有益的。kwin5 可以这样配置。当重启后执行 Firefox 时,它将在您的 当前 桌面上打开所有会话窗口。运行 wm-win-restore完成

如果您计划从 crontab -e 运行 wm-win-store,请记住,大多数 cron 实现都存在变量扩展问题。以下是一个适用于 Vixie cron 的示例:

#PATH=$HOME/bin:/bin:/usr/bin	# won't work
#XAUTHORITY=~/.Xauthority	# neither that

# store firefox window list
42 * * * * XAUTHORITY=~/.Xauthority DISPLAY=:0 wm-win-tool -b store

AUTHORITY 在这种情况下由 shell 展开,这对于正常操作是必要的。根据您安装 wm-win-tool 的方式,您可能需要调整路径。我们在这里也避免了使用符号链接快捷方式,因为它具有隐含的详细程度。

有些事情是以相当 oldschool 的方式实现的,例如命令行处理,但直到命令行界面变得 显著 更复杂,我更喜欢这样(已经很多年了)。

如果您有其他想法,有趣的应用,等等,请告诉我。

欢迎反馈。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

wm-win-tool-0.1.6.tar.gz (18.1 kB 查看散列)

上传时间 源代码

构建分发

wm_win_tool-0.1.6-py3-none-any.whl (18.6 kB 查看散列)

上传时间 Python 3

由以下支持