انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path  (دفعات بازدید: 1960 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین hamid123

  • Jr. Member
  • *
  • ارسال: 38
  • جنسیت : پسر
حالا بقول بچه ها. دست و جیغ و هووووووووورررررررااااا

خدا رو شکر. بالاخره فهمیدم مشکل از کجاست.

آقا داستان از این قراره که این دستور از یک سری متغییرهای مربوط به همان یوز استفاده میکنه تا بتونه تغییرات رو فقط برای خود اون یوزر اعمال کنه(مثلا تو مشکل من این دستور حتما و حتما میخواد که فقط پس زمینه ی دسکتاب من رو عوض کنه یعنی تنها دسکتاپ reza عوض خواهد شد پس درنتیجه حتی اگر روت هم این دستور رو بفرسته این دستور برای reza اعمال نخواهد شد چون روت فرستاده و این دستور متغییرهای تعریف شده روت رو میخونه و میخواد که پس زمینه ی کاربر روت رو عوض کنه. دقیقا علت ارور ندادن این دستور هم همینه چون فقط برای خود اون یوزری که این دستور رو اجرا کرده اعمال میشه و من هم دسکتاپم متعلق به یوزر reza هست نه یوزر روت و منطقا این دستور هیچ خروجی بمن نشون نمیده)

درنهایت متغییری که مقدار منحصر بفرد داره و باعث میشه این دستور فقط برای خود اون یوز اعمال بشه متغیر DBUS_SESSION_BUS_ADDRESS هست.

من اومدم متغییرهای دو یوزر reza و root رو بررسی کردم دیدم در تمام متغییرهایی که این دستور ممکن است ازش استفاده کنه کاملا یکسان هستند(هم DISPLAY هم KEY ... ) اما تو متغییر DBUS_SESSION_BUS_ADDRESS با هم فرق میکنن و همانطور که حدس میزنید مقدار این متغییر رو از رضا کپی کردم و داخل روت جایگزین کردم در نهایت هم export بعد دوباره که تست کردم با خوش حالی دستور اجرا شد \\:D/

نکته ای که هست اینکه متغییر DBUS_SESSION_BUS_ADDRESS با هر بار لاگ اوت کردن یا ریست کردن سیستم دوباره مقدارش عوض میشه(یک رشته رندوم داخلشه) و درنتیجه کپی پیست راه حلش نیست
ما میتونیم با اینکار :

export DBUS_SESSION_BUS_ADDRESS=$(pgrep -a dbus-daemon -U USERNAME | grep -o 'unix:abstract.*$')

این متغییر رو هر بار با مقدار جدید جایگزین کنیم حالا تو یوزری که دسترسی داشته باشه اینکار انجام میشه چه روت باشه چه یوزر دیگه ای باشه. فقط به جای کلمه ی USERNAME نام کاربر مورد نظر رو باید وارد کنید.

و تمام. بعدش میتونید از دستور gsettings برای عوض کردن تنظیماتتون استفاده کنید مثل تعویض تصویر زمینه دسکتاپ :
export DBUS_SESSION_BUS_ADDRESS=$(pgrep -a dbus-daemon -U USERNAME | grep -o 'unix:abstract.*$')

gsettings set org.gnome.desktop.background picture-uri FILE_ADDRESS
به جای FILE_ADDRESS آدرس تصویر مورد نظر وارد میشه :
file:///home/reza/wallpaper/picture.jpg


در نهایت این هم از کرون جاب اسکریپت اینجانب :
@reboot su reza -c 'export DBUS_SESSION_BUS_ADDRESS=$(pgrep -a dbus-daemon -U reza | grep -o "unix:abstract.*$");export DISPLAY=:0;python /home/reza/bgg.py'
بعد از هر بار ریست شدن پس زمینه دسکتاپ رو از یک سایتی دریافت میکنه و جایگزین میشه خود تصاویر رو هم آرشیو میکنه. خود اسکریپت bgg.py رو هم در گیت هاپ به اشتراک میذارم اگر کسی نیاز داشت ازش استفاده کنه.

از اساتید و برادران بزرگتر خودم عذر خواهی میکنم اگر خیلی توضیح دادم به بزرگیتون ببخشید. قصدم این بود هر کس دیگه ای با هر سطح دانشی این مشکلش بر طرف بشه.و همینطور واسه خودمم که مبتدیم یک مروری بشه تا تو ذهنم جا بیافته


ممنون از راهنمایی های جناب Fedora-Red Hat و آقا رسول و آقا مسعود گرامی.

موفق و پیروز باشید
« آخرین ویرایش: 03 آذر 1396، 05:39 ب‌ظ توسط hamid123 »

آفلاین hamid123

  • Jr. Member
  • *
  • ارسال: 38
  • جنسیت : پسر
من برم پاسخش رو تو انجمن ابونتو یا ستک هم بذارم
« آخرین ویرایش: 03 آذر 1396، 05:32 ب‌ظ توسط hamid123 »