问题标签 [wmctrl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
195 浏览

java - java和wmctrl调整窗口大小

我正在编写一个库来涵盖 WMctrl shell 程序。我在调整窗口大小时遇到​​问题:

这不起作用 -输出变量为空。但是当我将wmctrl -r "Calculator" -e 0,100,100,500,500复制粘贴到终端时,它可以正常工作。

其他命令,如“ wmctrl -d ”和“ wmctrl -l ”在this.bashCommandExecutor.execute()方法中工作。

此方法如下所示:

为什么调整大小在命令行中起作用,但在 Java 应用程序中不起作用?

0 投票
0 回答
367 浏览

linux - 连续相同的 wmctrl 命令调整 xfce4-terminal 的大小

我正在编写一个使用 wmctrl 移动窗口的平铺脚本。在 xfce4-terminal 实例上使用它时,第二次连续相同的运行会调整窗口大小。这是重要的代码:

如果我使用相同的坐标连续两次调用此脚本:

python3 screen.py 2 2 1 2 1 1(这意味着网格大小:2x2,第 1-2 行,第 1-1 列(又名屏幕的右半部分(它将运行的命令打印到终端))

窗口第二次再次调整大小,忽略边框并扩展超出 xfce 面板。下面是第一个和第二个脚本运行后的图像。有关差异,请参见窗口底部。注意 wmctrl 命令运行两次都是一样的。

第一次运行终端仿真器从中心向右移动

第二次运行,终端模拟器将几个像素扩展到面板中

当直接从命令行运行 wmctrl 时也会发生这种行为,因此问题不在 python 中。(对于我的屏幕大小,wmctrl -r :ACTIVE: -e 0,0,0,960,1024我包含了 python 脚本,因为如果您想测试行为,它允许您专门为您的屏幕获取该信息/命令。)

表明问题在于“wmctrl 正在返回装饰内窗口的几何形状”。但是,我无法获取父窗口,并且它似乎不存在,因此该解决方案似乎可能特定于 unity/gedit。它也没有解释为什么一个连续的重复移动命令会改变窗口的几何形状,当第一个命令将它放在正确的位置时。

我测试了一些终端模拟器,看看模拟器是否可能是问题的根源。

从 xterm、terminator(尽管有奇怪的行为)、qterminal、eterm、rxvt、stterm 和 kterm 运行命令或程序时不会出现此问题。它确实出现在 xfce4-terminal 和 lilyterm 中。在 gnome-terminal 和 roxterm 中有类似但不相同的奇怪行为。这让我相信它是终端模拟器特定的错误/怪癖。问题可能与第一次调整大小有关,而不是第二次调整大小,因为 xterm 和其他模拟器在第一次运行时会完全扩展。

我在 Ubuntu 16.04 (xenial) 衍生版本(内核:x86_64 Linux 4.8.17-galliumos)上运行 xfce 4.12。我的 wmctrl 版本是 1.07。我的 xfwm4 版本是 4.12.3(修订版 7fdcb53)。我的屏幕分辨率是 1920x1080。我正在调整大小的窗口是 xfce4-terminal 0.6.3。

我想知道我是否可以做些什么来防止这种情况发生。我一直在将窗口大小调整为 0,0,0,0,然后调整为所需的尺寸,但这需要另一个命令和丑陋的闪光灯。

wmctrl -r :ACTIVE: -e 0,960,0,960,1024Tldr:从 xfce4-terminal 实例运行 SAME wmctrl 命令两次( )第二次移动窗口,将其向下扩展。我想知道为什么会发生这种情况以及如何阻止它发生。

0 投票
0 回答
902 浏览

gnome - Wayland 表面位置

我知道 Wayland 协议不提供控制屏幕上外壳表面位置的选项。我想找到一种控制窗口/表面放置的方法。我尝试过 xdotool 和 wmctrl 之类的工具,但它们只能识别 XWayland 窗口。我正在使用 Gnome Shell,所以窗口管理器是 Mutter。为什么地面位置不是 Wayland 协议的一部分?以编程方式控制 Wayland 表面放置的建议方法是什么?

编辑:

Wayland 客户端协议为子表面提供了接口,目前足以满足我的目的。但是窗口我希望协议包含顶级窗口位置选项。我可以用javascript制作gnome-shell扩展吗?但在这种情况下并不是一个真正的选择。

0 投票
1 回答
1262 浏览

linux - wmctrl:移动全屏窗口

一个小的 shell 脚本应该可以解决我的重影屏幕问题。我试图将每个窗口在某个方向上移动 1px,然后在接下来的一秒内,它应该在另一个方向上向后移动。

是否可以将全屏窗口向某个方向移动 1px?( wmctrl )。

谢谢你的帮助!

0 投票
1 回答
571 浏览

bash - 运行 firefox 后进入全屏但不是 kiosk 模式

我想在启动时自动启动 Firefox,然后最大化窗口。使用下面的代码,我目前能够启动 Firefox,但是我无法通过它。

第一部分开始运行 Firefox。之后有一个循环,我正在编写它来创建和显示 Firefox 窗口。最后一步是将 Firefox 最大化到全屏。

我相信我的while循环有问题。

0 投票
1 回答
835 浏览

python - 是否可以在脚本中获取特定 nautilus 窗口的目录?

我想构建一个 Python 脚本来检查特定目录是否在 nautilus 中打开。

到目前为止,我最好的解决方案是使用wmctrl -lxp列出所有窗口,这给了我这样的输出:

然后我检查我感兴趣的目录的基本名称是否在窗口的窗口名称中nautilus.Nautilus

这是我刚刚描述的不完整解决方案的代码:

这绝对可以确定它是否未打开,这只能让我到目前为止,因为它可能会返回误报。如果我想检查是否/foo/test打开,我无法判断第二行是指该目录还是其他路径,最终目录名为test. 例如,我无法/foo/test区分/bar/test.

有什么方法可以在 Ubuntu 上使用内置或 apt-get / pip 可安装工具来做我想做的事吗?

0 投票
1 回答
324 浏览

bash - wmctrl 不正确的调整大小和移动 - 取决于应用程序

使用 调整大小和移动时wmctrl,结果既不正确,又取决于应用程序。

示例:在撰写本文时,我正在运行 emacs、chromium、spotify 和 gnome-terminal

现在,wmctrl -lG结果如下(删除了无关信息):

为 4 个终端窗口运行完全相同的代码会产生:

所有尺寸都不正确,而且不同的应用程序具有不同的尺寸,而同一应用程序的所有窗口具有相同的尺寸。

预期的:

我似乎找不到任何讨论这个确切问题的帖子。

非常感谢所有帮助!

0 投票
3 回答
1841 浏览

bash - 如何通过脚本或 Shell 命令将焦点切换到 Gnome 终端选项卡

我目前正在编写一个脚本来在 gnome-terminal 中打开几个选项卡,并设置它们的标题。我可以打开多个选项卡,但我需要将焦点更改为这些选项卡(以编程方式),以便从我的脚本中设置它们的标题。

我交替使用 zsh 和 bash,所以任何 bash 命令都应该可以正常工作。我开始熟悉xdotooland wmctrl,但不确定将焦点切换到打开选项卡的命令组合。

我可以使用哪些命令从 gnome-terminal CLI “切换到下一个打开的选项卡”或“切换到选项卡N ”?

0 投票
1 回答
300 浏览

linux - 使用 bash 计算 Linux 上最小化的窗口

我正在尝试构建一个脚本,在显示我选择的窗口之前检查 XFCE 下的窗口是否已最小化(它是更大项目的一部分)

我试图用 wmctrl 恢复打开窗口的数量,但这些不是最小化的窗口:

我也尝试使用 xdotool,但没有成功:(

我想知道您是否知道任何获取此信息的方法。我在 XFCE 上,但任何工具的另一种方式都会很棒

非常感谢 !

0 投票
1 回答
81 浏览

python - python3控制台和python3程序代码中的差异命令

我在 Ubuntu 18.04 的 PyCharm 下用 python3.6 编写了一个程序,我想在特定的窗口坐标上弹出一个 jpg 文件。唯一可能的方法似乎是使用 eog 和 wmctrl。

我没有找到能够将 jpg 文件精确定位在我想要的位置的图像查看器(不是 eog、qiv、.. 或其他人,他们错过了这些选项)

所以我 eog filename.jpg习惯弹出列表。然后将wmctrl-command其放置在屏幕上

在 unix(Ubuntu)的控制台上做:

eog filename.jpg--> eog 居中弹出它。

wmctrl -a filename.jpg -e 0,10,0,600,2000 --> 把它放在我想要的地方

(我从哪个目录调用 eog 无关紧要,它也可以与目录 /home/user/......(filename.jpg)。对于 wmctrl 在每种情况下只有 filename.jpg 就足够了。(也“wmctrl -r 文件名.......有效)

从 Pythone-console 执行相同的操作,它也可以完美运行。

但是:当我从程序代码中执行一些操作时

cmd = "eog filename.jpg"

os.system(cmd) (或者os.system("cmd"),以屏幕为中心弹出文件有效

但:

cmd = "wmctrl -a filename.jpg -e 0,10,0,600,2000"

os.systems(cmd) -------> 没有任何反应,好像os.system()命令被忽略了

任何想法,可能有什么问题都值得赞赏!

(我首先想到的是,我遇到了文件名和特定字符的问题,但它也发生在像 test.jpg 这样的简单名称上。)

在 Python 控制台上我也使用 cmd =...........os.system(cmd)之后"import os"