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

답변:


16

cron에서 gsettings 편집; 누락 된 환경 변수

자신의 환경 (예 : 터미널 창 또는 시작 응용 프로그램)에서 스크립트를 실행하면 여러 환경 변수가 설정됩니다. cron그러나 제한된 환경 변수 세트로 스크립트를 실행합니다.

gsettings에서 성공적으로 편집하려면 환경 변수 cron를 설정해야 DBUS_SESSION_BUS_ADDRESS합니다. 여기 (아래)에 설명 된대로 스크립트에 두 줄을 추가하면 됩니다.

필요한 변수 설정을 포함한 스크립트

환경 변수 를 포함하도록 편집 된 here 의 스크립트 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 실행


@Shaun 천만에요! 다행이다 :)
Jacob Vlijm

1
민트에 계피로 이것을 시도하고 있습니다. cli에서 직접 실행하면 "dconf-WARNING * : dconf에 대한 변경 사항을 커밋하지 못했습니다 : 지정된 주소가 비어 있습니다"라는 메시지가 나타납니다. PID 및 DBUS_SESSION_없이 (cli에서) 이전에 작동했습니다 . (그러나 cron이 아닙니다)
donquixote

1
@donquixote 시도해보십시오 PID=$(pgrep -f 'gnome-session' | head -n1)!
Jānis Elmeris

당신은 대체 할 수 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)GREP이 너무 변수의 이름을 가져옵니다입니다. 출처
wjandrea

1
pgrep gnome-session여러 사용자가 시스템에 로그인 한 경우 각 gnome-session을 실행하는 경우 둘 이상의 pid를 반환 할 수 있습니다. 아마도 EUID=$(id --real --user)PID=$(pgrep --euid $EUID gnome-session)현재 사용자의 그놈 세션과 관련된에만 PID를 얻을 수있는 방법이 될 것입니다.
unutbu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.