Arka plan cron gsettings kullanarak değişmiyor


11

Indrajith Indraprastham'ın önerilen komut dosyası kullanarak duvar kağıdımı rastgele bir görüntüye değiştirmeye çalışıyorum: Unity'deki komut satırından masaüstü arka planını nasıl değiştirebilirim?

Komut dosyasını bir terminal penceresinden çalıştırdığımda, bg gayet iyi değişir, ancak cron'dan çalıştırıldığında, bu hatayı postaladım:

(işlem: 21901): dconf-UYARI **: dconf üzerinde değişiklikler yapılamadı: 'dbus-launch --autolaunch = 00216c114dcf433c9bb9009985d607d6 --binary-sözdizimi --close-stderr' hatası oluştu: Kod 1'den çıkış işlemi yapıldı

Herhangi bir öneri için teşekkür ederiz.


1
@Merri orada cevaplar OP sorunu çözmemesi gerçeği dışında (ki bu arada bir dupe yapmaz), Bu bir dupe nasıl olurdu ???? Aynı hata, aynı soru olduğu anlamına gelmez.
Jacob Vlijm

Yanıtlar:


16

Grontların crondan düzenlenmesi; ortam değişkeni eksik

Komut dosyasını kendi ortamınızdan çalıştırırsanız (örn. Bir terminal penceresinden veya Başlangıç ​​Uygulamalarından), bir dizi ortam değişkeni ayarlanır. cronancak betiğinizi sınırlı sayıda ortam değişkeni ile çalıştırır.

gsettingsBaşarılı bir şekilde düzenlemek croniçin DBUS_SESSION_BUS_ADDRESSortam değişkenini ayarlamanız gerekir . Bunu, betiğinize burada (ve aşağıda) açıklandığı gibi iki satır ekleyerek yapabilirsiniz .

Gerekli değişkenin ayarlanması dahil komut dosyanız

Ortam değişkenini içerecek şekilde düzenlenen komut dosyası buradanDBUS_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"

İlgili: .sh her 5 dakikada bir çalışıyor


@Shaun Hoşgeldiniz!
Çalıştığı

1
Bunu Tarçınlı Nane ile deniyorum. Bunu doğrudan clidan çalıştırdığımda, "dconf-UYARI *: dconf'ta değişiklikler yapılamadı: Verilen adres boş". Önceden (cli'dan), PID ve DBUS_SESSION_ olmadan çalışırdı . (Ama
crondan

1
@donquixote Deneyin PID=$(pgrep -f 'gnome-session' | head -n1)!
Jānis Elmeris

Sen yerini alabilir DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)ile $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)grep çok değişken adı alır beri. kaynak
wjandrea

1
pgrep gnome-sessionsistemde birden fazla kullanıcı oturum açarsa (her biri gnome-session çalıştıran) birden fazla pid döndürebilir. Belki EUID=$(id --real --user)ve PID=$(pgrep --euid $EUID gnome-session)geçerli kullanıcının gnome oturumu ile ilişkili tek PID almanın bir yolu olurdu.
unutbu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.