14-11-2010, 11:26
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
סקריפט להחלפה רנדומלית של רקע
יצרתי תסריט צנוע שיחליף לי את הרקע הנוכחי למשהו אחר באופן רנדומלי, וכך כל פעם שאני מתחבר למשתמש אני מקבל רקע חדש...
ל-"התקנת" התסריט:- צרו קובץ טקסט ששמו "change_wallpaper_randomly" עם הרשאות הרצה (x+), ושימו את התסריט בתוכו. ניתן לבחור שם אחר.
אני העדפתי להוריד לו הרשאות קריאה ע"י Others, אך הם עדיין יכולים להריץ אותו. - שימו את הקובץ בתיקייה scripts/~. צרו אותה אם אינה קיימת.
- צרו symbolic link לקובץ scripts/change_wallpaper_randomly/~ ושימו את קובץ הקישור בתיקייה usr/local/bin/ כדי שיהיה זמין לכל שאר משתמשי המערכת.
כעת הקובץ יהיה זמין בטרמינל ע"י הקשת המחרוזת "change_wallpaper_randomly", כיוון שהתיקייה usr/local/bin/ כלולה במשתנה PATH$.
כדי שתמונת הרקע תתחלף בעת התחברות משתמש, כנסו לקובץ profile./~ והוסיפו בסופו את השורה הבאה:
קוד:
change_wallpaper_randomly -p "$HOME/Pictures"
הפקודה הנ"ל בוחרת את הרקעים מהתיקייה Pictures/~, עד לרמת קינון שלישית של תיקיות.
באשכול הזה:- שימי אמר לשים את התסריט ב- usr/local/bin/, אבל אני העדפתי לשים אותו איפשהו ב- ~ כיוון שלתיקייה home/ הקדשתי מחיצה נפרדת,
מה שמיקל עליי לבצע התקנה\החלפה של הפצה מבלי לדאוג שהדברים שיצרתי לא יאבדו.
לכן בתיקייה usr/local/bin/ שמתי רק קישור לקובץ התסריט, כדי שהתסריט עצמו לא יאבד בהתקנה חדשה. - borsood אמר שהקובץ profile./~ מורץ מספר פעמים בעת התחברות משתמש.
בבדיקות שעשיתי ראיתי שהוא רץ רק פעם אחת.
יכול להיות שהוא אולי משתמש במערכת אחרת, או שביצעתי את הבדיקות בצורה לא נכונה
( בקובץ profile./~ וב- bashrc./~ פשוט הוספתי בסופם פקודה שמוסיפה מחרוזת לקובץ טקסט.
ראיתי שמתווספת רק שורה אחת לקובץ הטקסט בכל התחברות, לכן הסקתי שזה מורץ רק פעם אחת.
הדבר המוזר זה ששני הקבצים הנ"ל היו אמורים להוסיף לפחות שורה אחת כל אחד, אך קיבלתי בקובץ רק שורה אחת משתי הקבצים האלו... )
התסריט רלוונטי למשתמשי GNOME.
כל הנ"ל נוסה והצליח ב- Ubuntu 10.04.
אופן שימוש בתסריט ניתן בעזרת דגל h- ...
טיפ:
אני יצרתי שני Launchers שבאחד מהם אני סתם מחליף את הרקע עם הפקודה:
קוד:
change_wallpaper_randomly -p "$HOME/Pictures"
וב-Launcher השני אני מעביר ל-Trash את הרקע הנוכחי + קובע רקע חדש, בעזרת הפקודה:
קוד:
change_wallpaper_randomly -p "$HOME/Pictures" -d
זה פשוט דרך מהירה להיפטר מרקע שלא אוהבים.
להלן התסריט:
קוד:
#!/bin/bash
if [[ "$(which gconftool-2)" = "" ]] ; then
echo "The tool gconftool-2 doesn't exist."
exit 1
fi
function usage()
{
cat << EOF
Change your wallpaper to a random one.
The script is compatible with GNOME desktops only.
Only files with the following extensions will be chosen: jpeg, jpg, png, gif
usage: $0 options
OPTIONS:
-h Shows this message
-d Moves the current wallpaper to Trash and sets a new wallpaper randomly
-p The absolute path from which wallpapers are chosen. The scripts descends up to 3 levels of directories.
Example: $0 -p \${HOME}/Pictures
EOF
}
WALLPAPER_PATH=""
while getopts "hp:d" o ; do
case $o in
d)
CURRENT_WALLPAPER_FILE_PATH=$(gconftool-2 --get /desktop/gnome/background/picture_filename)
mv -i "$CURRENT_WALLPAPER_FILE_PATH" "$HOME/.local/share/Trash/files/"
;;
p)
if [ ! -d "$OPTARG" ]; then
echo "Given path isn't a directory, exiting... See usage:"
usage
exit 1
fi
if [ "$OPTARG" != "/" ] ; then
WALLPAPER_PATH=${OPTARG%/} # remove trailing slash, e.g. '/home/userName/Pictures'
fi
;;
h)
usage
exit 1
;;
?)
usage
exit 1
;;
esac
done
cd $WALLPAPER_PATH
find . -maxdepth 3 -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" \) | sort -R | tail -1 | while read file; do
gconftool-2 --type string --set /desktop/gnome/background/picture_filename "$WALLPAPER_PATH/$file"
done
זהו..
|