存储和恢复所选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
依赖项
您需要确保已安装命令行程序 wmctrl
和 xprop
。请使用您发行版的软件包管理器进行检查。
因此,wm-win-tool
需要正确的 DISPLAY/XAUTHORITY 环境设置。
最后注意事项
有很大机会,Firefox 的问题已在版本 75 中得到修复。万岁。让我们希望一切顺利。如果一切顺利,此工具提供了一种很好的方式来 验证 最终修复。如果所有窗口都匹配,它将不会在(详细)恢复时执行任何操作。:wink
当通过指向 wm-win-tool
的符号链接执行时,store
和 restore
命令可以隐式触发,例如。
$ 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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8aa9de62b177d586d0dbf44f94e540a9fd2b1ef96e30d5f7ce81b37d664c621f |
|
MD5 | e56f8fd47a2c9a195e22ba48d843ffa3 |
|
BLAKE2b-256 | 7906abbb935b83fda29668a554b57920a2c0309550cbf745b28ad80e54a805b5 |
wm_win_tool-0.1.6-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | a323fdac461d65759bd0ad0bb9eca9f07157f9fab06885e9ce1069d1df7114a5 |
|
MD5 | af66807c0452dbfb013dbf8b05dcffb2 |
|
BLAKE2b-256 | 7ed9b02c16b86d0d03d87f14d4ac4ebaa786cc829f6b977f2d6c1740501ffba7 |