1 个不稳定版本
| 0.2.1 | 2023年11月23日 | 
|---|
#1950 在 命令行工具 中
41KB
783 行
kdotool - KDE Wayland 的 xdotool 克隆
简介
出于安全考虑,Wayland 删除了大部分 xdotool 使用来模拟用户输入和控制窗口的 X11 API。 ydotool 通过直接与内核输入设备通信解决了输入部分。然而,对于窗口控制部分,您必须使用每个 Wayland 合成器的自有 API。
此程序使用 KWin 的脚本 API 来控制窗口。在每次调用中,它都会动态生成一个 KWin 脚本,将其加载到 KWin 中,运行它,然后通过 KWin 的 D-Bus 接口将其删除。
此程序应与 KDE 5 和即将到来的 KDE 6 兼容。它应与 Wayland 和 X11 会话兼容。(但您仍然可以在 X11 中使用原始的 xdotool。所以这主要是为 Wayland 而设计的。)
并非所有 xdotool 命令都受支持。一些命令无法通过 KWin API 获取。一些可能甚至在 Wayland 中也不可能。有关详细信息,请参阅下文。
请参阅 xdotool 文档 了解每个命令的用法。
请注意,此程序使用的 窗口 ID 是 KWin 的内部窗口 ID,看起来像 UUID(例如 {04add7fb-72b8-4e58-8ac1-5e22730b907b})。它不是 X11 窗口 ID。
全局选项
- --help显示帮助。
- --version显示版本。
xdotool 中未提供的选项
- --dry-run只打印生成的 KWin 脚本。不要运行它。
- --debug打印调试消息。
- --shortcut _shortcut_指定要运行的生成的 KWin 脚本的快捷键。快捷键必须采用- modifier+key格式,例如- Alt+Shift+X。快捷键将在 KWin 中注册。脚本不会立即运行。您必须按快捷键才能运行它。- --name _name_为快捷键指定名称,这样您就可以稍后使用- --remove删除它。此选项仅在- --shortcut下有效。
 
- --remove _name_删除之前注册的快捷键。
不在 xdotool 中的新命令
以下命令可用于链式命令中
- savewindowstack _name_将当前窗口堆栈保存到变量
- loadwindowstack _name_加载先前保存的窗口堆栈
支持的 xdotool 命令
窗口查询
这些命令生成一个窗口堆栈,后续的 窗口动作 命令可以引用它。
- search- 缺失- --maxdepth
- --onlyvisible
- --sync
 
- 注意- --screen(仅限 KDE 5)
 
 
- 缺失
- getactivewindow
窗口动作
这些命令要么带有一个窗口-id 参数,要么使用窗口堆栈。
- getwindowname
- getwindowclassname
- getwindowpid
- getwindowgeometry- 缺失: --shell
- 注意: 仅在 KDE 5 中显示屏幕编号
 
- 缺失: 
- windowsize- 缺失- --usehints
- --sync
 
 
- 缺失
- windowmove- 缺失- --sync
 
 
- 缺失
- windowminimize- 缺失: --sync
 
- 缺失: 
- windowraise(仅限 KDE 6)- 使用 windowactivate替代吗?
 
- 使用 
- windowactivate- 缺失: --sync
 
- 缺失: 
- windowclose
- set_desktop_for_window
- get_desktop_for_window
- windowstate- 支持的属性- above
- below
- skip_taskbar
- skip_pager
- fullscreen
- shaded
- demands_attention
 
- 缺失- modal
- sticky
- hidden
- maximized_vert
- maximized_horz
 
 
- 支持的属性
全局动作
这些动作不是针对特定窗口,而是针对整个桌面。
- set_desktop
- get_desktop
- set_num_desktops(仅限 KDE 5)
- get_num_desktops
不支持
您可以使用 ydotool、dotool、wtype 等工具进行这些操作
- 键盘命令
- 鼠标命令
KWin 没有这样的功能
- set_desktop_viewport
- get_desktop_viewport
X11 特定
- windowreparent
- windowmap
- windowunmap
不清楚我们是否可以支持
- 行为窗口动作命令
- exec
- sleep
- 脚本
KWin 有这样的功能,但没有公开到 js API
- selectwindow
- windowlower
- windowquit
- windowkill
- getwindowfocus: 使用- getactivewindow替代吗?
- windowfocus: 使用- windowactivate替代吗?
- set_window
故障排除
如果任何操作无法正常工作,您可以使用 --debug 选项重新运行该命令。它将打印生成的 KWin 脚本,以及 KWin 脚本的输出。如果您认为这是一个错误,请创建一个 GitHub 上的问题。
依赖关系
~14-25MB
~397K SLoC