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

تازه کار => انجمن تازه‌کاران => نویسنده: hamid123 در 01 آذر 1396، 04:52 ب‌ظ

عنوان: اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 01 آذر 1396، 04:52 ب‌ظ
سلام به همه ی دوستان. بنده هم به نوبه خودم عرض تسلیت میگم وفات جناب اشکان قاسمی رو. بنده با ایشان آشنایی نداشتم اما از jcal فرآوان استفاده کردم خدا بیامرزتشان. (اللهم صل علی محمد و آل محمد و عجل فرجهم)

دوستان من چند روزیه که درگیر یک سوال هستم و هیچ راهی هم براش پیدا نکردم.

سوال من اینکه. وقتی که من از دستور
gsettings set org.gnome.desktop.background picture-uri file_path
استفاده میکنم فقط باید داخل خود user باشم تا این دستور کار کنه. اگر روت بشم یا حتی اگر بذارمش تو کرون جاب خود یورز(crontab -u USER -e) باز هم این دستور کار نمیکنه از روش های مختلفی هم استفاده کردم اما باز نتیجه نگرفتم. من میخوام این دستور رو بذارم داخل کرونجاب تا هر ۷ ساعت یکبار عکس پس زمینم رو تغییر بده. اما هر کاری میکنم نمیشه مثلا این راه ها رو همش و امتحان کردم :
sudu - USER -c "command"
یا تمام راه هایی که از طریق سودو سو میشه یک دستور رو از طریق یک کاربر اجرا کرد
crontab -u USER -e
DISPLAY=:1 ...
DISPLAY=:0 ...
DISPLAY=:0.0 ...
dbus-launch ...
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS= ...

اما هیچ کدومش نشد که نشد

کسی راهش رو بلده؟


عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: Farhaad 1992 در 01 آذر 1396، 05:35 ب‌ظ
اگر اینجا جواب نگرفتی تو یکی از لیست های پستی گنوم مرتبط با این موضوع، پرسشتو مطرح کن و جوابشو اینجا بذار.
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 01 آذر 1396، 06:11 ب‌ظ
اگر اینجا جواب نگرفتی تو یکی از لیست های پستی گنوم مرتبط با این موضوع، پرسشتو مطرح کن و جوابشو اینجا بذار.

منظورتون انجمن خود ابونتوست؟ اونجا هم مطرح کردم هم اونجا هم تو استک اما هیشکی جواب نداده.

این هم لینکش :‌
https://askubuntu.com/questions/978579/when-use-gsettings-set-org-gnome-desktop-background-picture-uri-file-path-from
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: Ma$oud در 01 آذر 1396، 10:59 ب‌ظ
من اینجوری توی ساعت ۲۲:۵۵ تصویر زمینه‌م رو با crontab یوزر root عوض کردم: 55 22 * * * /bin/su USER -c 'gsettings set org.gnome.desktop.background picture-uri PIC_PATH' &> /tmp/cron.log
و خیلی ساده کار کرد  :o
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: رسول سعیدنژاد در 01 آذر 1396، 11:21 ب‌ظ
اگر با روش مسعود جواب نگرفتی، همین رو اسکریپت کن و بذار توی Startup گنوم. خیلی کارها رو با startup هم می‌شه انجام داد.
#!/bin/bash

FILE_PATH="Address-e Aks"

while true;do
   gsettings set org.gnome.desktop.background picture-uri $FILE_PATH
   sleep 7h
done

البته من برای تنظیم کردن تصویر پس‌زمینه از ابزار feh استفاده می‌کنم:
/usr/bin/feh --bg-fill $PIC_PATH/Beautiful-Nature.jpg
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: Farhaad 1992 در 02 آذر 1396، 08:11 ق‌ظ
منظورتون انجمن خود ابونتوست؟ اونجا هم مطرح کردم هم اونجا هم تو استک اما هیشکی جواب نداده.

این هم لینکش :‌
https://askubuntu.com/questions/978579/when-use-gsettings-set-org-gnome-desktop-background-picture-uri-file-path-from
نه منظورم انجمن اوبونتو یا استک نیست، لیست پستی هیچ ربطی به اینها نداره، لیست های پستی بهترین و اصولی ترین روش برای جواب گرفتن، گزارش مشکلات، پیشنهاد و نتقادات و غیره هستند، زیرا مستقیمن با خود توسعه دهندگان ارتباط برقرار میکنید، اکثر نرم افزارهای آزاد و توزیع های لینوکس و BSD بحث های مرتب با توسعه و غیرشون از طریق لیست پستی (mailing list) صورت میگیره.

