使用 cron 中的 gsettings 不会改变背景

Sha*_*aun 13 gnome cron environment-variables gsettings

我正在尝试使用 Indrajith Indraprastham 建议的脚本将我的墙纸更改为随机图像: How to change desktop background from command line in Unity?

当我从终端窗口运行脚本时,bg 改变得很好,但是当它从 cron 运行时,我收到了这个错误:

(进程:21901):dconf-警告**:未能提交对 dconf 的更改:错误生成命令行“dbus-launch --autolaunch=00216c114dcf433c9bb9009985d607d6 --binary-syntax --close-stderr”:子进程退出,代码为 1

我将不胜感激任何建议。

Jac*_*ijm 18

从 cron 编辑 gsettings;缺少环境变量

如果您从自己的环境(例如从终端窗口或从启动应用程序)运行脚本,将设置许多环境变量。cron但是,使用一组有限的环境变量运行您的脚本。

要从gsettings成功编辑cron,您需要设置DBUS_SESSION_BUS_ADDRESS环境变量。您可以通过在脚本中添加两行来实现,如此(和下文所述)。

您的脚本,包括设置所需的变量

此处的脚本经过编辑以包含DBUS_SESSION_BUS_ADDRESS环境变量,然后变为:

#!/bin/bash

PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)

DIR="/home/indra/Pictures/wallpapers"
PIC=$(ls $DIR/* | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$PIC"
Run Code Online (Sandbox Code Playgroud)

相关:每 5 分钟运行一次 .sh

  • @donquixote 试试`PID=$(pgrep -f 'gnome-session' | head -n1)`! (4认同)
  • 我正在尝试用薄荷上的肉桂来做这个。当我直接从 cli 运行它时,我得到“dconf-WARNING **:未能提交对 dconf 的更改:给定的地址为空”。它以前工作过(来自 cli),没有 PID 和 DBUS_SESSION_*。(但不是来自 cron) (2认同)
  • 如果多个用户登录到系统(每个运行 gnome-session),`pgrep gnome-session` 可能会返回多个 pid。也许 `EUID=$(id --real --user)` 和 `PID=$(pgrep --euid $EUID gnome-session)` 将是一种仅获取与当前用户的 gnome 会话相关联的 PID 的方法。 (2认同)

归档时间:

查看次数:

5838 次

最近记录:

8 年,7 月 前