debian中,xdotool工具备忘

安装

apt-get install xdotool

search使用

xdotool search 命令用于搜索符合条件的窗口,并返回窗口ID列表。该命令可以接受多个参数来指定搜索条件,常用的参数有:

xdotool search [OPTIONS] [WINDOW_SEARCH_CRITERIA]

# 示例参数:
# --desktop         指定要搜索的桌面编号
# --class           窗口类名(Window Class)
# --name            窗口标题(Window Name)
# --classname       类名称(Class name),不包含实例后缀(不同于--class)
# --windowclass     同--class
# --title           同--name
# --pid             通过进程ID查找窗口
# --onlyvisible     只返回可见窗口

# 示例用法:
# 查找所有名为"Chromium浏览器"的窗口ID
xdotool search --name "Chromium浏览器"

# 查找类名为"Google-chrome"的所有窗口
xdotool search --class "Google-chrome"

# 查找当前桌面下所有可见的窗口
xdotool search --onlyvisible

# 根据进程ID查找对应的窗口
xdotool search --pid <进程ID>

使用 xdotool search 返回的是一个空格分隔的窗口ID列表,你可以根据需要对这些窗口执行进一步的操作,例如模拟键盘输入、移动窗口位置、改变窗口大小等。

请注意,窗口名称和类名可能因系统和应用程序的具体实现而有所不同,建议先使用xprop工具来检查目标窗口的实际属性值。

windowmove 移动窗口

xdotool windowmove 是一个用于在Linux中移动窗口位置的命令。通过给定目标窗口的ID和新的坐标位置,可以改变指定窗口在屏幕上的位置。

基本语法如下:

xdotool windowmove [OPTIONS] WINDOW_ID X_POSITION Y_POSITION
  • WINDOW_ID: 要移动的窗口的ID。你可以使用 xdotool search 命令来查找窗口ID。
  • X_POSITION: 新的X轴坐标(水平位置),单位通常是像素,表示相对于屏幕左上角的距离。
  • Y_POSITION: 新的Y轴坐标(垂直位置),单位同样是像素,表示相对于屏幕顶部的距离。

例如,如果你要将窗口ID为123456的窗口移动到屏幕的(100, 100)位置,可以这样做:

xdotool windowmove 123456 100 100

注意:

  • 确保你有足够的权限来操作窗口。
  • 窗口ID是动态变化的,每次启动应用时可能会不同,因此在编写脚本时需要确保获取的是当前活动窗口的ID。
  • 根据桌面环境的不同,窗口管理器可能对窗口的位置有所限制或自动调整布局,因此实际效果可能受窗口管理器设置的影响。

windowactivate使用说明

xdotool windowactivate 是一个在Linux系统中激活指定窗口的命令,它可以使某个窗口成为当前焦点(即变为活动窗口)。

基本语法如下:

xdotool windowactivate [OPTIONS] WINDOW_ID
  • WINDOW_ID: 要激活的窗口ID。你可以使用 xdotool search 命令配合搜索条件来获取特定窗口的ID。

例如,如果你想激活窗口ID为123456的窗口,可以运行以下命令:

xdotool windowactivate 123456

选项说明:

  • -sync: 如果设置了这个选项,xdotool 会在操作完成之后才返回,确保操作已成功执行。
  • -reuse: 如果可能的话,尝试重新使用已有的窗口而不是创建新的窗口实例。
#通过这个命令,你可以将焦点切换到指定的窗口上,比如在自动化脚本中实现窗口间的交互或测试场景。
WINDOW_ID=$(xdotool search --name "Firefox" | head -n1)
xdotool windowactivate --sync $WINDOW_ID
# 获取窗口ID(假设窗口标题是"Chromium浏览器")
WINDOW_ID=$(xdotool search --name "Chromium浏览器" | head -n1)

# 模拟按下F11键使窗口全屏
xdotool windowactivate $WINDOW_ID key F11