我开发了一个应用程序,让用户可以在屏幕上查看特定时间。我正在使用 pygames 库,并且在用户运行 .py 文件后 GUI 是全屏的。
我想要一个解决方案,以便用户不需要运行文件,而是在登录完成后文件自行执行。
我开发了一个应用程序,让用户可以在屏幕上查看特定时间。我正在使用 pygames 库,并且在用户运行 .py 文件后 GUI 是全屏的。
我想要一个解决方案,以便用户不需要运行文件,而是在登录完成后文件自行执行。
将脚本添加到/etc/rc.local
文件中。
在 Raspberry Pi 上,/etc/rc.local
使用文本编辑器打开。我使用 Vim 和sudo
命令。
打开文件后,您将看到如下内容:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
# Add your script here
/home/pi/somescript.sh
exit 0
将路径添加到脚本后,文件将在重新启动时执行。如果您想在登录时运行,请执行相同的操作,但.bashrc
改为编辑您的文件。
TLDR:使用autostart
目录。
为自动启动创建一个新条目...
cd /home/pi/.config/autostart/
sudo vim miner.desktop
在miner.desktop
中,我添加了我想在用户登录后启动时运行的命令。如果您不确定格式,通常该文件夹中已经有一个示例(对我来说,它是LXinput-setup.desktop
),您可以使用它如果需要,作为模板。
[Desktop Entry]
Type=Application
Name=Miner (or whatever you want to call it)
Comment=MINE! (or whatever comment you want to add)
Exec=lxterminal --working-directory=/home/pi/Documents/miner/ -e ./start_moonlander2.sh
NotShowIn=GNOME;KDE;XFCE
可以想象, 的值Exec
是实际执行的值。让我们分解这个命令......
lxterminal --working-directory=/home/pi/Documents/miner/ -e ./start_moonlander2.sh
lxterminal
:为终端窗口启动新进程的应用程序。--working-directory=/home/pi/Documents/miner/
:设置执行的工作目录。如果您的脚本使用本地文件(即,如果它的应用程序资产位于等),这将非常重要。/pi/Documents/miner/
-e ./start_moonlander2.sh
:这是在先前指示的工作目录中运行的命令。我正在执行一个sh
使用工作目录中的资产的本地脚本。想知道你半途而废吗?如果您在新的终端窗口中运行,您的 lxterminal 命令应该自行运行。这将导致一个新的终端窗口弹出并运行您的命令。如果它崩溃了,那么它不太可能用新的 正确启动[DeskTop Entry]
,你需要先让它工作。