autoWallChange: Automatically changes wallpaper

About the script
This is a KDE (may not work in KDE 4) only shell script which changes wallpaper every few minutes as set by you. KDE too has a built-in feature to change wallpaper but it has few limitations:-

  1. It doesn’t show pictures within the sub-directories of the given path.
  2. It applies the same picture position setting (i.e. Scala&Crop, Tile, etc.) to all the pictures.

This script allows you to apply different picture position settings to pictures from different directories. e.g. if you use the following settings

picDir=”/home/geek/Pictures”
shapeDir=”Rectangle Square Tall”
shapeMode=”8 8 5″

Then pictures from /home/geek/Pictures/Rectangle and /home/geek/Pictures/Square will be shown using Scale & Crop position setting, and pictures from /home/geek/Pictures/Tall will be Titled Maxpect. Following is the table for which number stands for what position setting.

  • 1 -> Centered
  • 2 -> Titled
  • 3 -> Center Titled
  • 4 -> Centered Maxpect
  • 5 -> Titled Maxpect
  • 6 -> Scaled
  • 7 -> Centered Auto Fit
  • 8 -> Scale & Crop

This script is best used with my iflickrDown script (see here).

The code
License: GNU Public License version 3.

[code lang=”bash”]#!/bin/bash
#Coded by AppleGrew
#License: GPL version 3

#############################################
############Alternative way to set###########
##########the following variables############
#Create another shell script and export it #
#from there. #
#===============SAMPLE=======================
# #!/bin/bash
# export picDir="/home/geek/Pictures" #Donot put ‘/’ at the end
# export shapeDir="Square Rectangle Tall"
# export shapeMode="8 8 5"
# export changeWallIntv=2 #in mins
#
# ./autoWallChange >/tmp/autoWall.log & #Launching the main program.
############Configs##########################
picDir="" #Donot put ‘/’ at the end
shapeDir=""
shapeMode=""
changeWallIntv=1 #in mins
#############################################

tmpFile="/tmp/autoWallChange.tmp"
lstFile="/tmp/autoWallChange.lst"
fileLen=0
factor=0

shapeDir=( $shapeDir )
shapeMode=( $shapeMode )

echo "${shapeDir[@]}"
echo "${shapeMode[@]}"

function refreshFileList(){
local DIR_PATH=$1
local sM=$2
echo "Refreshing content of ‘$DIR_PATH’, shape mode is $sM"

if [ -a "$DIR_PATH" ] && [ -d "$DIR_PATH" ] && [ -w "$DIR_PATH" ]
then
for f in `find "$DIR_PATH" -type f -print | sed ‘s/ /|/g’`
do
matchFound=0
for fl in `cat "$tmpFile"`
do
fl=`echo "$fl"|sed -e ‘s/\([^>]*\)>\([^>]*\)/\1\n\2/g’|head -n 1|tail -n 1`
[[ "$fl" == "$f" ]] && matchFound=1 && break
done
[[ $matchFound == 0 ]] && printf "%s>%d\n" $f $sM >>"$tmpFile" && let ‘fileLen++’
done
let ‘factor=(fileLen-1)*100000000/32767’
fi
echo "Refreshed"
}

printf "">"$tmpFile" #Creating new empty file.
i=0
for shape in ${shapeDir[@]}
do
test -a "$picDir/$shape" && find -L "$picDir/$shape" -type f -print > "$lstFile.$i"
test -a "$picDir/$shape" && refreshFileList "$picDir/$shape" ${shapeMode[$i]}
let ‘i++’
done

shownPicsLine=0
lastL=""
totShown=0
RANDOM=$$
while true
do
let ‘l=(factor*RANDOM+100000000)/100000000’
test $totShown -ge $fileLen && lastL="" && totShown=0
while echo "$lastL" | grep -o "\"$l\"" > /dev/null
do
let "l++"
test $l -gt $fileLen && l=1
done
lastL="${lastL}\"$l\""
let "totShown++"

