GeekTool gir deg info på skrivebordet

GeektoolDe mest nerdete Mac-brukerne koser seg rett som det er i terminalen hvor man kan hente ut detaljert og interessant informasjon både om maskinen og andre ting fra servere samt resten av internett.

Visste du at du kan få denne informasjonen direkte på skrivebordet? GeekTool sørger for dette og mer til.

Det finnes tilnærmet likt uendelige muligheter i terminalen. Alt fra oppetid og overvåkning av nettverks- og prosessorbruk til værmelding og kalender kan man hente ut med enkle skripts. Og dermed kan også GeekTool vise det på skrivebordet.

GeekTool er gratis og installeres som et systemvalg. Det krever ikke plass i hverken Docken eller menylinjen.
Alt som vises med GeekTool kan tilpasses med tekstfarge, bakgrunnsfarge, størrelse, gjennomsiktighet, font og plassering på skjermen.

GeektoolDet er tre typer elementer GeekTool kan vise på skrivebordet:

File viser innholdet i tekstfiler. Praktisk for loggfiler så du alltid vet hva som skjer «under panseret». Loggfiler finner man i /private/var/log.

Shell er utvilsomt den kraftigste delen av GeekTool. Den viser outputen av et hvilket som helst shell-skript.

Image viser bilder. Det kan være både lokale bilder, som for eksempel en tilfeldig løkke av bilder fra en mappe, eller bilder fra nettet. Kan med hell brukes til tegneserier og overvåkning av servere.

GeekTool bruker veldig lite ressurser, men enkelte skripts krever mer av din maskin. Derfor er det en fordel å ha lav oppdateringsfrekvens slik at skriptet ikke kjører hyppigere enn nødvendig. Hvor ofte det kjøres bestemmer du under valget «Refresh every…». For å hindre skripts i å fortsette å kjøre om de ikke fullføres kan man sette «Timeout» til et sekund eller to. Kjør gjerne kommandoen i terminalen (Programmer/Verktøy) på forhånd for å se hvordan outputen blir og hvor lang tid den tar å fullføre.

Eksempler på bruk

Geektool

Fra øverst til venstre mot nederst til høyre:

Værbilde fra Yahoo Weather