https://mail.gnome.org/mailman/listinfo

لازمه که ابتدا عضو لیست مورد نظر بشید تا براحتی پیام های ارسال شده توسط شما برای اعضای لیست منتشر بشند.
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: Farhaad 1992 در 02 آذر 1396، 08:13 ق‌ظ
میتونید پیغام های قدیمی منتشر شده در هر لیست را از طریق آرشیو اون لیست ببینید.

برای اطلاعات بیشتر ویکیپدیا را ببینید.
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 03 آذر 1396، 12:53 ق‌ظ
من اینجوری توی ساعت ۲۲:۵۵ تصویر زمینه‌م رو با crontab یوزر root عوض کردم: 55 22 * * * /bin/su USER -c 'gsettings set org.gnome.desktop.background picture-uri PIC_PATH' &> /tmp/cron.log
و خیلی ساده کار کرد  :o

هر چی فکر میکنم نمیفهمم دلیلش رو این راه هم قبلا امتحان کردم اما اصلا هیچی که هیچ. من از نسخه 16.04 lts استفاده میکنم.

اگر با روش مسعود جواب نگرفتی، همین رو اسکریپت کن و بذار توی Startup گنوم. خیلی کارها رو با startup هم می‌شه انجام داد.
#!/bin/bash

FILE_PATH="Address-e Aks"

while true;do
   gsettings set org.gnome.desktop.background picture-uri $FILE_PATH
   sleep 7h
done

البته من برای تنظیم کردن تصویر پس‌زمینه از ابزار feh استفاده می‌کنم:
/usr/bin/feh --bg-fill $PIC_PATH/Beautiful-Nature.jpg

تو استارتاپ؟ اون رو هم امتحان میکنم ولی فکر نکنم اینم جواب بده. احساس میکنم مشکل کار من جای دیگس ممکنه ابونتوم به مشکل خورده. آخه واقعا یه مسئله ی پیش پا افتادست نمیفهمم چرا انقدر گیر داده.

ابزار feh؟ آشنا نیستم باهاش. تشکر میکنم از ابزار feh استفاده کنم.

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


منظورتون انجمن خود ابونتوست؟ اونجا هم مطرح کردم هم اونجا هم تو استک اما هیشکی جواب نداده.

این هم لینکش :‌
https://askubuntu.com/questions/978579/when-use-gsettings-set-org-gnome-desktop-background-picture-uri-file-path-from
نه منظورم انجمن اوبونتو یا استک نیست، لیست پستی هیچ ربطی به اینها نداره، لیست های پستی بهترین و اصولی ترین روش برای جواب گرفتن، گزارش مشکلات، پیشنهاد و نتقادات و غیره هستند، زیرا مستقیمن با خود توسعه دهندگان ارتباط برقرار میکنید، اکثر نرم افزارهای آزاد و توزیع های لینوکس و BSD بحث های مرتب با توسعه و غیرشون از طریق لیست پستی (mailing list) صورت میگیره.

https://mail.gnome.org/mailman/listinfo

لازمه که ابتدا عضو لیست مورد نظر بشید تا براحتی پیام های ارسال شده توسط شما برای اعضای لیست منتشر بشند.

چقدر عالی نمیدونستم خیلی خوبه.




 من یک مبتدی هستم باعث خوش حالی در کنار شما بودن
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 03 آذر 1396، 12:56 ق‌ظ
حتی این اسکریپت رو با پایتون هم نوشتم به جز بش. اما باز نشد که نشد.

