我需要使用 xdotool 快速自动执行屏幕特定位置的某些点击。我可以使用以下脚本:
#! /bin/bash
sleep 0.5
xdotool click 200 150
sleep 0.5
xdotool click 200 175
sleep 0.5
xdotool click 1050 150
sleep 0.5
xdotool click 1350 450
sleep 0.5
xdotool click 1100 150
它可以正常工作。但是,xdotool
我使用的机器上没有安装,而且我没有 root 访问权限。我无法在本地安装它,因为X11/extensions/XTest.h
不存在库。我有什么选择?
答案1
您可以静态编译 xdotool 并将其复制到该机器。
或者,您可以复制动态链接的二进制文件并查看库是否解析。
答案2
如果我在 2017 年看到这个问题,我会敦促你寻找这XTest.h
,而不是其他途径。修复一些缺失的标题可能比这里建议的任何其他方法都容易,假设这是仅有的问题。
总结:sudo apt install libxtst-dev
然而,到 2024 年,Debian 和 Ubuntu(及其衍生产品)xdootool
应该可以在发行版存储库中使用。在 Ubuntu 中,您需要启用universe
存储库,许多发行版默认都会启用。
如果你必须出于某种原因,从源代码安装apt build-dep xdotool
将大有帮助。它会安装给定源包的所有构建时依赖项。唯一的缺点是包必须存在于 Debian/Ubuntu 存储库中才能build-dep
知道该做什么。
当某个软件包做存在于 Debian/Ubuntu 存储库中(即使是旧版本),这减轻了必须识别-dev
需要安装哪些标题(包)和其他库才能从源代码构建的负担。
$ apt-get --dry-run build-dep xdotool | grep Inst
Inst libllvm14 (1:14.0.0-1ubuntu1.1 Ubuntu:22.04/jammy-security, Ubuntu:22.04/jammy-updates [amd64])
[…snip…]
Inst openbox (3.6.1-10 Ubuntu:22.04/jammy [amd64])
Inst xserver-common [2:21.1.3-2ubuntu2.5] (2:21.1.4-2ubuntu1.7~22.04.5 Ubuntu:22.04/jammy-security, Ubuntu:22.04/jammy-updates [all])
Inst xterm (372-1ubuntu1 Ubuntu:22.04/jammy [amd64])
Inst xvfb (2:21.1.4-2ubuntu1.7~22.04.5 Ubuntu:22.04/jammy-security, Ubuntu:22.04/jammy-updates [amd64])
Inst dh-exec (0.23.4build2 Ubuntu:22.04/jammy [amd64])
事实上,你最终可能会得到一些其他的垃圾包——只是在测试和打包时才“需要”的包,比如openbox
通过dh-exev
但至少它减轻了猜测的负担。我想说在某些情况下您可以稍后使用以下命令卸载这些软件包:
apt-get --dry-run build-dep THE_PACKAGE_NAME \
| awk '$1=="Inst"{print $2}' \
| xargs sudo apt remove
...但对于特殊情况,我不建议盲目地这样做xdootool
,否则你会破坏你的系统。
假设我不知道apt build-dep
。人们总是可以使用apt-file
* 帮助找到包含缺失标头的包:
$ apt-file search XTest.h
libbcprov-java-doc: /usr/share/doc/libbcprov-java/api/org/bouncycastle/crypto/test/EAXTest.html
libbcprov-java-doc: /usr/share/doc/libbcprov-java/api/org/bouncycastle/jce/provider/test/PKIXTest.html
libjna-java-doc: /usr/share/doc/libjna-java/api/com/sun/jna/platform/unix/X11.XTest.html
libxtst-dev: /usr/include/X11/extensions/XTest.h
在这种情况下,答案是sudo apt install libxtst-dev
。
在刚刚安装的 elementary OS 7(基于 Ubuntu 22.04)上,我已经安装了build-essential
和elementary-sdk
,我可以毫无问题地克隆当前master
的jordansissel/xdotool从 GitHub 下载,并make
在源目录中运行。不过,您的里程可能会有所不同。
希望这对(某人)有帮助!
*期待此期这个问题但是,第一次尝试使用时,您可能只需要先apt-file search
运行一个额外的操作即可。sudo apt update
sudo apt-file update