Dette er egentlig to elementer. Et usynlig som henter ned bildet fra Yahoo sin vær-RSS (tilpass til ditt sted ved å endre http://weather.yahoo.com/norway/oslo-fylke/oslo-862592/ til ditt adressen for ditt sted):

curl --silent -o /tmp/weather.html http://weather.yahoo.com/norway/oslo-fylke/oslo-862592/?unit=c; curl --silent -o /tmp/weather.png $(grep "div\ class=\"forecast-icon\"\ style=\"background:url" /tmp/weather.html| awk -F"'" '{ printf $2 }');

Det andre elementet er en bilderamme som viser det nedlastede bildet fra forrige skript. Bildeadressen er file://localhost/tmp/weather.png.

Værmelding

Henter gjeldende temperatur og vær for ønsket sted. Bytt ut NOXX0029 med riktig kode for ditt sted. Koden finner du i RSS-feeden for ditt sted på Yahoo Weather.

curl --silent "http://xml.weather.yahoo.com/forecastrss?p=NOXX0029&u=c" | grep -E '(Current Conditions:|C<BR)' | sed -e 's/Current Conditions://' -e 's/<br \/>//' -e 's/<b>//' -e 's/<\/b>//' -e 's/<BR \/>//' -e 's/<description>//' -e 's/<\/description>//'

Nettverksnavn

Viser navn på Trådløst nettverk.

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | awk '/ SSID/{print "SSID: " $2}'

Intern IP

Dette er litt avhengig av nettverksporter på din maskin. Det kan hende du må bytte ut en0 med en1 eller liknende.

ifconfig en0 | grep "inet" | grep -v 127.0.0.1 | tail -1 | awk '{print "Intern IP: " $2}'

Ekstern IP

curl --silent http://checkip.dyndns.org | awk '{printf "Ekstern IP: "$6}' | cut -f 1 -d "<"

Ledig plass på harddisken

Denne kan gjentas om du har flere disker. Bytt ut disk0s2 med det som passer. Finn ut disknavnet ved å gi kommandoen df -hl i terminalen.

df -hl | grep 'disk0s2' | awk '{print $4"/"$2" ledig ("$5" brukt)"}'

Papirkurvstørrelse

du -sh ~/.Trash/ | awk '{print "Papirkurv: " $1}'

Geektool

Oppetid

uptime | awk '{sub(/[0-9]|user\,|users\,|load/, "", $6); sub(/mins,|min,/, "min", $6); sub(",", "min", $5); sub(":", "t ", $5); sub(/mins,|min,/, "min ", $4); ; sub(" t ", " t", $4); sub(/day,/, "dag ", $4); sub(/days,/, "dager ", $4); sub(":", "t ", $3); sub(",", "min ", $3); print $3 $4 $5 $6 " våken"}' | sed -e 's/1days/1day /g' -e 's/min1/min/g' -e 's/usersmin//g'

Nettverksbruk

Også her kan det hende må du bytte ut en0 med det som passer for deg.

INTERFACE=en0;
SAMPLE_A=(`/usr/sbin/netstat -ib | awk "/$INTERFACE/"'{print $7" "$10; exit}'`);
sleep 1;
SAMPLE_B=(`/usr/sbin/netstat -ib | awk "/$INTERFACE/"'{print $7" "$10; exit}'`);
BANDWIDTH_USAGE=(`echo "2k ${SAMPLE_B[0]} ${SAMPLE_A[0]} - 1024 / p" "${SAMPLE_B[1]} ${SAMPLE_A[1]} - 1024 / p" | dc`);echo " Ned: ${BANDWIDTH_USAGE[0]} Kb/s Opp: ${BANDWIDTH_USAGE[1]} Kb/s";

Batteristatus

Viser strømkilde med batterisykluser og prosentandel strøm som gjenstår.

my_ac_adapt=`ioreg -w0 -l | grep ExternalConnected | awk '{print $5}'`
if [ "$my_ac_adapt" == "Yes" ]
then
echo "Strøm : Ekstern"
else
cur_power=`ioreg -w0 -l | grep CurrentCapacity | awk '{print $5}'`
max_power=`ioreg -w0 -l | grep MaxCapacity | awk '{print $5}'`
bat_percent=`echo "scale=2;$cur_power / $max_power" | bc`
bat_percent=`echo "$bat_percent * 100" | bc | sed 's/.00//'`
cyc_count=`ioreg -w0 -l | grep "Cycle Count" | awk 'BEGIN { FS = "=" } ; {print $8}' | awk 'BEGIN { FS = "}" } ; {print $1}'`
echo "Strøm : Batteri ($bat_percent%)"
echo "Sykluser : $cyc_count"
fi

Sider med inspirasjon og skripts

Vi har også en tråd på forumet om GeekTool: Geektool scripts

PS: Skrivebordsbakgrunnen er forfatterens eget bilde og kan lastes ned på deviantArt med en CC-lisens.

lthorsen

• Download link is not working

David_Hansens bilde

David_Hansen

kan jo vise dere min første geektool skrivebord, skikkelig fargeklatt.. hehe

http://www.flickr.com/photos/baggen/4517902533/

lthorsen

http://projects.tynsoe.org/en/geektool/download.php

darkfame

Det kom jo ikke akkurat ut i går... men er utrolig genialt.

åttitre

Takk for tipset!

David_Hansens bilde

David_Hansen

nei men det har nok kommet mange nye apple brukere :) som meg

steinmbs bilde

steinmb

Ikke heeelt fri for bugs den ver3.RC5 versjonen de har liggende. På min maskin (MPB 10.6.3.x) og instl som lokal bruker slet den veldig og drev og hang seg opp og jeg måtte ta livet av den manuelt. Klarte ikke å lese en enkel loggfil engang.

Ver. 2.x virket, men er en 32bit pref.pane så kontrollpanelet må restartes når man endrer på noe så venter heller på 64bit versjonen som har bedre GUI.

OBS: Avinstalleren rydder ikke opp under Preference så pass på å rydd opp der manuelt om du vil fjerne de panelene for eller vil de ligge der likevell om du reinstal. osv. Se etter 2-3 filer med org.tynsoe.geektool.

Har gått tilbake til å bruke Apple sin Console som følger med OSX for loggfiler og for alt annet terminal. Skal teste den på nytt når de har fått banket ut disse buggene for ideen er bra :)

Dj bassmasters bilde

Dj bassmaster