pfileL=`cat "$tmpFile"|head -n $l|tail -n 1`
pfilePath=`echo "$pfileL"|sed -e ‘s/\([^>]*\)>\([^>]*\)/\1\n\2/g’|head -n 1|tail -n 1|sed ‘s/|/ /g’`
pfileMode=`echo "$pfileL"|sed -e ‘s/\([^>]*\)>\([^>]*\)/\1\n\2/g’|head -n 2|tail -n 1`

if [ $totShown -ge $fileLen ]
then
lastL=""
totShown=0
fi

[ -f "$pfilePath" ] && dcop kdesktop KBackgroundIface setWallpaper "$pfilePath" "$pfileMode"

i=0
for shape in ${shapeDir[@]}
do
if test -a "$picDir/$shape" && ! find -L "$picDir/$shape" -type f -print | diff "$lstFile.$i" ->/dev/null
then
echo "’$picDir/$shape’ content changed"
refreshFileList "$picDir/$shape" ${shapeMode[$i]}
find -L "$picDir/$shape" -type f -print > "$lstFile.$i"
fi
let ‘i++’
done
echo "sleeping"
sleep "${changeWallIntv}m"
done<[/code]

Uploaded two projects on Sourceforge.net

A few days ago I uplaoded two projects on Sourceforge.net (world’s largest open source programs’ repository). They are LANSim and AG’s Library Manager.

LANSim

(Update: This has now been uploaded to Github – https://github.com/applegrew/lansim. Please download or fork it from there.)

This is a network simulator. This is meant to be user friendly as well as feature rich. This field lacks software with good user interface. Even the commercial softwares in this field is quite lame. This aimed to go along Multisim(R) and Blender(R) form.

URL:-

Homepage: lansim.sourceforge.net
SF site: sourceforge.net/projects/lansim

Developers:-

1) Rohit Singh
2) Dhiraj Prakrash
3) and me.

AG’s Libray Manager

This a versatile library manager made in Java. It requires MySql at backend to store the database. This is not made to function only as a library manager but can be used in many places like CD rental shops etc. It has the feature to export the result to Microsoft Excel format. It can also import from there (but there isn’t any easy way to do so currently). The number of fields of information you want to store for your items can be customised by changing the MySQL table structure (Currently there isn’t any easy way to do so).

Url:-

Homepage: libmanager.sourceforge.net
SF site: sourceforge.net/projects/libmanager

Developer:-

Me

N-queen problem solving code in C++

To know what is this N-Queen problem is go here. My code can be complied using any ANSI complaint C++ compiler. I successfully compiled it using g++ and MS Visual C++ 6.0. I point I would like to mention is that when I ran this program for N=10 then it occupied 600kB when compiled using Visual C++ 6.0 and it took around 2300kB! I have to tried to keep memory requirement under check. It has respectable processing speed.

Get the code from applegrew.pastebin.com. For some reason the previous post of this code got deleted from pastebin. If you encounter such problem again then post a comment here. I will repost the code.

Computer Science is Great – The Proof

In our college there is a general feeling that computer science is a useless, fancy engineering branch, but I beg to disagree. Without us (programmers) the computer is a useless junk. I made this animation video as a proof for that.This video has been made in Blender and edited in Windows Movie Maker. Everything, even the ‘It is a Junk without us’ portion too has been done in Blender, but, the credits portion has been done in Windows Movie Maker.

Free Blender model released.

I held the release of this model for quite a lomg time becuase I wanted to add an armature (rig it) and material to it. Because of my diversion to other things and time limitation I couldn’t complete it. Nevertheless, below is the screenshot of this model I call – Toon Cow.


You can download this from http://www.savefile.com/files/1917654 or http://www.katorlegaz.com/index.php?a=download&c=Blender_3D_Model_Repository. (www.katorlegaz.com has a free Blender 3D Model Repository)

(UPDATE: Direct link to download ToonCow from katorlegaz.com is http://www.katorlegaz.com/downloads/Blender_3D_Model_Repository/characters/Toon-Cow.zip)

Blender is a powerfull, open source 3dModelling and animation software. For more information see this and this.