سكريبت صغير لتغيير الخلفية فى جنوم

الثلاثاء-06-2009

السلام عليكم ورحمة الله وبركاته
هذا هو سكريبت صغير جدا لتغيير خلفية جنوم بشكل متسلسل خلال فترات زمنية معينه
أولا الاداه التي سوف نستخدمها هى gconftool-2 وهى اداة للتجكم فى Configuration Editor او محرر الاعدادات -وهو لمن لا يعرف يشبة كثيرا الريجيسترى فى الويندوز ويمكنك من خلاله تغيير بعض خيارات برامج جنوم ومنها سطح المكتب , ربما من الافضل أن تحاول ان تفتحه وتحاول تجربة بعض الامور به –  حيث تمكنك تلك الاداه من تغيير بعض القيم فى configuration editor جرب المثال التالى

$  gconftool-2 -g  gconftool-2 -g /desktop/gnome/background/picture_filename

وهو الأمر اللذى يحضر لك قيمة picture_filename فى المسار المعرف , يمكنك تتبعه من البرنامج
وهو عباره عن قيمة نصية تحتوى على مسار الخلفية الان الى السكريبت

سوف نعرف اولا متغيران
أولا متغير يحمل مسار الصور التى سوف تكون خلفية
WALLPAPERS_DIR=’/usr/share/backgrounds/images/themes-backgrounds-gnome/’;
والمسار اللذى موجود بالاعلى من المفروض ان يحتوى على صور تكون موجوده مع جنوم افتراضيا
ويمكنك تغييره الى مسار اى مجلد اخر

ثانيا الوقت بين كل تغيير وأخر
TBA=10
وهى احتصار لـ Time Between Alternating وتعنى بالعربية الوقت بين عمليات المبادلة
وهو هنا 10 ثوان فقط , يمكنك تغييرها الى اى قيمة أخرى (الوقت بالثانية )

الان سوف نعرف دالة تقوم بتغيير الخلفية بحيث تعطيها إسم الصورة وتقوم هى بتغييره

set_gnome_bg(){
if [[ -n $1 ]] ;then
gconftool-2 –set /desktop/gnome/background/picture_filename –type=string $1
else
echo set_gnome_bg::No background wallpaper given to set !!;
fi;
}

الادالة إسمها هو set_gnome_bg وهى تختبر أول قيمة يتم إعطائها للدالة عن طريقة if وهى تختبر إذا ماكانت طولها لايساوى الصفر
فى حالة كانت تساوى الصفر سوف نستخدم الأداة السالف ذكرها بوضع قيمة نوعها sting – هى نفسها المتغير الذى يتم اعطائه للدالة – فى المسار الموضح

وأى شئ غير هذا يعرض رسالة خطأ

الان ننتقل الى الدالة الثانية التى تقوم بإحضار ملفات الخلفيات

collect_bgs(){
if [[ -n $1 && -d $1 ]] ;then

#get all files
for file in `find $1 -type f -print`; do
set_gnome_bg $file;
sleep $TBA;
done;
else
echo collect_bgs::No argument or not a directory !!;
fi;
}
الدالة تقبل متغير واحد وهو يحتوى على مسار المجلد اللذى يحتوى ملفات الخلفيات
نستخدم if بعد ذلك لاختبار النتغير انه ليس مساوى للصفر( -n ) وأنه مجلد ( -d )
وفى حالة تحقق الشرط تبدا دورة for فى العمل بأخذ ناتج الامر find $1 -type f -print وهو ببساطه امر يبحث عن ملفات وليس مجلدات ويقوم بطباعتها سطر تلو الاخر
أما دورة for نفسها تقوم بأخذ الملف وإعطائه للدالة set_gnome_bg السابق شرحها لكى يتم تغيير الخلفية
وبعد ذلك يتوقف البرنامج عن طريق الامر sleep الفتره السابق تحديدها

والان الى استدعاء الدوال

while [[ 1 ]]; do
collect_bgs $WALLPAPERS_DIR;
done;

السطر الاول هو دوره while تدور فى ملانهاية لكى يتم تغيير الخلفيات دائما
السطر الثاني يقوم باستدعاء الدالة collect_bgs واعطائها المتغير $WALLPAPERS_DIR اللذى يحتوى على المجلد اللذى يحتوى على إسم المجلد
يمكنك أستدعاء السكريبت فى بداية كل جلسة – session – عن طريق برنامج gnome-session-properties

الهدف من السكريب : معرفة وظيفة وصيغة كل من for , if , while وهى أشياء اساسية فى bash
ولاحظ ان سكريبتات الشل هى تفسيرية أى أنك لابد أن تقوم بتعريف الداول والمتغيرات قبل إستدعائها

انتهى الشرح , أرحب بأى تعديل على السكريبت او أى اقتراحات

http://www.linuxac.org/forum/attachments/forum64/8114d1245612652-alterbg.sh.gz

Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: