如何在 Ubuntu 22.04 中安装和使用最新的 ydotool(在 Wayland 上运行的键盘自动化工具)?

如何在 Ubuntu 22.04 中安装和使用最新的 ydotool(在 Wayland 上运行的键盘自动化工具)?

有价值的键盘自动化工具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 提供的软件包发生名称冲突。

n3.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

ydotool4.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”。

相关内容