রিমোট শেলের মাধ্যমে গেটেটিংগুলি কীভাবে পরিবর্তন করবেন?


23

আমাকে পুতুল, ভার্চুয়াল টার্মিনাল বা এসএসএসের মাধ্যমে ডেস্কটপ কনফিগারেশনটি স্বয়ংক্রিয় করতে হবে।

দুর্ভাগ্যক্রমে, gsettingsssh বা ভার্চুয়াল টার্মিনালের মাধ্যমে প্রার্থনা:

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সঙ্গে export DISPLAY=:0.0এটি অন্য ত্রুটি দেয়:

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

আমি কি করতে পারি?


উপর উবুন্টু 18.04 আপনি না শুধুমাত্র সেট করার প্রয়োজন হতে পারে DBUS_SESSION_BUS_ADDRESS, কিন্তু XDG_RUNTIME_DIR
মেজেম

উত্তর:


23

কীটি হল DBUS_SESSION_BUS_ADDRESSপরিবেশের পরিবর্তনশীল সেট করা ।

উপর এই থ্রেড আমি নিম্নলিখিত স্ক্রিপ্ট, যে পরিবর্তনশীল সঠিক মূল্য পেতে সাহায্য করে পাওয়া যায় নি। এটির জন্য ডেস্কটপে চলছে এমন প্রক্রিয়াটির নাম প্রয়োজন, যার উপর আমরা ডিবিস সেটিংস পরিবর্তন করতে চাই। (সমান্তরালভাবে 1 টিরও বেশি চলমান গ্রাফিকাল সেশন থাকতে পারে)। এটি কল করতে দেয়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 '\0' '\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

এই স্ক্রিপ্টটির সাহায্যে আমরা নিম্নলিখিতটি করতে পারি, ধরে নিই যে unityডেস্কটপে প্রক্রিয়া চলছে, যার উপর আমরা আমাদের সেটিংস প্রয়োগ করতে চাই:

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

এবং জিনিস ঠিক আছে কাজ করা উচিত।


এটি এখনই আমার জন্য কাজ করেছে!
সানচো.স মনিকা

4

প্রভিশনের সময় এসএসএইচ এর মাধ্যমে কোনও অসম্পূর্ণ চিত্রের জন্য গেটেটিং পরিবর্তন করার চেষ্টা করার সময় আমার একই সমস্যা ছিল।

এই সমাধানটি /ubuntu//a/326773 সক্রিয় সংযোগের জন্য এবং মাছ ফাঁকি দেওয়ার চেষ্টা করার জন্য সমস্ত মাছ ধরার জন্য আমার কাছে কৌতুক করেছিল did YMMV ...


-1

আমার একটি পোষ্ট-ইনস্টল স্ক্রিপ্ট রয়েছে যা আমার gsetting সেট করে। যেহেতু আমি স্ক্রিপ্টটি ইইউডি 0 হয় তেমন স্ক্রিপ্টটি চালাই, এর আগে আমাকে UID আরআইডি (রিয়েল ইউজার আইডি) খুঁজতে হবে।

এখানে আমার পদ্ধতির:

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

# 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

আপনার ব্যবহারকারী আইডি ইতিমধ্যে $USERপরিবেশ পরিবর্তনশীল এবং আপনার ইউআইডি ভেরিয়েবলে সঞ্চিত আছে $UID। যখন চলমান sudo, তারা হয় $SUDO_USERএবং $SUDO_UIDভেরিয়েবল। এটি বলেছিল, কেন আপনি এটিকে sudoপ্রথম স্থানে চালাবেন ? ব্যবহার sudo -u $YOUR_USERকরা একেবারে ব্যবহার না করার sudoমতো। অবশেষে, আপনার who | awk . . .আদেশটি আপনার আইডি পায় না , এটি বর্তমানে সিস্টেমে লগইন করা সমস্ত ব্যবহারকারীর সমস্ত আইডি প্রিন্ট করে।
টেরডন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.