我有一个运行 X 服务器的信息亭系统,托管不同的图形程序。所有程序都是相互排斥的,因为它们的 systemd 单元冲突。在其中一些程序中,我想使用本机 X11 游标,例如tcross。我可以通过 将它设置在相应应用程序的 systemd 单元中xsetroot
。是否也可以在不重新启动 X 服务器的情况下xsetroot
使用或其他工具隐藏光标?
我已经排除的选项:
-nocursor
X 服务器的参数 - 这会在其整个运行时禁用所有应用程序的游标unclutter
- 我希望光标在整个运行时隐藏在相应的应用程序上,而不仅仅是在它没有移动时。
[Unit]
Description=Plain X.org server
After=plymouth-quit-wait.service
[email protected] display-manager.service
[Service]
Type=simple
Environment=DISPLAY=:0
ExecStart=/usr/bin/Xorg vt7 -nolisten tcp -noreset -nocursor
# Wait for server to be ready and set kiosk configuration.
ExecStartPost=/usr/bin/kiosk
# Set chicken as cursor to be able to test touch screen
# and see whether X server is actually running.
ExecStartPost=/usr/bin/xsetroot -cursor_name tcross
Restart=on-failure
RestartSec=3
[Install]
WantedBy=graphical.target
如果您的 X11 服务器有 XFIXES 扩展名(参见参考资料
xdpyinfo
),您可以编写一个小的 C 程序来调用XFixesHideCursor()
根窗口以隐藏所有光标,直到程序结束。您可能需要安装一些 X11 开发包(例如libXfixes-devel
,但这取决于您的发行版)以获得包含文件/usr/include/X11/extensions/Xfixes.h
. 创建一个文件nocursor.c
来保存:并编译
gcc -o nocursor nocursor.c -lX11 -lXfixes
。./nocursor
在设置了合适的环境中运行DISPLAY
,并且在您中断程序之前不应出现光标。