Uzak kabuk ile Gsettings nasıl değiştirilir?

22

Kukla, sanal terminal veya ssh aracılığıyla masaüstü yapılandırmasını otomatikleştirmem gerekiyor.

Maalesef, gsettings 'sini ssh veya sanal uçbirim ile çağırmak:

gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"

(process:29520): dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY

$DISPLAY değerini export DISPLAY=:0.0 ile ayarladığımda başka bir hata veriyor:

(process:29862): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refused

Ne yapabilirim?

    
sordu Adam Ryczkowski 28.04.2014 15:33

3 cevap

22

Anahtar, DBUS_SESSION_BUS_ADDRESS ortam değişkenini belirlemektir.

Bu ileti dizisinde Aşağıdaki kodları buldum. Bu, bu değişkenin doğru değerini elde etmenize yardımcı olur. Dbus ayarlarını değiştirmek istediğimiz masaüstünde çalışan işlemin adını gerektirir. (Paralel olarak 1'den fazla çalışan grafiksel oturum olabilir). Haydi discover_session_bus_address.sh

#!/bin/bash

# Remember to run this script using the command "source ./filename.sh"

# Search these processes for the session variable 
# (they are run as the current user and have the DBUS session variable set)
compatiblePrograms=( nautilus kdeinit kded4 pulseaudio trackerd )

# Attempt to get a program pid
for index in ${compatiblePrograms[@]}; do
    PID=$(pidof -s ${index})
    if [[ "${PID}" != "" ]]; then
        break
    fi
done
if [[ "${PID}" == "" ]]; then
    echo "Could not detect active login session"
    return 1
fi

QUERY_ENVIRON="$(tr '
. ./discover_session_bus_address.sh unity
gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"
' '\n' < /proc/${PID}/environ | grep "DBUS_SESSION_BUS_ADDRESS" | cut -d "=" -f 2-)" if [[ "${QUERY_ENVIRON}" != "" ]]; then export DBUS_SESSION_BUS_ADDRESS="${QUERY_ENVIRON}" echo "Connected to session:" echo "DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS}" else echo "Could not find dbus session ID in user environment." return 1 fi return 0

Bu komut dosyası ile, unity işleminin masaüstünde çalıştırıldığını varsayarsak, aşağıdaki ayarları yapabiliriz:

%pre%

Ve işler iyi çalışmalı.

    
verilen cevap Adam Ryczkowski 28.04.2014 15:37
4

Temel hazırlık sırasında SSH yoluyla gevaşan bir görüntü için gsettings değişiklikleri yapmaya çalışırken aynı sorunu yaşıyordum.

Bu çözüm İşte etkin bağlantı için tüm balık avı için benim için hile yaptı ve çevreyi dolandırmaya çalışıyor. YMMV ...

    
verilen cevap JELaVallee 27.01.2015 03:06
-1

Gsetting'imi ayarlayan bir POST-Install komut dosyası var. Komut dosyasını sudo olarak çalıştırdığım için EUID 0'dır, bu nedenle de $ RUID (Gerçek Kullanıcı Kimliği) bulmak zorundayım.

işte benim yaklaşımım:

#!/usr/bin/env bash
# Get the Real Username
RUID=$(who | awk 'FNR == 1 {print }')

# Translate Real Username to Real User ID
RUSER_UID=$(id -u ${RUID})

# Set gsettings for the Real User
sudo -u ${RUID} DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${RUSER_UID}/bus" gsettings set org.gnome.desktop.interface clock-show-date false

exit
    
verilen cevap caracal 05.11.2017 22:40

Etiketlerdeki diğer soruları oku