AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1060170
Accepted
Tim
Tim
Asked: 2018-07-28 14:44:47 +0800 CST2018-07-28 14:44:47 +0800 CST 2018-07-28 14:44:47 +0800 CST

xdotool:窗口的“类”和“类名”是什么?

  • 772

根据https://unix.stackexchange.com/a/254854/674和https://unix.stackexchange.com/questions/458895/how-can-i-bring-a-background-gui-job-to -the-front-of-my-desktop,有一个来自 xdotool 手册页的示例

# Activate google-chrome when you move the mouse to the bottom-left corner: 
xdotool behave_screen_edge bottom-left search --class google-chrome windowactivate

手册页说

--class 与窗口类匹配。

--classname 与窗口类名匹配。

什么是“类”和“类名”?

它们有哪些可能的值?

如何找出窗口的类和类名?

谢谢。

xorg xdotool
  • 1 1 个回答
  • 31892 Views

1 个回答

  • Voted
  1. Best Answer
    Sergiy Kolodyazhnyy
    2018-07-28T23:31:07+08:002018-07-28T23:31:07+08:00

    在 X11 下,窗口具有 XWindowdAttributes 结构和XClassHint 结构 属性,应用程序可以从中获取有关窗口的信息。特别是最后一个负责WM_CLASS属性,两个逗号分隔的字符串,通过xprop命令可以很容易地看到。例如,Chrome 有

    WM_CLASS(STRING) = "google-chrome", "Google-chrome"
    

    这两个记录为:

    • 一个字符串,用于命名拥有此窗口的客户端所属的应用程序的特定实例。...
    • 一个字符串,用于命名拥有此窗口的客户端所属的一般应用程序类。由类指定的资源适用于具有相同类名的所有应用程序......

    因此,例如 Chrome 的 Hangouts 扩展程序,具有相同的类名,但不同的实例名:

    $ xprop | grep 'CLASS'
    WM_CLASS(STRING) = "crx_nckgahadagoaajjgafhacjanaoiihapd", "Google-chrome"
    

    这允许诸如xdotool搜索特定应用程序类型或特定窗口实例的所有窗口之类的工具。例如,这对于诸如将窗口分组在应用程序的同一图标下的停靠点之类的东西也可能是有用的属性。

    特别是 for xdotool,classname对应第一个字符串,class对应第二个字符串。在我的 Chrome 和环聊应用示例中:

    $ xdotool search -classname crx_nckgahadagoaajjgafhacjanaoiihapd
    96469129
    
    $ xdotool search -class Google-chrome
    96469069
    109051905
    109051907
    96468993
    96469129
    109051912
    109051924
    

    从查看源代码中也可以看出这一点。例如,让我们关注类名。在cmd_search.c我们建立了一个搜索结构,它有一个搜索掩码属性(第 171 到 173 行)。

    这被传递给在xdo_search.cxdo_search_windows中定义的函数,该 函数又调用_xdo_match_window_classname,最终使用标准Xlib函数XGetWindowAttributes和XGetClassHint检索本答案开头提到的两个结构。check_window_match


    旁注:Gtk 应用程序显然总是创建一个带有子窗口的小父窗口,这意味着您在搜索特定窗口时可能会得到令人困惑的结果。

    • 33

相关问题

  • 如何从命令行重新启动 X Window Server?

  • xorg 中是否有用于更改视频驱动程序的 GUI?

  • 类似于 Eyefinity 的东西?

  • 如何重置我的键盘布局?

  • 帮助让 Flash 播放器在第二个屏幕上工作?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve