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

如何在树莓派开机时自动设置DISPLAY环境变量?

解决树莓派4开机自动运行feh显示图片的问题

方法1:修改Python脚本,直接指定环境变量

不用折腾系统级环境变量,直接在脚本里给feh传DISPLAY参数:

import subprocess
import os

# 复制当前环境变量并添加DISPLAY
env = os.environ.copy()
env["DISPLAY"] = ":0.0"

# 调用feh,注意把./test.jpg换成绝对路径,比如/home/pi/test.jpg
image = subprocess.Popen(
    ["feh", "--hide-pointer", "-x", "-q", "-B", "black", "-g", "1280x800", "/home/pi/test.jpg"],
    env=env
)

一定要用绝对路径指定图片,不然开机时脚本的工作目录可能不对,找不到图片。

方法2:桌面自启项(适合带桌面的系统)

树莓派默认桌面会加载用户的自启配置,操作步骤:

  • SSH连进树莓派,创建自启配置文件:
    nano /home/pi/.config/autostart/feh-image.desktop
    
  • 粘贴以下内容,把/home/pi/你的脚本路径.py换成实际的脚本绝对路径:
    [Desktop Entry]
    Type=Application
    Name=Feh Image Display
    Exec=/usr/bin/python3 /home/pi/你的脚本路径.py
    Hidden=false
    NoDisplay=false
    X-GNOME-Autostart-enabled=true
    
  • 按Ctrl+O保存,回车确认,再按Ctrl+X退出。
  • 确保树莓派开机自动登录pi用户:运行sudo raspi-config,选3 Interface Options -> S5 Boot / Auto Login,选B4 Desktop Autologin,重启后生效。

这种方式会在桌面启动时自动运行脚本,此时DISPLAY已经自动设为:0.0,不用额外设置。

方法3:systemd服务(适合无桌面或后台运行场景)

如果用的是无桌面系统,或者想用systemd管理服务:

  • 创建服务文件:
    sudo nano /etc/systemd/system/feh-display.service
    
  • 写入以下内容,替换/home/pi/你的脚本路径.py为实际路径:
    [Unit]
    Description=Feh Auto Display Image
    After=graphical.target
    
    [Service]
    User=pi
    Environment=DISPLAY=:0.0
    Environment=XAUTHORITY=/home/pi/.Xauthority
    ExecStart=/usr/bin/python3 /home/pi/你的脚本路径.py
    WorkingDirectory=/home/pi/
    Restart=always
    
    [Install]
    WantedBy=graphical.target
    
  • 启用并启动服务:
    sudo systemctl daemon-reload
    sudo systemctl enable feh-display.service
    sudo systemctl start feh-display.service
    

这里直接在服务里指定了DISPLAY和权限相关的环境变量,确保feh能正常访问显示。

关键注意事项

  • 所有路径必须用绝对路径,包括脚本、图片,避免开机时找不到文件。
  • 确保pi用户有脚本和图片的读写权限,必要时用chmod +x /home/pi/你的脚本路径.py给脚本加执行权限。

内容的提问来源于stack exchange,提问作者Dribbler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:07:21