我的显示桌面图标/脚本在默认的 Ubuntu 22.04 安装中不起作用,因为它依赖于xdotool
按下WindowsD,而xdotool
在 Wayland 中不起作用,并且 Ubuntu 22.04 默认启用的是 Wayland 窗口管理器,而不是 X11。那么,我可以使用什么工具来代替?注意:我知道如何现在切换回 X11 窗口管理器,但这不是我的问题。我想要一个可以在 Wayland 中按下按键的工具。
我也在尝试 Python 的pynput
库,但也无法让它工作。请看我的尝试:Stack Overflow:在 Python 中按 Windows + D 键时 pynput 库无法按预期工作。
无论如何,对于这个问题我只想要一个可以替代并在 Wayland 中工作的工具xdotool
,以及一个按下即可WindowsD显示桌面的演示。
注意:如果你也像我一样在 Wayland 中遇到了错误,我有一些修复方法,并展示了如何在 Ubuntu 22.04 中切换回 X11在我的另一个回答中。
答案1
我明白了。非常感谢@Rinzwind 指出了 的存在ydotool
!
以下是如何按下ydotool
+ Windows。D它在 X11 和和韦兰!
我首先在我的网站上写了这篇文章:教程:开始使用 ydotool 在 Linux 中自动执行按键(或鼠标移动)。
有关详细信息,请参阅我的文章。以下是关键部分,直接从我上面的文章中复制而来:
首先,构建并安装它:
# install dependencies
sudo apt update
sudo apt install git cmake scdoc
# build ydotool
# See: https://github.com/ReimuNotMoe/ydotool#build
git clone https://github.com/ReimuNotMoe/ydotool.git
cd ydotool
mkdir build
cd build
cmake .. # takes < 1 second
time make -j "$(nproc)" # takes < 1 second
sudo make install
# Note: the install command installs here:
#
# -- Install configuration: ""
# -- Installing: /usr/local/bin/ydotoold
# -- Installing: /usr/local/bin/ydotool
# -- Installing: /usr/lib/systemd/user/ydotool.service
# -- Installing: /usr/local/share/man/man1/ydotool.1
# -- Installing: /usr/local/share/man/man8/ydotoold.8
# See the man pages for help, and to prove to yourself it is installed
man ydotool # for the main program
man ydotoold # for the background daemon process
# help menu
ydotool -h # for the main program
ydotoold -h # for the background daemon process [VERY HELPFUL MENU!]
# check the version; my output is `v1.0.4-0-g57ba7d0`
ydotoold --version
现在,使用它:ydotool
按Windows+D
# 1. start the `ydotoold` background daemon (`sudo -b` runs it in the
# background; see `sudo -h`).
# - It takes a couple seconds to fully start up and print "READY". Once it does
# that, hit Enter a couple times to clear out the command line.
sudo -b ydotoold --socket-path="$HOME/.ydotool_socket" --socket-own="$(id -u):$(id -g)"
# 2. Use `ydotool`
# - Have ydotool press Windows + D once to hide all windows, then make it wait 2
# seconds, then have it press Windows + D again to show all windows:
YDOTOOL_SOCKET="$HOME/.ydotool_socket" ydotool key 125:1 32:1 32:0 125:0; \
sleep 2; \
YDOTOOL_SOCKET="$HOME/.ydotool_socket" ydotool key 125:1 32:1 32:0 125:0
# 3. Additional commands you may need: to show, kill, and help
# See the `ydotoold` background running processes
ps auxf | grep ydotoold
# Kill the `ydotoold` background running processes
sudo pkill ydotoold
# View the `ydotool` main help menu, including a list of all sub-commands.
ydotool -h
# View the `ydotool` sub-command help menus.
# - Bug ( https://github.com/ReimuNotMoe/ydotool/issues/206 ): the daemon *must*
# be running first to see these help menus!
YDOTOOL_SOCKET="$HOME/.ydotool_socket" ydotool key -h
YDOTOOL_SOCKET="$HOME/.ydotool_socket" ydotool click -h
YDOTOOL_SOCKET="$HOME/.ydotool_socket" ydotool mousemove -h
# etc.
# Open the Linux C header file containing all available key codes that `ydotool`
# can press
gedit /usr/include/linux/input-event-codes.h
您还可以在线查看此文件中所有可能的密钥代码:https://github.com/torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h。
再次强调,欲了解更多详情,请访问我的网站:教程:开始使用 ydotool 在 Linux 中自动执行按键(或鼠标移动)。
也可以看看
- 如何将“显示桌面”添加到 GNOME dash 或 Ubuntu Dock?
- @AndAC 的精彩
wmctrl
回答 wmctrl
我对答案的看法,依赖于我的包含脚本的 eRCaGuy_dotfiles repo。
- @AndAC 的精彩
- 问答:如何在 Ubuntu 22.04 中安装最新的 ydotool 1.0.1(在 Wayland 上运行的键盘自动化工具)?