【问题标题】:Pcmanfm set wallpaper fails on Raspbian stretch in cronPcmanfm 设置墙纸在 cron 中的 Raspbian 拉伸上失败
【发布时间】:2017-08-25 01:30:30
【问题描述】:

我正在使用桌面运行几乎全新的 Raspbian Stretch 4.9 图像,并且有一个程序每隔几分钟就会为计算机背景创建一个新图像。

我正在尝试创建一个 cron 作业以使用 pcmanfm 正确更新背景,并按照 here 的建议创建了以下名为 update.sh 的脚本来设置背景:

!#/bin/bash
export DISPLAY=:0
export XAUTHORITY=/home/pi/.Xauthority
pcmanfm -w '/home/pi/folder/image.png'

脚本是可执行的,当它从终端运行时,它会按预期运行。我已经创建了一个 crontab 来让它自动运行:

* * * * * /home/pi/folder/update.sh > /home/pi/folder/log.txt 2>&1

当 cron 作业每分钟触发一次时,会出现一个弹出窗口,并显示错误消息“桌面管理器未处于活动状态”。使用“确定”按钮将其关闭,日志文件显示:

** Message: x-terminal-emulator has very limited support, consider choose another terminal

我已经在crontab中直接尝试过该命令

* * * * * DISPLAY=:0 && pcmanfm -w '/home/pi/folder/image.png' > /home/pi/folder/log.txt 2>&1

而且这次的错误不一样

Cannot open display:

我不完全确定这样做有什么意义,尽管环顾四周,似乎 cron 工作可能很困难。我不确定这是否是路径或环境问题,因为我不知道有关这些事情的很多细节,但我认为这不是问题,因为我使用的是图像和脚本的完整路径。这不应该是权限错误,因为我在用户 crontab 和系统 crontab 上都尝试过,但都失败了。 (此外,默认情况下,默认的 pi 用户默认具有 root 权限。)我不确定还要搜索或尝试什么,所以如果有人能指出我正确的方向或以前遇到过这个问题,我会寻求帮助。

【问题讨论】:

  • 昨晚在我的笔记本电脑上运行更新(包括更新 pcmanfm)后,我执行相同操作的脚本停止工作。我猜 cron 启动的脚本没有在与图形登录用户相同的“用户空间”中运行,因此有些环境变量设置不正确。不幸的是,我不是专业的 linux 用户,但如果我找到解决方案,我会继续挖掘并回帖。 TLDR:我认为最近的更新打破了它。

标签: cron raspbian wallpaper stretch pcmanfm


【解决方案1】:

我遇到了完全相同的问题,只是我运行的是 Lubuntu 17.04。它是在最近一次更新后最近出现的,但无法确定何时出现。经过大量研究后,我开始怀疑其中一个 XDG 环境变量也必须导出。经过反复试验,我发现导出 XDG_RUNTIME_DIR 为我解决了这个问题。您可能想尝试一下。

计算价值运行:echo $XDG_RUNTIME_DIR

为我从 cron 运行的工作墙纸更换器现在看起来像:

#!/bin/bash
...
export DISPLAY=:0
export XAUTHORITY=/home/krisz/.Xauthority
export XDG_RUNTIME_DIR=/run/user/1000
pcmanfm --set-wallpaper=${dir}/${file} --wallpaper-mode=crop
...

【讨论】:

  • 感谢为我工作!!!! Bulleyes 操作系统(Debian 11)
猜你喜欢
  • 1970-01-01
  • 2018-10-30
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多