Tror jeg holder meg til iStat Menus, det ser ryddigere ut og er lettere å forstå.

http://www.islayer.com/apps/istatmenus/

thomasbs bilde

thomasb

Et annet men veldig likt alternativ er NerdTool: http://www.macupdate.com/info.php/id/31909/nerdtool

@froskenfredrik Fint tips!

teoh

Min andre desktop(og nåværende) med GeekTool.

Mitt første forsøk

David_Hansens bilde

David_Hansen

Dem var clean og fin teoh.. noen annet enn mitt rot :)

froskenfredrik

@darkfame: Nei, GeekTool er ingen nyhet. Men ettersom det ikke fantes noen artikkel om programmet tenkte jeg det var en god mulighet til å vise det til de som kanskje ikke hadde hørt om eller kjente til mulighetene med GeekTool.

@steinmb: Jeg sitter også på 10.6.3 og opplever ingen problemer. Sikker på at det er GeekTool i seg selv som henger og ikke et skript? Det er riktignok en release candidate så enkelte bugs finnes nok.

@Dj bassmaster: For min del er iStat menus bare et supplement. Med GeekTool kan man virkelig gå inn i dybden. Prøv for eksempel å skrive sysctl -a hw i terminalen og se så mye saftig nerde-info du kan få ut om hardwaren din! Eller ps aux for en detaljert liste over prosessene som kjører! :D

Her finnes en fullversjon av mitt eget skrivebord.

stiamund

Får ikke den "værmelding" til å fungere jeg. Mulig jeg gjør noe feil men... får bare opp: grep: (Current Conditions:|C//: No such file or directory

ORoslands bilde

ORosland

Hvilken font har du brukt?

froskenfredrik

@stianmund: Ser ut til at "<" og ">" roter til html-formateringen av artikkelen. Har rettet på det nå så skriptet fungerer. Takk for heads up!

@ORosland: Fonten jeg har brukt heter Heiti SC.

Giltvedt

Om man har nettverksnavn, SSID, med mellomrom så vil nevnte scriptet i artikkelen kun printe det første ordet.

Det er sjelden man har mer enn ett ord i nettverksnavnet, men om det skulle forekomme mer enn ett så kan man tilføye følgende i "awk" kommandoen;

awk '/ SSID/{print "SSID: " $2" "$3" "$4}'

Nå kan man få printet ut fra ett til tre ord i SSID navnet.

Jeg er ikke så dyktig med terminalen og dette er den letteste løsningen. Regner med at det er en løsning som kan hente fram hele innholdet fra tegn $2 til slutten av linjen.

froskenfredrik

@Giltvedt: Helt riktig, godt observert. Hvis man vi bytte ut «SSID» med noe annet må man bruke koden du foreslår eller i artikkelen med de begrensningene det medfører.
Hvis man uansett ønsker at det skal vises som SSID: nettverksnavn kan man fjerne klammeparentesene med innhold i awk-kommandoen slik:

awk '/ SSID/'

Da ser hele kommandoen slik ut:

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | awk '/ SSID/'

Resultatet av dette er at hele linjen skrives ut, uavhengig av antall ord i nettverksnavnet.

Baika

Enkelt å greit :)

[url]http://bildr.no/view/627887

sags bilde

sag

@Baika

De ikonene du har i docken, er det en icon-pack? Hvilken? Er det slik at man bytter ut ett og ett ikon, eller kan man velge et helt sett på et vis?

Baika

@Sag

Bruker Candybar, så leiter jeg rundt på nettet etter pakker med ikoner. Alt kommer ikke fra en pakke da. Brukte vell rundt 20 forskjellige for å få den kombinasjonen der. :)

ORoslands bilde

ORosland

Lekte meg litt rundt og ble godt fornøyd med http://img21.imageshack.us/i/geektool1504102.jpg . Har tidligere bytta en del ikoner i docken og Home skriften i venstre hjørne kommer av navn funksjonen i Hyperspaces.

applecores bilde

applecore

Her er min desktop etter noen runder med Geektool og icalBuddy

Pio

Litt enklere værmeldingsskript (funnet her):

curl --silent "http://xml.weather.yahoo.com/forecastrss?p=noxx0029&u=c" | grep -e "Current Conditions" -A 1 | tail -n 1 | sed -e 's///'

Gir akkurat samme resultat som koden i artikkelen.

LekeFly

