cronのgsettingsを使用して背景が変更されない


11

Indrajith Indraprasthamの推奨スクリプトを使用して壁紙をランダムな画像に変更しようとしています。Unityの コマンドラインからデスクトップの背景を変更する方法は?

ターミナルウィンドウからスクリプトを実行すると、bgは正常に変更されますが、cronから実行すると、次のエラーがメールで送信されます。

(プロセス:21901):dconf-WARNING **:dconfへの変更をコミットできませんでした:コマンドライン 'dbus-launch --autolaunch = 00216c114dcf433c9bb9009985d607d6 --binary-syntax --close-stderr'の生成中にエラーが発生しました:子プロセスがコード1で終了しました

私はどんな提案にも感謝します。


1
@Merriは、そこにある回答がOPの問題を解決しない(ちなみにそれはだまされない)という事実は別として、これはどのようにだまされますか???? 同じエラーが同じ質問であることを意味するものではありません。
Jacob Vlijm 2016年

回答:


16

cronからgsettingsを編集する; 環境変数がありません

自分の環境(ターミナルウィンドウやスタートアップアプリケーションなど)からスクリプトを実行すると、いくつかの環境変数が設定されます。cronただし、限られた環境変数のセットでスクリプトを実行します。

gsettingsから正常に編集cronするには、DBUS_SESSION_BUS_ADDRESS環境変数を設定する必要があります。あなたは説明するように、スクリプトに2行を追加することによってそれを行うことができ、ここで(および下記)。

必要な変数の設定を含むスクリプト

ここからのスクリプトは、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"

関連:5分ごとに.shを実行する


@ショーンどういたしまして!うれしいです:)
Jacob Vlijm 2016年

1
私はミントのシナモンでこれを試しています。これを直接cliから実行すると、「dconf-WARNING *:変更をdconfにコミットできませんでした:指定されたアドレスが空です」というメッセージが表示されます。以前は(cliから)PIDとDBUS_SESSION_なしで機能していました。(ただしcronからではありません)
donquixote

1
@donquixoteお試しくださいPID=$(pgrep -f 'gnome-session' | head -n1)
ジャニスElmeris

grepは変数名も取得するためDBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)、次のように置き換えることができ$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)ます。ソース
wjandrea 2017年

1
pgrep gnome-session複数のユーザーがシステムにログインしている場合(それぞれがgnome-sessionを実行している場合)、複数のPIDを返すことがあります。おそらく、EUID=$(id --real --user)およびPID=$(pgrep --euid $EUID gnome-session)現在のユーザーのGNOMEセッションに関連付けられている唯一のPIDを取得するための方法だろう。
unutbu 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.