Sonntag, 4. März 2012, 3:10 Uhr

Aktuell geöffnetes Fenster unter Mac OS X minütlich aufzeichnen

Seit mehreren Jahren zeichne ich jede Minute auf, welches Fenster auf meinem Mac OS X-Desktop aktiv ist. Ich nutze diese Aufzeichnungen nicht zuletzt dazu, um bei ungefähr zu wissen, wie lange ich für Kundenaufträge gearbeitet habe — und dementsprechend Rechnung zu stellen.

Das AppleScript lautet folgendermassen:

tell application "System Events"
	set app_name to name of item 1 of (every process whose frontmost is true)
end tell

tell application app_name
	try
		if (count of windows) > 0 then
			set mouseToolsPath to "usr:local:bin:MouseTools"
			set {mouseX, mouseY} to paragraphs of (do shell script quoted form of POSIX path of mouseToolsPath & " -location")
			
			set title to (app_name & "&title=" & name of window 1 & "&x=" & mouseX & "&y=" & mouseY)
		end if
	on error
		set title to app_name
	end try
end tell

Damit das Script auch gleichzeitig die Position des Mauszeigers erfasst, müssen noch die MouseTools heruntergeladen und — in meinem Fall — unter /usr/local/bin/ abgelegt werden.

Um dieses Script regelmässig auszuführen, habe ich mit der kostenpflichtigen Applikation Lingon einen launchd-Job erstellt (in der Steinzeit hat man noch auf Cron-Jobs zurückgegriffen), der jede Minute ausgeführt wird. Hierzu verwende ich ein bash-Script als Wrapper, um die Informationen an ein PHP-Script auf einem im Intranet stehenden Linux-Server weiterzuleiten:

#!/bin/sh

LOGGEDIN=`who | grep "^mario" | grep console | wc -l`
WGET="/opt/local/bin/wget"
#WGET=`which wget`

if [ $LOGGEDIN -lt 1 ];
then
        echo "User mario not logged in. Exiting."
        exit 0
fi

if [ ! -x "$WGET" ];
then
	echo "wget executable '$WGET' not found. Exiting."
	exit 1
fi

APP=`/usr/bin/osascript /usr/local/bin/FrontMostApplication.scpt`
#echo $APP

URL="http://tld/save.php?app=$APP"

#echo "Accessing URL '$URL' using $WGET"

$WGET -q -O /dev/null "$URL"

exit 0

Tags: , , , ,
Labels: Apple, Linux

Kommentar erfassen