اسکریپتی که بابش نوشتم اینکه میره هر روز یا هر زمانی که فراخوانیش کنم یک عکس پس زمینه از ساتیهایی که بهش معرفی کنم دانلود میکنه و جایگزین عکس فعلی میکنه. اسکریپت بدرستی کار میکنه اما وقتی داخل روت میشم یا حتی داخل کرون جاب خود یوزر هم میشم باز این دستور این بخشش اجرانمیشه
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: رسول سعیدنژاد در 03 آذر 1396، 01:09 ق‌ظ
توی Cron کاربر معمولی نیازی به sudo -u نیست.
اون DISPLAY رو export می‌کنی قبلش؟
export DISPLAY=:0
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 03 آذر 1396، 10:36 ق‌ظ
خیر اکسپورتش نکردم. الان تست میکنم
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 03 آذر 1396، 11:13 ق‌ظ
این هم متاسفانه نشد. حتی من یک یوزر دیگه ساختم و با اون امتحان کردم این راه هارو حتی با اون هم نشد.

آخه من نمیفهمم همه این دستور رو اجرا میکنن و بدون مشکل هم براشون کار میکنه اما چرا برای من نمیشه؟ کجای کار اشکال داره.

خیلی عجیبه این دستور تا زمانی که داخل ترمینال وارد روت نشدم درست کار میکنه اما همین که وارد روت میشم دیگه این دستور با هیچ راهی درست کار نمیکنه. وقتی الان آقا مسعود دارن اجراش میکنن بدون مشکل اون هم از روت. پس چرا برای من نمیشه؟

عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 03 آذر 1396، 11:35 ق‌ظ
یه چیز رو میتونم امتحان کنم. این مشکل احتمالا باید از تفاوت متغییر های پیش فرض هر کاربر باشه. ما که هرچی بود رو امتحان کردم این رو هم یه تست بکنم
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: رسول سعیدنژاد در 03 آذر 1396، 02:16 ب‌ظ
جسارته. چرا شما با کاربر ریشه وارد می‌شی؟
چه لزومی داره؟
مگه با sudo کارِت راه نمی‌افته؟
شما با کاربر معمولی همیشه Login کن. بعد اگه نیاز به اجرای برنامه با دسترسی ریشه داشتی، از sudo استفاده کن
دستوراتی که با sudo اجرا می‌شن رو توی Cron ریشه بذار
sudo crontab -e

و دستوراتی که نیاز به sudo ندارن رو توی Cron معمولی بذار.
crontab -e
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 03 آذر 1396، 04:54 ب‌ظ
جسارته. چرا شما با کاربر ریشه وارد می‌شی؟
چه لزومی داره؟
مگه با sudo کارِت راه نمی‌افته؟
شما با کاربر معمولی همیشه Login کن. بعد اگه نیاز به اجرای برنامه با دسترسی ریشه داشتی، از sudo استفاده کن
دستوراتی که با sudo اجرا می‌شن رو توی Cron ریشه بذار
sudo crontab -e

و دستوراتی که نیاز به sudo ندارن رو توی Cron معمولی بذار.
crontab -e


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

بعد آخه مشکل دیگش اینکه حتی یه ارور هم خروجی نمیده که آدم مثلا از طریق اون ارور به یه چیزی شک کنه.

شاید براتون جالب باشه اگر من ترمینال رو باز کنم و بعد با دستور sudo su وارد روت بشم و دوباره بادستور su reza وارد همون کاربر رضا بشم و بعد این دستور رو بزنم باز هم اجرا نمیشه ](*,) . من باید دوباره exit کنم برم تو روت و دوباره داخل روت هم exit کنم برم توی reza بعد این دستور رو بزنم اون موقع دیگه درست اجرا میشه.


حالا اشکالش رو بالاخره فهمیدم کجاست که تو پست بعدی مینویسمش
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 03 آذر 1396، 05:17 ب‌ظ
حالا بقول بچه ها. دست و جیغ و هووووووووورررررررااااا

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

آقا داستان از این قراره که این دستور از یک سری متغییرهای مربوط به همان یوز استفاده میکنه تا بتونه تغییرات رو فقط برای خود اون یوزر اعمال کنه(مثلا تو مشکل من این دستور حتما و حتما میخواد که فقط پس زمینه ی دسکتاب من رو عوض کنه یعنی تنها دسکتاپ 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 و آقا رسول و آقا مسعود گرامی.

موفق و پیروز باشید
عنوان: پاسخ : اجرا کردن دستور gsettings set org.gnome.desktop.background picture-uri file_path
ارسال شده توسط: hamid123 در 03 آذر 1396، 05:30 ب‌ظ
من برم پاسخش رو تو انجمن ابونتو یا ستک هم بذارم