如何在Ubuntu 20.04的kiosk模式下仅运行自研的PySide6 GUI触控应用
如何在Ubuntu 20.04的kiosk模式下仅运行自研的PySide6 GUI触控应用
我来帮你一步步搞定这个需求!要在Ubuntu 20.04上把你的PySide6 GUI做成独占的触控kiosk应用,核心就是让系统启动后直接进入你的应用,完全屏蔽桌面环境的其他元素,下面分步骤给你讲清楚:
第一步:把PySide6应用打包成独立可执行文件(推荐)
先打包成独立文件能避免依赖问题,不用在kiosk环境里装一堆Python库,更稳定。用PyInstaller就行:
- 先安装PyInstaller:
pip install pyinstaller - 打包命令(根据你的脚本和资源调整):
pyinstaller --onefile --windowed --name my_kiosk_app your_pyside_script.py--windowed:去掉控制台窗口,适合GUI应用- 如果有图标、图片这类资源,要加上
--add-data参数(Ubuntu下用冒号分隔路径):pyinstaller --onefile --windowed --name my_kiosk_app --add-data "assets/*:assets/" your_pyside_script.py
dist/目录里,记住它的绝对路径(比如/home/kiosk/dist/my_kiosk_app)。
第二步:创建专用kiosk用户并配置自动登录
用专门的用户来运行kiosk应用,既安全又能隔离系统配置:
- 创建用户:
sudo useradd -m kiosk -s /bin/bash sudo passwd kiosk - 安装轻量窗口管理器Openbox(不用臃肿的GNOME,适合kiosk场景):
sudo apt install openbox - 切换到LightDM显示管理器(比GDM更适合配置kiosk):
安装时会弹出选择框,选sudo apt install lightdmlightdm作为默认显示管理器。 - 配置LightDM自动登录kiosk用户:
编辑/etc/lightdm/lightdm.conf,添加或修改以下内容:[Seat:*] autologin-user=kiosk autologin-user-timeout=0 user-session=openbox
第三步:配置Openbox自动启动你的应用并屏蔽系统元素
- 为kiosk用户创建Openbox配置目录:
sudo -u kiosk mkdir -p ~/.config/openbox - 编辑自动启动脚本
~/.config/openbox/autostart,添加以下内容:# 禁用屏幕休眠、锁屏和屏幕保护 xset s off xset -dpms xset s noblank # 隐藏鼠标光标(触控屏不需要的话开启) unclutter -idle 0.5 -root & # 启动你的kiosk应用(替换成你打包后的绝对路径) /home/kiosk/dist/my_kiosk_app & - 修改Openbox配置,让应用全屏且无窗口边框:
编辑~/.config/openbox/rc.xml,找到<applications>节点,添加以下内容:<application class="*"> <decor>no</decor> <!-- 去掉窗口边框 --> <maximized>true</maximized> <!-- 强制全屏 --> </application> - 禁用系统快捷键(防止用户跳出应用):
还是在rc.xml里,找到<keyboard>节点,删除所有<keybind>条目,或者直接注释掉整个键盘快捷键配置,这样Alt+Tab、Ctrl+Alt+Delete这类快捷键就失效了。
第四步:确保应用崩溃后自动重启
用systemd做守护,就算应用意外崩溃也能自动重启:
- 创建systemd服务文件
/etc/systemd/system/kiosk-app.service:[Unit] Description=PySide6 Kiosk Application After=graphical.target [Service] User=kiosk ExecStart=/home/kiosk/dist/my_kiosk_app Restart=always RestartSec=5 Environment=DISPLAY=:0 [Install] WantedBy=graphical.target - 启用并启动服务:
sudo systemctl enable kiosk-app.service sudo systemctl start kiosk-app.service
第五步:触控屏优化
- 校准触控屏:安装校准工具
xinput-calibrator:
运行sudo apt install xinput-calibratorxinput_calibrator,按照提示完成校准,生成的配置会自动保存到/etc/X11/xorg.conf.d/99-calibration.conf。 - 禁用鼠标模拟(如果触控屏同时生成鼠标事件导致冲突):
先查看触控设备ID:xinput list,找到你的触控屏设备,然后禁用它的鼠标模拟:
把这条命令加到Openbox的xinput disable <设备ID>autostart脚本里,每次启动自动执行。
最后重启系统,测试一下:系统会自动登录kiosk用户,全屏启动你的PySide6应用,所有系统快捷键、右键菜单都被屏蔽,就算应用崩溃也会自动重启,完全实现独占的kiosk模式!
备注:内容来源于stack exchange,提问作者shonb
相关产品推荐
相关产品推荐

