有价值的键盘自动化工具xdotool
在 Wayland 上不起作用。一个模仿 xdotool 部分功能的新工具,但在 Xorg 和 Wayland 中都可以使用,它是ydotool。
ydotool
在 Ubuntu 软件中心可用,版本为 0.1.8-3。同时,该工具已“重构”,即已完全重写,没有外部依赖项,占用的内存少得多,并且没有动态内存分配。因此强烈建议使用最新版本。
github 上只提供了源代码,没有关于如何构建代码和安装工具的说明。我们如何安装ydotool 1.0.1。在 Ubuntu 上?
答案1
随着 Wayland 的出现,xdotool
为 Xorg 设计的自动化实用程序(例如)不再起作用。ydotool
是一个独立于显示管理器运行的键盘自动化工具,即它可以在 Wayland 和 Xorg 上运行。
以下是我在 Ubuntu 22.04 上测试的安装说明。鸣谢这里有关使用 cmake 的编译说明。
1. 先决条件
1.1 确保您拥有编译所需的必要工具。
# Needed for compilation
sudo apt install cmake scdoc pkg-config
1.2 在基于 Debian 的发行版中,checkinstall
可用于将编译后的代码打包成文件,.deb
而不是将编译后的文件直接移动到系统目录中。这样,自定义编译的程序在包管理系统中是已知的,并且可以根据需要轻松再次删除。
# For generating an installable .deb file
sudo apt install checkinstall
1.3 可选:安装git
以从 git 克隆。或者,您可以.zip
从 github 页面下载并解压文件。
# Optional: git to clone the repository instead of downloading zip
sudo apt install git
2.下载并编译
2.1 使用工具下载源代码git
。
git clone https://github.com/ReimuNotMoe/ydotool
或者,从 github 页面下载并解压 zip 文件
2.2 编译
cd ydotool ## This will be `ydotool-master` if you extracted the zip file
mkdir build && cd build
cmake ..
make -j `nproc`
3.安装
不同于传统的sudo make install
将编译后的文件安装到系统目录中的方法,checkinstall
可以在基于 Debian 的系统上使用。checkinstall
创建一个.deb
文件,然后可以使用 APT 包管理器进行安装。因此,包管理系统知道该包,并且可以使用包管理器轻松地再次删除该包。
3.1 启动工具
sudo checkinstall --fstrans=no
3.2 接受提示中的默认答案
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]:
3.3 输入包的描述
Please write a description for the package.
End your description with an empty line or EOF.
>>
例如:Keyboard automation utility - custom install
3.4 将包的名称更改为更有意义的名称:在提示上
This package will be built according to these values:
回车2
将软件包名称更改为例如ydotool-custom
。这样,以后将很容易识别该软件包,并且不会与 Ubuntu 提供的软件包发生名称冲突。
n
3.5 再次接受提示中的默认答案
Some of the files created by the installation are inside the home directory: /home
You probably don't want them to be included in the package.
Do you want me to list them? [n]:
3.6 然而,回答y
下一个问题
Should I exclude them from the package? (Saying yes is a good idea) [n]:
尽管回答no
并保留这些文件可能根本不会有任何坏处。
此后,将.deb
创建并自动安装。稍后可以使用命令重新安装sudo apt install <path-to-debfile>
。
4.配置
4.1ydotool
必须以 root 身份运行。可能有更多现代方法允许用户在不使用 的情况下启动实用程序sudo
,但老办法是suid
在可执行文件上设置位。
# Set the suid bit so ydotool can be run by any user
sudo chmod +s $(which ydotool)
4.2 使用该应用程序,将安装 systemd 服务。启用并安装它:
# Have the the newly installed service recognized, enabled and started
sudo systemctl daemon-reload
sudo systemctl enable ydotoold
sudo systemctl start ydotoold
ydotool
4.3 守护进程需要通过进行通信的套接字/tmp/.ydotool_socket
。以用户身份运行时,ydotool
会查找/run/user/<uid>/.ydotool_socket
。可以建立指向 的符号链接/tmp/.ydotool_socket
。或者,您可以设置变量YDOTOOL_SOCKET
来指示要使用的套接字。
~/.profile
在文本编辑器中打开添加行
export YDOTOOL_SOCKET=/tmp/.ydotool_socket
5. 测试是否有效
5.1 注销然后重新登录以使环境变量生效。
5.2 打开终端并使用以下命令进行测试:
ydotool type Ubuntu
在提示符再次出现之前,应该输入字母“Ubuntu”。