Suppose one wants to be more focused, however there are so many possible distractions. Having a measure of how many possible distractions one has open can help - similar to how displaying fuel efficiency changes driving behavior.
Furthermore, one may have certain windows open when working in a non-impacting test environment, and other windows open when touching production. This monitoring can minimize the number of mistakes and improve the use of read-only accounts.
The below code runs by searching for screenshots placed in the same directory as the script - these are png files (note that they need to be re-copied each time the script is updated). It runs as:
Bordens-iMac% ./SikuliX-IDE.app/Contents/runIDE -r ./scan_desktop_impact.sikuli running SikuliX-IDE: -Xmx512M -Dapple.laf.useScreenMenuBar -Dfile.encoding=UTF-8 -Dsikuli.FromCommandLine -jar ./SikuliX-IDE.app/Contents/sikuli-ide.jar -r ./scan_desktop_impact.sikuli [info] add hotkey: ⌃ F5 Press Control-F5 to quit _______________ **** _______________ ** _______________ *
Every 3 seconds the code prints two lines - a line of underscores for the number of screenshots in the directory, and a star for each of the screenshots that are matched. A video of this is:
The code is:
from sikuli import *
import sys
import os
# Scan a directory for images and show the number of counts of matching on the screen.
# Exit when Control-F5 is hit.
Settings.UserLogs = True
Settings.UserLogTime = True
# Added hotkey to quit easily
# http://doc.sikuli.org/globals.html#listening-to-global-hotkeys
def quitFromKey(event):
Debug.user("User selected to exit")
exit(0)
# exit # stop the current script, using exit(0) will close the IDE.
# When the user pressed Ctrl+F5 exit this script
Env.addHotkey(Key.F5, KeyModifier.CTRL, quitFromKey)
print "Press Control-F5 to quit"
# Revert this with:
# Env.removeHotkey(Key.F5, KeyModifier.CTRL)
# run for 8 hours, sleeping every 3 seconds.
# run_time = 60 / 3 * 60 * 8
# run for 25 minutes - 1 pomodoro
run_time = 25 * 60 / 3
while run_time > 0:
count = 0
found_images = 0
for f in os.listdir(getBundlePath()):
# Debug.user(f)
if f.find(".png") != -1:
count = count + 1
if exists(f):
found_images = found_images + 1
# Debug.user("Found a prod image")
if(count == 0):
print "ERROR: Images not found - place files in ",getBundlePath()
else:
print " ","_" * count
spaces = " " * (count - found_images)
stars = "*" * found_images
print spaces,stars
sleep(3)
run_time = run_time - 1
exit(0)