GeekTool sluker ram og cpu etterhvert.. helt til et punkt hvor det ikke går an og ha det kjørende..

Wackhys bilde

Wackhy

Da har du gjort noen spenstige innstillinger...

Kjetil Håkon Pe...

Hei,
Er det noen som klarer:

Kalender på desktoppen med mandag som første dag i uka og highlighted dagens dato?

Kjetil

Wackhys bilde

Wackhy

echo `date "+%d %B %Y"` | awk '{ print substr(" ",1,(21-length($0))/2) $0; }'; cal | awk '{ getline; print " Mo Tu We Th Fr Sa Su"; getline; if (substr($0,1,2) == " 1") print " 1 "; do { prevline=$0; if (getline == 0) exit; print " "substr(prevline,4,17) " " substr($0,1,2) " "; } while (1) }' | awk -v cday=`date "+%d"` '{ fill=(int(cday)>9?"":" "); a=$0; sub(" "fill int(cday)" "," ## ",a); print a }'

Kjetil Håkon Pe...

BRA! ...nesten. Får du til å skrive dagens dato med med feks. rød font. -- Og hva med localizing måned/dag. :)

macwerners bilde

macwerner

Noen som gidder gi en steg-for-steg forklaring på hvordan jeg får inn værmeldinga OG bildet fra yahoo (de bruker så pene ikoner) ... skjønner ikke mye av GeekTool... = (

unk1nds bilde

unk1nd

http://bendiksens.net/desktop.jpg

pengwen

Har installert Geektool3, men får ikke opp noe i properties-boksen

Noen som har forslag?

Edit: nm, sabla pebkac ;)

David_Hansens bilde

David_Hansen

dra ut enten File - Image eller Shell til skrivebordet

