当前位置: 首页 > 知识库问答 >
问题:

如何自动获取xdotool窗口ID

邓夕
2023-03-14

我这里有窗口ID:

cchilders@cchilders-Dell-Precision-M3800:~$ xdotool selectwindow
65011713

这是针对chrome本身的,每个选项卡在点击时得到相同的值。所以我希望在ps或窗口管理器中找到它,但没有:

cchilders@cchilders-Dell-Precision-M3800:~$ wmctrl -l
0x03a00001  0 cchilders-Dell-Precision-M3800 views.py - /home/cchilders/work_projects - Atom
0x03a00048  0 cchilders-Dell-Precision-M3800 pip_freeze_update.py - /home/cchilders/scripts - Atom
0x03a000bc  0 cchilders-Dell-Precision-M3800 urls.py - /home/cchilders/work_projects - Atom

ps也不起作用:

(clientsite)cchilders@cchilders-Dell-Precision-M3800:~$ ps -alx
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0 185188  5752 ep_pol Ss   ?          0:06 /sbin/init splash
1     0     2     0  20   0      0     0 kthrea S    ?          0:00 [kthreadd]
1     0     3     2  20   0      0     0 smpboo S    ?          0:02 [ksoftirqd/0]
1     0     5     2   0 -20      0     0 worker S<   ?          0:00 [kworker/0:0H]
1     0     7     2  20   0      0     0 rcu_gp S    ?          1:10 [rcu_sched]
1     0     8     2  20   0      0     0 rcu_gp S    ?          0:00 [rcu_bh]
...etc...
(scripts)cchilders@cchilders-Dell-Precision-M3800:~/scripts/bash$ wmctrl -l
0x03e00001  0 cchilders-Dell-Precision-M3800 Edit - Stack Overflow - Google Chrome
...

并抓取第一个空格分隔的数字到int:

In [13]: int("0x03e00001", 16)
Out[13]: 65011713

int中的16标志告诉它需要十六进制

In [14]: int("0x03e00001")
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-14-96517b980767> in <module>()
----> 1 int("0x03e00001")

ValueError: invalid literal for int() with base 10: '0x03e00001'

共有1个答案

江丰羽
2023-03-14

您可以使用awkwmctrl-l的输出中提取ID。

例如:

wmctrl -l | awk '/Google Chrome/ {print $1}'

xdoTool可能会很好地处理十六进制ID,但如果不能,您可以使用strtonum将其转换为十进制表示:

wmctrl -l | awk '/Google Chrome/ {print strtonum($1)}'
 类似资料:
  • 问题内容: 我试图用Java升级我的应用程序,使其仅在具有特定名称的进程窗口处于活动状态时才能工作。我发现使用JNI可以做到这一点,但是我不知道该怎么做。我只是找不到任何可以解释它的描述或示例。我的问题是- 如何获取Windows中当前活动窗口的进程名称(通过JNI或其他方式-我接受任何其他解决方案)? 问题答案: 减轻您的痛苦,并使用JNA。您将需要下载 Win32 API的 jna.jar 和

  • 问题内容: 我在AWT中看到了一种方法:。在JavaFx中,是否有任何方法可以获取所有窗口的JavaFx应用程序? 谢谢, 问题答案: AFAIK,仍然没有适当的方法来执行此操作。 尽管有一种 肮脏的短期 方法: 浏览的源代码,有一个静态方法似乎可以满足您的期望:。 但是有很多免责声明:

  • 问题内容: 我有一个AJAX聊天程序,将消息输出到div溢出:自动,所以如果它太长,则会出现滚动条。有没有办法让它在添加新消息时自动滚动到底部?最好使用jQuery? 问题答案: 这将通过以下行完成 这是将滚动条设置为自己元素的高度 只需在每条新消息中都调用它即可:) 干杯

  • 问题内容: 我希望找到一种方法来获取当前可见窗口的位置(相对于总页面宽度/高度),以便可以将其强制从一个部分滚动到另一部分。但是,要猜测哪个对象对您的浏览器拥有真正的X / Y,似乎有很多选择。 为了确保IE 6 +,FF 2+和Chrome / Safari能正常工作,我需要选择以下哪两项? 还有其他吗?一旦知道窗口在哪里,就可以设置一个事件链,该事件链将缓慢调用直到到达所需的位置。 问题答案:

  • 问题内容: 我正在尝试获取活动窗口的标题。该应用程序是一个后台任务,因此如果用户打开Eclipse,该函数将返回“ Eclipse- blabla”,因此它不会获取我自己窗口的窗口标题。我正在使用PyQt4在Python 2.6中进行开发。 我当前的解决方案是从SO的旧答案中借用并稍作修改的,看起来像这样: 它适用于大多数窗口,但不是全部。例如,它找不到我的kopete聊天窗口,或者找不到我当前正

  • xdotool 工具可以从命令行操作xwindow里面的窗口,包括:移动位置、调整大小等等。特别适合启动rdesktop之后把远程桌面窗口自动放到辅屏幕上。例如: #!/bin/bashTITLE="Remote Windows Desktop"retry=5(while ! xdotool search --name "$TITLE" windowmove 1680 0; do sleep 1