You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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应用,既安全又能隔离系统配置:

  1. 创建用户:
    sudo useradd -m kiosk -s /bin/bash
    sudo passwd kiosk
    
  2. 安装轻量窗口管理器Openbox(不用臃肿的GNOME,适合kiosk场景):
    sudo apt install openbox
    
  3. 切换到LightDM显示管理器(比GDM更适合配置kiosk):
    sudo apt install lightdm
    
    安装时会弹出选择框,选lightdm作为默认显示管理器。
  4. 配置LightDM自动登录kiosk用户:
    编辑/etc/lightdm/lightdm.conf,添加或修改以下内容:
    [Seat:*]
    autologin-user=kiosk
    autologin-user-timeout=0
    user-session=openbox
    

第三步:配置Openbox自动启动你的应用并屏蔽系统元素

  1. 为kiosk用户创建Openbox配置目录:
    sudo -u kiosk mkdir -p ~/.config/openbox
    
  2. 编辑自动启动脚本~/.config/openbox/autostart,添加以下内容:
    # 禁用屏幕休眠、锁屏和屏幕保护
    xset s off
    xset -dpms
    xset s noblank
    
    # 隐藏鼠标光标(触控屏不需要的话开启)
    unclutter -idle 0.5 -root &
    
    # 启动你的kiosk应用(替换成你打包后的绝对路径)
    /home/kiosk/dist/my_kiosk_app &
    
  3. 修改Openbox配置,让应用全屏且无窗口边框:
    编辑~/.config/openbox/rc.xml,找到<applications>节点,添加以下内容:
    <application class="*">
      <decor>no</decor> <!-- 去掉窗口边框 -->
      <maximized>true</maximized> <!-- 强制全屏 -->
    </application>
    
  4. 禁用系统快捷键(防止用户跳出应用):
    还是在rc.xml里,找到<keyboard>节点,删除所有<keybind>条目,或者直接注释掉整个键盘快捷键配置,这样Alt+Tab、Ctrl+Alt+Delete这类快捷键就失效了。

第四步:确保应用崩溃后自动重启

用systemd做守护,就算应用意外崩溃也能自动重启:

  1. 创建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
    
  2. 启用并启动服务:
    sudo systemctl enable kiosk-app.service
    sudo systemctl start kiosk-app.service
    

第五步:触控屏优化

  1. 校准触控屏:安装校准工具xinput-calibrator:
    sudo apt install xinput-calibrator
    
    运行xinput_calibrator,按照提示完成校准,生成的配置会自动保存到/etc/X11/xorg.conf.d/99-calibration.conf。
  2. 禁用鼠标模拟(如果触控屏同时生成鼠标事件导致冲突):
    先查看触控设备ID:xinput list,找到你的触控屏设备,然后禁用它的鼠标模拟:
    xinput disable <设备ID>
    
    把这条命令加到Openbox的autostart脚本里,每次启动自动执行。

最后重启系统,测试一下:系统会自动登录kiosk用户,全屏启动你的PySide6应用,所有系统快捷键、右键菜单都被屏蔽,就算应用崩溃也会自动重启,完全实现独占的kiosk模式!

备注:内容来源于stack exchange,提问作者shonb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:08:08