This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
user:escoute1:portfolio:hpc0project2 [2013/03/06 18:36] – [Procedure] escoute1 | user:escoute1:portfolio:hpc0project2 [2013/03/06 18:37] (current) – [Attributes] escoute1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ======Project: | ||
+ | |||
+ | A project for HPC0 by Eric Scouten | ||
+ | |||
+ | This project was begun on 2/4/2013 and is anticipated to take 4 days. Actually took a pretty long time, due to the nature of having to continually do trial and error with mouse movements. | ||
+ | |||
+ | =====Objectives===== | ||
+ | To create a shell-script program that automatically draws whatever it is programmed to. | ||
+ | |||
+ | =====Prerequisites===== | ||
+ | In order to successfully accomplish/ | ||
+ | |||
+ | * Basic understanding of shell script | ||
+ | * Understanding of Linux | ||
+ | * **man** xte | ||
+ | * **man** xpaint | ||
+ | * **man** xwit | ||
+ | * **man** xwininfo | ||
+ | |||
+ | =====Background===== | ||
+ | Attempting to create a script that can draw a landscape or picture of some sort using xpaint and xte/xwit | ||
+ | |||
+ | **xwit** is an X window interface tool. By default | ||
+ | |||
+ | **xte** is a program that generates fake input using the XTest extension, more reliable than xse. | ||
+ | |||
+ | **xwininfo** is a utility for displaying information about windows. Various information is displayed depending on which options are selected. If no options are chosen, -stats is assumed. | ||
+ | |||
+ | The user has the option of selecting the target window with the mouse (by clicking any mouse button in the desired window) or by specifying its window id on the command line with the -id option. Or instead of specifying the window by its id number, the -name option may be used to specify which window is desired by name. There is also a special -root option to quickly obtain information on the screen' | ||
+ | |||
+ | |||
+ | |||
+ | =====Code===== | ||
+ | The First Version: The Square | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | pkill -9 xpaint | ||
+ | xpaint -canvas -size 1024x768& | ||
+ | sleep 3s; | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | sleep 0.25s; | ||
+ | xte ' | ||
+ | sleep 0.25s; | ||
+ | xte ' | ||
+ | sleep 0.25s; | ||
+ | xte ' | ||
+ | sleep 0.25s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | </ | ||
+ | |||
+ | Version 2: Consistency | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | pkill -9 xpaint | ||
+ | xpaint -canvas -size 1024x768& | ||
+ | sleep 3s; | ||
+ | xwit -pop -id 0x3c0019a -resize 1280 937 | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xwit -pop -id 0x3c00678 | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | sleep 0.25s; | ||
+ | xte ' | ||
+ | sleep 0.25s; | ||
+ | xte ' | ||
+ | sleep 0.25s; | ||
+ | xte ' | ||
+ | sleep 0.25s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | </ | ||
+ | |||
+ | Version 3: The Circle | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | r=400 | ||
+ | pi=$(echo " | ||
+ | |||
+ | |||
+ | pkill -9 xpaint | ||
+ | xpaint -canvas -size 1280x937& | ||
+ | sleep 3s; | ||
+ | xwit -pop -id 0x3c0019a -resize 1280 937 | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | sleep 0.1s; | ||
+ | xte ' | ||
+ | sleep 0.1s; | ||
+ | xwit -pop -id 0x3c00678 | ||
+ | xte ' | ||
+ | sleep 0.1s; | ||
+ | xte ' | ||
+ | sleep 3s; | ||
+ | xte ' | ||
+ | |||
+ | for ((n=0; n<360; n++));do | ||
+ | x=`echo "640 + (${r}*c(${n}*${pi}/ | ||
+ | y=`echo "512 + (${r}*s(${n}*${pi}/ | ||
+ | |||
+ | xwit -root -warp $x $y | ||
+ | done | ||
+ | xte ' | ||
+ | </ | ||
+ | |||
+ | Poptart with a Bootiful Diamon Ring! | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | pi=$(echo " | ||
+ | |||
+ | |||
+ | pkill -9 xpaint | ||
+ | sleep 2s; | ||
+ | xpaint -canvas -size 1280x937& | ||
+ | sleep 3s; | ||
+ | xwit -pop -id 0x3a0019a -resize 1280 937 | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | sleep 0.1s; | ||
+ | xte ' | ||
+ | sleep 0.1s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xwit -pop -id 0x3a0019a | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xwit -pop -id 0x3a0019a | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xwit -pop -id 0x3a0019a | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xte 'key BackSpace' | ||
+ | sleep 1s; | ||
+ | xte 'key 5' | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | sleep 2s; | ||
+ | xte ' | ||
+ | xwit -pop -id 0x3a0019a | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | for ((n=0; n<240; n++));do | ||
+ | r=$RANDOM | ||
+ | x=`echo "365 + ($n / 4) + $(( r %= 20 ))" | bc -l` | ||
+ | y=`echo "580 - ($n - 0.5) - $(( r %= 20 ))" | bc -l` | ||
+ | |||
+ | xwit -root -warp $x $y | ||
+ | xte ' | ||
+ | done | ||
+ | xte ' | ||
+ | |||
+ | for ((n=0; n<240; n++));do | ||
+ | r=$RANDOM | ||
+ | x=`echo "420 + ($n / 2) + $(( r %= 20 ))" | bc -l` | ||
+ | y=`echo "340 + $n + 2 + $(( r %= 20 ))" | bc -l` | ||
+ | |||
+ | xwit -root -warp $x $y | ||
+ | xte ' | ||
+ | done | ||
+ | xte ' | ||
+ | for ((n=0; n<240; n++));do | ||
+ | r=$RANDOM | ||
+ | x=`echo "520 + ($n / 4) + $(( r %= 20 ))" | bc -l` | ||
+ | y=`echo "580 - ($n - 0.5) - $(( r %= 20 ))" | bc -l` | ||
+ | |||
+ | xwit -root -warp $x $y | ||
+ | xte ' | ||
+ | done | ||
+ | xte ' | ||
+ | for ((n=0; n<240; n++));do | ||
+ | r=$RANDOM | ||
+ | x=`echo "550 + ($n / 2) + $(( r %= 20 ))" | bc -l` | ||
+ | y=`echo "340 + $n + 2 + $(( r %= 20 ))" | bc -l` | ||
+ | |||
+ | xwit -root -warp $x $y | ||
+ | xte ' | ||
+ | done | ||
+ | xte ' | ||
+ | for ((n=0; n<240; n++));do | ||
+ | r=$RANDOM | ||
+ | x=`echo "675 + ($n / 4) + $(( r %= 20 ))" | bc -l` | ||
+ | y=`echo "580 - ($n - 0.5) - $(( r %= 20 ))" | bc -l` | ||
+ | |||
+ | xwit -root -warp $x $y | ||
+ | xte ' | ||
+ | done | ||
+ | xte ' | ||
+ | for ((n=0; n<240; n++));do | ||
+ | r=$RANDOM | ||
+ | x=`echo "740 + ($n / 2) + $(( r %= 20 ))" | bc -l` | ||
+ | y=`echo "340 + $n + 2 + $(( r %= 20 ))" | bc -l` | ||
+ | |||
+ | xwit -root -warp $x $y | ||
+ | xte ' | ||
+ | done | ||
+ | xte ' | ||
+ | for ((n=0; n<240; n++));do | ||
+ | r=$RANDOM | ||
+ | x=`echo "850 + ($n / 6) + $(( r %= 20 ))" | bc -l` | ||
+ | y=`echo "580 - ($n - 0.5) - $(( r %= 20 ))" | bc -l` | ||
+ | |||
+ | xwit -root -warp $x $y | ||
+ | xte ' | ||
+ | done | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xwit -pop -id 0x3a0019a | ||
+ | xte ' | ||
+ | sleep 0.5s | ||
+ | xte ' | ||
+ | sleep 2s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | for ((n=90; n<360; n++));do | ||
+ | r=25 | ||
+ | x=`echo "640 + (${r}*c(${n}*${pi}/ | ||
+ | y=`echo "215 + (${r}*s(${n}*${pi}/ | ||
+ | |||
+ | xwit -root -warp $x $y | ||
+ | done | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xwit -pop -id 0x3a0019a | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xwit -pop -id 0x3a0019a | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | xte ' | ||
+ | sleep 0.5s; | ||
+ | xte ' | ||
+ | xwit -pop -id 0x3a0019a | ||
+ | xte ' | ||
+ | sleep 0.5s | ||
+ | xte ' | ||
+ | sleep 2s; | ||
+ | xwit -pop -id 0x3a00678 | ||
+ | xte ' | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | sleep 1s; | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | xte ' | ||
+ | </ | ||
+ | =====Execution===== | ||
+ | Again, if there is associated code with the project, and you haven' | ||
+ | |||
+ | <cli> | ||
+ | pod01: | ||
+ | </ | ||
+ | |||
+ | =====Reflection===== | ||
+ | I learned that making an automated drawing, of anything, is very time consuming but yet very rewarding! I'll probably remember this for a long time. | ||