linux 在树莓派上自动启动kivy gui

mrwjdhj3  于 2022-11-28  发布在  Linux
关注(0)|答案(1)|浏览(583)

我试图有一个kivy GUI,它在raspberry pi 4上运行headless raspbian(安装了窗口管理器)后自动启动。为此,我在 /etc/rc.local 中添加了以下行:

su -c /home/pi/dummyfolder/run_gui pi

调用的脚本为

#!/bin/bash
# this stops the sleeping screen
killall light-locker
# set display - allows execution over ssh
export DISPLAY=:0
python3 /home/pi/dummyfolder/gui.py -a &

当我重新启动我的raspberry pi时,我看不到GUI。查看journalctl的输出,我可以验证我的脚本是否正在运行。
当我手动运行shell脚本时,会显示GUI。当我直接运行rc. local时也是如此。因此,我假设启动序列中存在问题,即显示脚本所需的服务尚未运行。
有人知道问题出在哪里吗?或者 Boot 序列假设是否正确?
编辑:有人建议在raspy-config中设置wait-for-network。但是,我不能这样做,因为GUI必须在没有网络的情况下运行。

yebdmbv4

yebdmbv41#

我做了一些类似的事情,除了我不运行窗口管理器。Kivy应用程序占据了整个屏幕。我使用~/.bashrc文件,并把我想要的放在最后。最简单的是在.bashrc文件的最后启动应用程序,但有一些额外的东西,使它更好。您可以将python命令放到一个单独的脚本文件中,此外,这段代码会注意到您是否使用了ssh,以便在您登录进行维护时,它不会“不要在终端会话启动时运行kivy应用程序。
在下面的示例中,my_fun是启动python/kivy应用程序的脚本

# at the end of ~/.bashrc
if [[ $SESSION_TYPE == "remote/ssh" ]]; then

    is_running=$(pgrep -l python)
    # echo "${is_running}"
    if [ -n "$is_running" ]; then
       echo -e "\n\n\033[01;31m============================================"
       echo "----- WARNING a Python Process is running ---------"
       echo -e "================================================\033[0m\n\n"
    fi
    echo -e "this is a remote session so the menu will not be presented"
    return 1

else
    echo -e "pause some seconds to wait for network interfaces..."
    sleep 12s
    ifconfig | grep netmask
    sleep 1s
    echo "direct console session"
    my_fun
fi

相关问题