[url=http://bildr.no/view/631112]

Yrvinns bilde

Yrvinn

[quote="macwerner"]Noen som gidder gi en steg-for-steg forklaring på hvordan jeg får inn værmeldinga OG bildet fra yahoo (de bruker så pene ikoner) ... skjønner ikke mye av GeekTool... = (

Du finner en flott og enkel video her:
http://www.youtube.com/watch?v=bhOCd-pyCOY

Den hjalp meg masse :bitchin:

pengwen

Kan også anbefale http://www.yr.no/sted/Norge/Oslo/Oslo/Oslo/meteogram.png
*Kose yr*

Yrvinns bilde

Yrvinn

Fordelen med Yr sin, er jo at den faktisk viser været fremover.

Yahoo viser kun i "sanntid"...det har man vindu til :-P

Kjetil Håkon Pe...

Her har jeg laget, dvs modifisert et php-script jeg fant på nettet, et php script for GeekTool som er tilpasset norske forhold. Uken starter på mandag og måned/dager er på norsk.
Jeg har også lagt til slutten på forrige måned og begynnelsen på neste.

Se bilde:
http://khpe.net/NPF_forum/kalender.jpg

Enable PHP:

PHP er innstallert i Mac OS X som default, men ikke enablet. For å enable den må du editere (TextWrangler) litt i apache 2 config-fila (/etc/apache2/httpd.conf). -- Finn linja som loader PHP 5 modulen. Den ser slik ut:

#LoadModule php5_module libexec/apache2/libphp5.so

Den er kommentert ut. Fjern kommentar-tegnet (#). Slik at den ser ut som under:

LoadModule php5_module libexec/apache2/libphp5.so

(Klikk på ikonet: "blyant med rød strek over" i TextWrangler for å åpne fila for skriving)

LAGRE

etabler en php.ini fil (på terminalen):
sudo cp /etc/php.ini.default /etc/php.ini

Start Apache.

Gå til systemvalg og klikk på "Deling". Der krysser du an på "Webdeling". -- Dette starter Apache serveren.

Test om det virker:

Create a page called test.php, and type in the following code:
lag med en teksteditor (TextWrangler) en fil med følgende innhold:

<?php phpinfo(); ?>

Lagre den i:

Macintosh HD:Library:WebServer:Documents

Åpne følgende URL i WEB-leseren din:
http://localhost/test.php

Hvis du ser "PHP configuration screen", så er PHP/Apache oppe og kjører!

Mvh. Kjetil

------------cut----------
<?php

date_default_timezone_set("Europe/Oslo");
setlocale(LC_TIME, "no_NO");

$day_start = 0; // set this to select when the week starts; 0 = Monday, 1 = Sunday

$red = "\033[31m";
$green = "\033[32m";
$yellow = "\033[33m";
$reset_color = "\033[0m";
$Last_date_in_last_month = date("d", strtotime("-1 day", strtotime(date("Y-m-01"))));
$header_str_len = strlen(strftime("%B")) + strlen(" ") + strlen(strftime("%Y"));
$week_str_len = strlen('Uke Ma Ti On To Fr Lo So');
$j = date("w", mktime(0, 0, 0, date("n"), 1, date("Y"))) + $day_start;

for ($n = 0 ; $n < ($week_str_len-$header_str_len)/2 ; $n++) echo " ";

echo ucwords(strftime("%B")), " ", date("Y"), "\n";

echo $green, "Uke Ma Ti On To Fr Lø Sø\n", $reset_color;

printf("%s%3s%s", $green, date("W ", strtotime(date("Y")."-".date("m")."-".(string)1)), $reset_color);

for ($x = 2 ; $x <= $j ; $x++) printf("%s%3d%s", $yellow, $Last_date_in_last_month - $j + $x, $reset_color);

for ($i = 1 ; $i <= date("t") ; $i++) { //days of the month
if ($j == 1) echo $green, date('W ', strtotime((string)date("Y").'-'.(string)date("m").'-'.(string)$i)), $reset_color;

if ($i == date("j")) echo $red, (date("j") < 10) ? ' '.$i : ' '.$i, $reset_color;
else printf("%3d",$i);

if ($j == 7){ //end of the week
$j = 0;
printf("\n");
}
$j++;
}

$j = date("w", mktime(0, 0, 0, date("n"), 1, date("Y"))) + $day_start;

for ($x = 1 ; $x <= $j ; $x++) printf("%s%3d%s", $yellow, $x, $reset_color);

printf("\n");

?>
-------------cut-----------

mrPicattas bilde

mrPicatta

Etter mye prøving og strev, har jeg kommet fram til en genial måte å få ut de 5 mest CPU brukende programmene.
top -n5 -l2 -o-CPU -U username -stats command,cpu | tail -n5

Det jeg gjør er at top kjøres to ganger som må til for at CPU syklus og belastning skal regnes ut, når så dette er gjort, sendes de 5 mest krevende programmene sortert på CPU bruk til minnet/pipen. Det eneste av data som blir sendt for programmet er navnet på programmet command og cpu i % cpu. I pipen henter tail dataene, og skriver ut de 5 nederste linjene.

Når dette er satt inn i geektool er resultatet som vist:

Pilo

Noen som vet hvordan man får denne kalenderen til å starte uken med mandag ? Hvilke endringer må til ?

[url">http://flic.kr/p/9Rph2C

Kommando sitat start:

MONTH=$(date +'%B %Y')
OFFSET=$(((21-${#MONTH})/2))
WEEK="Su Mo Tu We Th Fr Sa Su"
PREV=$(cal -mj $(date -v -1m "+%m %Y") | grep .. | tail -n2)
CURR=$(cal | tail -n6)
NEXT=$(cal -mj $(date -v +1m "+%m %Y") | grep .. | tail -n6 | head -n2)
LINE=$((($(date +%e)/7)+2))

for ((i=0; i<$OFFSET; i++ ))
do
echo " \c"
done
echo ""$MONTH""
echo $WEEK $PREV$CURR$NEXT | sed -e s'/$/ /g' -e s'/ / /g' -e s'/\([^0-9">[0-9">[^0-9">\)/ \1/g' -e s'/ / /g' -e s"/\(.\{21\}\)/\1#/g" | tr -s '#' '\n' | sed -e s'/^/ /g' -e s'/Sa/Sa/' -e '3,5 s/ 1 / 1 /' -e '7,9 s/ 1 / 1 /' -e "$LINE,$(($LINE+2)) s/ $(date +%e | sed s'/ //') /$(date +%e | sed -e s'/ //' -e s'/\(.*\)/ \1 /')/"

Kommando sitat slutt:

  • Skriv ut artikkel
  • Abonner med RSS

Alt om iPad, iPhone og iOS

Nettradio i iTunes

Nettradio i iTunes
130 norske radiokanaler.
Få de mest populære norske, svenske og danske radiokanalene inn i en egen spilleliste i iTunes.
Oppdatert 13. mai