GeekTool - Scripte und Layouts

Von AppleSkript & Automator bis hin zu Objective C

Beitragvon Ham » So 5. Jul 2009, 13:50

Code: Alles auswählen
date +"%l:%M %p"


dürfte ja kein Problem sein, das am/pm jetzt groß ist ;)
stell dann auch ruhig mal dein setup als Bild hier rein...

Und bei Fragen, immer raus damit
Benutzeravatar
Ham
Junior Mitglied
Junior Mitglied
 
Beiträge: 135
Registriert: Mo 16. Jun 2008, 09:53

Beitragvon Dark_Scorpion » So 5. Jul 2009, 16:42

danke für die Uhr und hier ein Screenshot von mir.... ist nichts besonderes

Bild

ps. gibt's denn eine Möglichkeit für andere sprachen?
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Beitragvon Ham » So 5. Jul 2009, 17:15

is doch fesh..

Wegen der Sprache müssen wir wohl auf unforeseen warten, der ist hier wohl der einzige mit Durchblick (Anon im Grunde auch)

Ich würde jedoch sagen, da wir noch nichteinmal Umlaute darstellen können, wird das mit dem Persisch auch nichts... (sofern diese andere Schriftzeichen haben)

Wir können eben nur das ausgeben was der Terminal kann und ich glaube das ist aufs lateinische Alphabet, auf arabische Zahlen und die bekannten Schriftzeichen begrenzt....

Die einzige Idee die ich jetzt hätte wäre eine persische font
Benutzeravatar
Ham
Junior Mitglied
Junior Mitglied
 
Beiträge: 135
Registriert: Mo 16. Jun 2008, 09:53

Beitragvon unforeseen » Mo 6. Jul 2009, 11:56

Das Terminal kann UTF-8 ausgeben, das ist kein Problem, ich weiss aber nicht wie das GeekTool intern handhabt. Was willst du denn auf Persisch ausgeben?
Benutzeravatar
unforeseen
ehemaliger Moderator
ehemaliger Moderator
 
Beiträge: 16331
Registriert: Mi 1. Sep 2004, 07:24
Wohnort: Bern, Schweiz

Beitragvon Dark_Scorpion » Mo 6. Jul 2009, 13:50

na Wochentage, Monate und wenn es geht die zahlen.
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Beitragvon Anon » Mo 6. Jul 2009, 14:39

Hallo Dark_Scorpion
Dark_Scorpion hat geschrieben:na Wochentage, Monate und wenn es geht die zahlen.

Also leider kann ich kein Persisch.. und Google Translator kann auch kein Persisch. Daher habe ich es einmal mit Arabisch versucht:
Code: Alles auswählen
date "+%A" | sed -e 's/Montag/الاثني/;s/Dienstag/الثلاثاء/;s/Mittwoch/الأربعاء/;s/Donnerstag/الخميس/;s/Freitag/جمعة/;s/Samstag/السبت/;s/Sonnabend/السبت/;s/Sonntag/الأحد/;s/Monday/الاثني/;s/Tuesday/الثلاثاء/;s/Wednesday/الأربعاء/;s/Thursday/الخميس/;s/Friday/جمعة/;s/Saturday/السبت/;s/Sunday/الأحد/'

Je nach Spracheinstellungen des Mac nutzt das Terminal die lokale Sprache (bei mir deutsch), GeekTool hingegen nutzt Englisch. Daher habe ich beide Sprachen in den Code integriert. Das Terminal gibt jetzt den gesuchten Wochentag in Arabisch aus, nicht so jedoch GeekTool (gibt Kauderwelsch aus). Leider habe ich keine Möglichkeit gefunden, wie es sonst klappen könnte.

Auch nicht mit
Code: Alles auswählen
 | iconv -f utf-8 -t ucs-2-internal


Wer weiß weiter?
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon unforeseen » Di 7. Jul 2009, 16:18

Das hier dürfte die Lösung sein - GeekTool mit UTF-8 Unterstützung. :)

http://sites.google.com/site/lianxukeef ... ktool-utf8
Benutzeravatar
unforeseen
ehemaliger Moderator
ehemaliger Moderator
 
Beiträge: 16331
Registriert: Mi 1. Sep 2004, 07:24
Wohnort: Bern, Schweiz

Beitragvon Dark_Scorpion » Di 7. Jul 2009, 17:20

also irgendwie klappt das trotzdem nicht.
ich gebe das ein:
Code: Alles auswählen
date "+%A" | sed -e 's/Montag/دوشنبه/;s/Dienstag/سه شنبه/;s/Mittwoch/چهارشنبه/;s/Donnerstag/پنجشنبه/;s/Freitag/جمعه/;s/Samstag/شنبه/;s/Sonntag/یکشنبه/;s/Monday/دوشنبه/;s/Tuesday/سه شنبه/;s/Wednesday/چهارشنبه/;s/Thursday/پنجشنبه/;s/Friday/جمعه/;s/Saturday/شنبه/;s/Sunday/یکشنبه/'


dann kommt das raus:
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Beitragvon unforeseen » Do 9. Jul 2009, 10:43

Bei mir funktioniert das einwandfrei. Hast du nach der Installation auch neu gestartet?
Benutzeravatar
unforeseen
ehemaliger Moderator
ehemaliger Moderator
 
Beiträge: 16331
Registriert: Mi 1. Sep 2004, 07:24
Wohnort: Bern, Schweiz

Beitragvon Dark_Scorpion » Do 9. Jul 2009, 15:03

oh, das hatte ich vergessen. jetzt hab ich das nochmals probiert und es ging.
danke
kann man denn auch die Zahlen und Monate so ändern?
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Beitragvon Ham » Do 9. Jul 2009, 19:29

ja das geht auf genau dem selben weg mittels
| sed -e 's/setzt/ersetzt/g'
Benutzeravatar
Ham
Junior Mitglied
Junior Mitglied
 
Beiträge: 135
Registriert: Mo 16. Jun 2008, 09:53

Beitragvon Dark_Scorpion » Do 9. Jul 2009, 21:30

cool danke es hat geklappt. ;-D
hier ein screenshot....
Bild
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Beitragvon Gast » Fr 17. Jul 2009, 11:02

Ham hat geschrieben:bei der Uptime habe ich selber schon eine Lösung gefunden:

Code: Alles auswählen
uptime | awk '{sub(/[0-9]|user\,|users\,|load/, "", $6); sub(/mins,|min,/, "min", $6); sub(/user\,|users\,/, "", $5); sub(",", "min", $5); sub(":", "Std ", $5); sub(/[0-9]/, "", $4); sub(/Tagen,/, " Tagen ", $4); sub(/days,/, " Tagen ", $4); sub(/mins,|min,/, "min", $4); sub(" Std ,", " Std ", $4); sub(":", "Std ", $3); sub(",", "min", $3); print "Start vor: " $3 $4 $5 $6}'


jetzt hat man vorallem richtig XTage XStd Xmin


Ich klinke mich mal hier ein und habe zu dem Uptime-Code eine Frage: Wenn die Uptime-Anzeige unter einer Stunde ist, wird hinter "min" eine 1 angehängt. Sieht dann z.B. so aus: "Start vor: 57 min1".

Kann man das korrigieren (ich finde leider nicht heraus, wo im Code man da eingreifen müsste)?

Danke.
Gast
 

Beitragvon Ham » Fr 17. Jul 2009, 22:51

Ja, Ich habe das ganze selber schonmal geändert, dann die Änderung hier aber nicht reingestellt. Die saubere Ausgabe findest du hier:

Code: Alles auswählen
uptime | awk '{sub(/[0-9]|user\,|users\,|load/, "", $6); sub(/mins,|min,/, "min", $6); sub(",", "min", $5); sub(":", "Std ", $5); sub(/mins,|min,/, "min", $4); ; sub(" Std ", " Std ", $4); sub(/days,/, "Tage ", $4); sub(/days,/, "Tage ", $4); sub(":", "Std ", $3); sub(",", "min", $3); print $3 $4 $5 $6 " wach"}'  | sed -e 's/1Tage/1Tag /g' -e 's/min1/min/g' -e 's/usermin//g'


Ich weis auch nicht, warum er "min1" Ich glaube, dass hat etwas mit dem "user" zutun, da diese Shell Schnipsel eigentlich uptime (in einem ziemlich blöden Format) + User(zahl?) angibt...

dank -e 's/min1/min/g' tut er das jetzt nicht mehr, auch nicht die ersten sekunden nach dem Start ;-)

Und vergesst eure Bilder nicht.
Benutzeravatar
Ham
Junior Mitglied
Junior Mitglied
 
Beiträge: 135
Registriert: Mo 16. Jun 2008, 09:53

Beitragvon Gast » Sa 18. Jul 2009, 09:00

Guten Tag,

hier mein Code für eine simple iTunes Anzeige..

Code: Alles auswählen
# Song in iTunes
if [ "$(ps -Ac | grep ' iTunes$')" != "" ]; then
    if [ "$(/usr/bin/osascript << sendMsg
            tell application "iTunes"
              get player state
            end tell
sendMsg
)" = "playing" ] ; then
        iArtist=$(/usr/bin/osascript << sendMsg
                  tell application "iTunes"
                    get artist of current track
                  end tell
sendMsg);
        iSong=$(/usr/bin/osascript << sendMsg
                tell application "iTunes"
                  get name of current track
                end tell
sendMsg);
        iTunesMsg="$iArtist - $iSong";
    else
            iTunesMsg="not playing music";
    fi
else
    iTunesMsg="not running";
fi
echo "iTunes : $iTunesMsg";


cheers..
Gast
 

Beitragvon Anon » Sa 18. Jul 2009, 10:26

Hallo zusammen,

die uptime-Ausgabe war etwas tricky, aber hier ist meine Lösung (mit sed, "ich liebe mein sed")

Code: Alles auswählen
uptime | sed -e 's/.*up //;s/,...user.*//;s/1 day/1 Tag/;s/days/Tage/;s/hrs/Stunden/;s/:/ Stunden /;s/1 Stunden/1 Stunde/;s/^1 min/1 Minute/;s/mins/Minuten/;s/secs/Sekunden/;s/.*/Start vor &/;s/,//g;s/.*[0-9]$/& Minuten/'


Nach dem Hochfahren werden von uptime zunächst auch Sekunden ausgegeben, die erkennt das Script.

Ham hat geschrieben:Ich weis auch nicht, warum er "min1" Ich glaube, dass hat etwas mit dem "user" zutun, da diese Shell Schnipsel eigentlich uptime (in einem ziemlich blöden Format) + User(zahl?) angibt...

dank -e 's/min1/min/g' tut er das jetzt nicht mehr, auch nicht die ersten sekunden nach dem Start ;-)

Gute Idee, auch wenn das eher wie ein bugfix aussieht ;-)

Ich glaube auch, dass die "1" vom String "1 user" kommt. Das Problem war aus meiner Sicht, dass awk den String an allen Leerstellen auseinander schneidet. Jedoch gibt uptime verschiedene Outputs, z.B.
    11:15 up 47 secs, 2 users, load averages: 1,91 1,98 1,59
    11:15 up 1 min, 2 users, load averages: 1,91 1,98 1,59
    11:15 up 29 mins, 2 users, load averages: 1,91 1,98 1,59
    11:15 up 1 day, 22 mins, 2 users, load averages: 1,91 1,98 1,59
    11:15 up 2 days, 2 hrs, 1 min, 2 users, load averages: 1,91 1,98 1,59
    11:15 up 22:34, 2 users, load averages: 1,91 1,98 1,59
wie man sehen kann, wäre die Zahl der auseinander geschnittenen Einzelstrings verschieden, sodass die "1" (hier würde "2" angehängt werden, da "2 users" ausgegeben werden!) immer wieder auftauchen kann.

Vielleicht behebt ja mein kleines (kürzeres!) sed-Script das Problem. Probiert's aus und schreibt ob es klappt oder nicht.

Grüßt: Anon
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Ham » Sa 18. Jul 2009, 12:34

au ja... ich hab da wieder ein bisschen geschustert :D Ihr macht das immer sauberer

habe gerade noch beim Wetter Script was gesehen: "unknown precipitation" - aber unbekannter Niederschlag? Vielleicht hat jemand noch ne Idee

Und Ich hätte gern ein Script für die momentane aktuelle Temp. Also nur die Temp und nicht wie beim yahoo script "bewölkt" etc.
Benutzeravatar
Ham
Junior Mitglied
Junior Mitglied
 
Beiträge: 135
Registriert: Mo 16. Jun 2008, 09:53

Beitragvon Anon » Sa 18. Jul 2009, 19:44

Hey Ham, alter Faulheimer ;-)
Ham hat geschrieben:Ich hätte gern ein Script für die momentane aktuelle Temp. Also nur die Temp und nicht wie beim yahoo script "bewölkt" etc.

Aktuelle Temperatur:
Code: Alles auswählen
curl --silent "http://xml.weather.yahoo.com/forecastrss?p=GMXX0007&u=c" | grep -E '(Current Conditions:| C<BR)' | sed -e 's/<b>Current Conditions\:<\/b><br \/>//;s/<BR \/>//;s/\ C$/\°C/;s/[a-zA-Z]//g;s/ *//g;s/,//g;/^ *$/d;s/.*/&C/'

Anon
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Ham » Mi 22. Jul 2009, 16:50

naja Faul?! ;-D das is echt nicht so leicht zufinden, oder selber schreiben?! das wird nix...

Aber jetzt habe ich zwischen den Zahlen und dem °C so ein hässliches "Â" bekomm es auch mit sed bzw ins vorhandene sed nicht weg?

hier mal nen bild:
Bild

habe meiner Freundin nämlich auch mal eins zusammengestellt.. Wallpaper ist auch von mir

Aber danke mfg ham
Benutzeravatar
Ham
Junior Mitglied
Junior Mitglied
 
Beiträge: 135
Registriert: Mo 16. Jun 2008, 09:53

Beitragvon Anon » Mi 22. Jul 2009, 21:58

Hallo Ham, natürlich meinte ich es so, dass es nur eine kleine Änderung des Wetterscriptes erforderte.
Ham hat geschrieben:Aber jetzt habe ich zwischen den Zahlen und dem °C so ein hässliches "Â" bekomm es auch mit sed bzw ins vorhandene sed nicht weg?

Aber tatsächlich, das komische Zeichen kommt bei mir auch, zudem habe ich keinen kleinen Fehler entdeckt (und entfernt).

So klappts aber:
Code: Alles auswählen
curl --silent "http://xml.weather.yahoo.com/forecastrss?p=GMXX0007&u=c" | grep -E '(Current Conditions:| C<BR)' | sed -e 's/<b>Current Conditions\:<\/b><br \/>//;s/<BR \/>//;s/[a-zA-Z]//g;s/ *//g;s/,//g;/^ *$/d;s/.*/&\°C/' | iconv -f UTF-8 -t LATIN1


Gruß von Anon
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Ham » Di 28. Jul 2009, 23:34

Zuviele Löcher in Geektool? Definitiv, denn mir sind allein schon zweimal meine Setups abgeschmiert. Probiert Nerdtool - total genial!

Bild

Ich war auch erst skeptisch... aber da es eine ImportvonGeektool Funktion hat, kann man nichts verlieren... (Geektool besser vorher deaktivieren) bei mir hat es 1A geklappt.

Geektool 3.0 ist ja mittlerweile auch raus, wer es testet, getestet hat, kann ja mal berichten
ham
Benutzeravatar
Ham
Junior Mitglied
Junior Mitglied
 
Beiträge: 135
Registriert: Mo 16. Jun 2008, 09:53

Beitragvon Anon » Mi 29. Jul 2009, 20:28

Ich hab es getan:
Ham hat geschrieben:Geektool 3.0 ist ja mittlerweile auch raus, wer es testet, getestet hat, kann ja mal berichten

Funktioniert alles, nur alle Einstellungen sind weg. Mein doch recht komplex gewordener Desktop war auf einmal wieder "nackt". Die Bedienung ist zunächst gewöhnungsbedürftig, aber es lohnt sich. UTF-8 ist einstellbar, sodass
Code: Alles auswählen
| iconv -f UTF-8 -t LATIN1
wegfällt. Muss auch weg, sonst laufen die Scripte nicht. Jetzt kann man jedoch auch viele Sprachen, z.B. Persisch, Arabisch oder Japanisch einbinden.

Nur frage ich mich (und Ham) noch: wie ist das NerdTool?
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Ham » Mi 29. Jul 2009, 21:28

Ich muss sagen, durch die Import Funktion kein Risiko und nach dem Versuch auch ein durchweg positiver Eindruck.

das Bild nach dem Import:
Bild
keine Veränderung in Stil etc. - Alles wie vorher

Das GUI scheint nicht so schön daherzukommen wie bei Geektool 3.0, aber übersichtlicher
Nerdtool ist aber ein eigenständiges Programm, kein prefPane. Es wirkt auf mich um einiges aufgeräumter, stabiler und systemfreundlicher. Keine lauten Lüfter, bessere Aktualisierung und hoffentlich keine verschwindenden oder sich untereinander verschiebenden Scripts.
Wenn man alles eingestellt hat schließt man das Programm, die Scripte sieht man weiterhin.

ABER, es hat eben keine eigenen Sprachen und ich weis (noch) nicht wie es sich nach einem Neustart verhält. Man muss es wohl in die Programme verlegen die beim Systemstart mit starten, aber dann muss man es auch wieder beenden? Wie gesagt nicht getestet...

Anon, kannst du beide gleichzeitig laufen (also mehr "installiert") lassen? und gibt Geektool3 jetzt Umlaute aus?
Ich weis nicht, ob ich Geektool 3 mal testen sollte, aber nach Nerdtool hab ich ja nichts zu verlieren :D danke

Grüße
thomas
Benutzeravatar
Ham
Junior Mitglied
Junior Mitglied
 
Beiträge: 135
Registriert: Mo 16. Jun 2008, 09:53

Beitragvon unforeseen » Fr 31. Jul 2009, 08:34

Ham hat geschrieben:und gibt Geektool3 jetzt Umlaute aus?

Bei mir tut das schon die vorher verlinkte Version 2.1. 8)
Benutzeravatar
unforeseen
ehemaliger Moderator
ehemaliger Moderator
 
Beiträge: 16331
Registriert: Mi 1. Sep 2004, 07:24
Wohnort: Bern, Schweiz

GeekTool 3 vs. NerdTool

Beitragvon Anon » So 2. Aug 2009, 16:08

Hallo Thomas,
Ham hat geschrieben:Anon, kannst du beide gleichzeitig laufen (also mehr "installiert") lassen? und gibt Geektool3 jetzt Umlaute aus?

ich hab beide ausprobiert, man kann beide nebeneinander laufen lassen.

NerdTool importiert tatsächlich ganz unkompliziert alle GeekTool 2 Einstellungen. Das macht GeekTool 3 nicht (aus GeekTool 2). Die Oberfläche von NerdTool gefällt mir gut, insbesondere da man für das Script ein eigenes Fenster hat, das hält das Script übersichtlich. GeekTool 3 hat zwar auch ein eigenes Fenster, das man aber erst aufklicken muss.

Vorteil von GeekTool ist, dass es als PrefPane läuft, und mit dem System startet (sofern man das so einstellt). Dies macht NerdTool nicht. Zudem stürzte mir NerdTool während einer Stunde Testzeit 3 mal ab, das ist inakzeptabel. Schließlich stellt GeekTool 3 Umlaute dar, was in NerdTool (noch?) nicht implementiert ist.

Insgesamt gefällt mir GeekTool 3 besser, man muss es einmal ganz von vorne einstellen, alle Scripte einfügen. Dann läuft es jedoch unkompliziert und stellt Umlaute dar. Die von unforeseen verlinkte gepatchte Version von GeekTool 2.1 lief bei mir gar nicht, ich habe es zwei mal probiert.

Gruß von: Anon.
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon royalty » Sa 8. Aug 2009, 12:48

sehe ich das richtig, dass wenn man die Datum und Zeitanzeige in unterschiedlichen Farben und Schriftarten anzeigen möchte, diese dann jeweils in ein eigenes Shell Script packen müsste? .. oder kann man dies anders erledigen und beispielsweise für jede Zeile die Schriftart etc. mit angeben?
royalty
 

Beitragvon Anon » Sa 8. Aug 2009, 15:34

Hallo royalty,
royalty hat geschrieben:sehe ich das richtig, dass wenn man die Datum und Zeitanzeige in unterschiedlichen Farben und Schriftarten anzeigen möchte, diese dann jeweils in ein eigenes Shell Script packen müsste?

das siehst Du richtig.
Grüßt: Anon
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon unforeseen » So 9. Aug 2009, 11:38

Die Farben kannst du in der Bash ändern, wenn auch nur limitiert und doch ziemlich mühsam. :)

Code: Alles auswählen
echo -e "\033[32m>grüner Text<\033[0m"
Benutzeravatar
unforeseen
ehemaliger Moderator
ehemaliger Moderator
 
Beiträge: 16331
Registriert: Mi 1. Sep 2004, 07:24
Wohnort: Bern, Schweiz

Beitragvon Steinmeier » Di 18. Aug 2009, 20:29

Hallo,

ich habe diesen Code
Code: Alles auswählen
date '+%H:%M:%S'| sed  -e 's/01:/1:/g' -e 's/02:/2:/g' -e 's/03:/3:/g' -e 's/04:/4:/g' -e 's/05:/5:/g' -e 's/06:/6:/g' -e 's/07:/7:/g' -e 's/08:/8:/g' -e 's/09:/9:/g'

für die Uhrzeit,

leider wird für die Minuten von 01-09 die Null weggelassen.
Wie kann ich die Null hinzufügen?
Steinmeier
Besucher
Besucher
 
Beiträge: 8
Registriert: Di 18. Aug 2009, 20:26

Beitragvon Anon » Mi 19. Aug 2009, 21:32

Hallo Steinmeier,

wenn ich Dich richtig verstanden habe, willst Du eine Ausgabe der Uhrzeit im Format SS:MM:SS (Stunden:Minuten:Sekunden), wobei ganz am Anfang, also bei der Stunde keine Null vorangestellt werden soll, jedoch bei Minuten und Sekunden, oder?
Steinmeier hat geschrieben:leider wird für die Minuten von 01-09 die Null weggelassen. Wie kann ich die Null hinzufügen?

Falls ja, dann würde ich das so lösen:
Code: Alles auswählen
date '+%H:%M:%S' | sed -e 's/^0//'

Erklärung: Du willst die Null am Anfang weg, also suchst Du einfach nach einer Null am Anfang: Anfang ist bei regex ein "^", dann Null ist "^0". Jetzt die ganze Substitution für sed: 's/^0//', und zwar ohne das g am Ende, das ist nicht nötig da ja nicht weiter gesucht werden soll.

Half das? Fragt: Anon.
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Steinmeier » Do 20. Aug 2009, 06:29

@Anon

Besten Dank, es funktioniert
Steinmeier
Besucher
Besucher
 
Beiträge: 8
Registriert: Di 18. Aug 2009, 20:26

Beitragvon ~*Darkangel*~ » Do 20. Aug 2009, 10:25

Für Anfänger die mit Geektool noch nie oder kaum etwas gemacht haben ist der Thread nicht besonders verständlich.

Ich habe zwar auch schon einiges mit Geektool realiesiert, aber wie ich z.b die Wetteranzeige inkl Bild hinbekomme kein Plan. Habe bisher nur mein iTunes Cover, Track, Artist, Albenname, Uhrzeit und Datum darüber eingestellt.

Edit 1: Hab das Bild nun via php skript eingefügt.

Edit: So schaut im übrigen derzeit mein Desktop aus:

http://www.psnewz.de/Files/Bildschirmfoto2009-08-20.png
Zuletzt geändert von ~*Darkangel*~ am Do 20. Aug 2009, 18:47, insgesamt 2-mal geändert.
Benutzeravatar
~*Darkangel*~
Junior Mitglied
Junior Mitglied
 
Beiträge: 193
Registriert: Di 27. Mai 2008, 09:06

Kleine Einführung in Kommandozeilen-Programme für GeekTool

Beitragvon Anon » Do 20. Aug 2009, 17:55

Hallo Darkangel,
~*Darkangel*~ hat geschrieben:Für Anfänger die mit Geektool noch nie oder kaum etwas gemacht haben ist der Thread nicht besonders verständlich.

Du hast vermutlich recht. Dann lass uns doch weiter alle Scripte zusammentragen. Zudem könnte ja jeder sein (wenn auch nur bescheidenes) Wissen über curl, grep, sed und regex hier ausbreiten. Vielleicht auch Tricks und Code-Schnipsel.

Ich fang mal an:
curl (c-url) ist ein Programm, das Inhalte aus dem Internet holen, aber auch Inhalte in das Internet hochladen kann. Wie ein Browser, nur auf Kommandozeilen-Ebene. Kann man ja schön im Terminal testen (wie alle scripte hier!). Eigentlich nutze ich es nur so:
Code: Alles auswählen
curl --silent "http://www.google.de"

hier geht curl auf Google.de und gibt die erhaltene Datei aus, also in HTML.

Mit dem Pipe-Symbol (| der senkrechte Strich) kann man zwischen verschiedenen Kommandozeilen-Programmen Strings weitergeben. Die strings werden immer von links nach rechts weitergereicht:
Code: Alles auswählen
curl --silent "http://www.wasweissich.de" | grep ...

übergibt den HTML-Code an grep (und nicht umgekehrt).

Doch zuerst noch regex!
regex (regular expressions) ist ein kodifiziertes Suchsystem innerhalb von Zeichenfolgen (strings). Klingt kompliziert, sieht auch auf den ersten Blick kompliziert aus, aber man kann sich schnell einlesen. Zum Beispiel hier http://www.zytrax.com/tech/web/regex.htm
Mit regex hat man schon das wichtigste Werkzeug für GeekTool, da grep und sed zwei kommandozeilen-programme sind, die mit regex funktionieren. Hier kann man seine regex-schnipsel austoben lassen, und fast alles machen was man so machen wollen könnte (siehe bisherige Beiträge in diesem Thread).

grep nutze ich meist nur, um eine Zeile in einem Text zu suchen und auszuspucken. Wenn man z.B. mit curl einen langen HTML-Text aus dem Netz geladen hat, kann man mit grep eine Zeile suchen und den Rest des Dokumentes wegwerfen, und zwar so:
Code: Alles auswählen
grep -E 'Suchwort'


sed nutze ich sehr oft. Zum Beispiel um HTML-Code aus dem String zu werfen (sehr wichtiger Code-Schnipsel!):
Code: Alles auswählen
sed -e :a -e 's/<[^>]*>//g;/</N;//ba'

oder um nur die ersten (z.B. 5 Zeilen) zu behalten, den Rest wegzuwerfen:
Code: Alles auswählen
sed 5q

oder und vor allem, um String-Teile herauszuwerfen oder zu ersetzen. Das geht mit der hier so oft verwendeten Substitution mit 's///'.
ein Beispiel:
Code: Alles auswählen
echo 'Hallo Welt'

gibt "Hallo Welt" aus.
Code: Alles auswählen
echo 'Hallo Welt' | sed -e 's/Welt/MacLife/'

gibt "Hallo MacLife" aus. Das 's/' sagt sed: "es wird eine Subsitution!". Nach dem ersten Schrägstrich kommt das Suchwort, also hier "Welt". Dann wieder ein Schrägstrich mit nachfolgendem Ersetz-Wort, hier "MacLife". Am Schluss noch ein Slash, um das Ersetz-Wort zu beenden (können auch mehrere Wörter sein, also eigentlich Such- und Ersetz-Strings). Wenn man kein Ersetz-String hinschreibt, dann wird der Suchstring durch nichts ersetzt, also ausgeschnitten.
Code: Alles auswählen
echo 'Hallo Welt' | sed -e 's/Welt//'

ergibt daher "Hallo". Das Ausschneiden kann man verwenden, um alle unnötigen Dinge aus Strings herauszuschneiden und wegzuwerfen.

Mit längeren Strings wirds interessanter:
Code: Alles auswählen
echo 'Hallo Leser der kleinen MacLife Welt, Teil der kleinen GeekTool Welt' | sed -e 's/Welt/MacLife/'

gibt "Hallo Leser der kleinen MacLife MacLife, Teil der kleinen GeekTool Welt" aus. Aber am Ende steht doch nochmal "Welt", wie kriegt man die noch weg? Na mit dem kleinen g am Ende in der sed-Zeile! (hier gaanz hinten das kleine g, es heißt greedy, also gierig):
Code: Alles auswählen
echo 'Hallo Leser der kleinen MacLife Welt, Teil der kleinen GeekTool Welt' | sed -e 's/Welt/MacLife/g'

Das g sucht den ganzen string bis zum Schluss durch und ersetzt alle gefundenen Suchwörter.
Wenn man mehrere Substitutionen machen will, kann man die einzelnen sed-Befehle mit Semikolon hintereinander hängen:
Code: Alles auswählen
echo 'Hallo Leser der kleinen MacLife Welt' | sed -e 's/kleinen/großen/;s/Welt/Gemeinde/'

gibt eben "Hallo Leser der großen MacLife Gemeinde" aus. Nach und nach entstehen lange Scripte wie das Wetter-Script.

Am Ende meiner kleinen Einführung ein Beispiel:
Code: Alles auswählen
curl --silent "http://goingtorain.com/" | grep -E '<div id="answer">' -A 1 | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed -e 's/^[[:space:]]*//;s/yes/Regen/;s/no/kein Regen/;s/maybe/vielleicht Regen/;/^$/d'

Das Script geht mit curl auf die goingtorain-Seite, übergibt mit dem Pipe-Symbol an grep. Grep sucht eine Zeile, in der "<div...answer">" steht, nimmt noch die nächste Zeile dazu. Grep übergibt mit dem Pipe-Symbol an sed. Sed schmeißt erstmal allen HTML-Code raus, übergibt nochmal an sich selbst mit dem Pipe-Symbol (habe ich noch nicht mit Semikolon hinbekommen, hilfe!!). Dann sucht sed zunächst nach Leerzeichen am Anfang (^ heißt in regex Anfang!) und schmeißt die raus. Dann sucht sed nach Strings (yes, no, maybe) und ersetzt diese durch andere Strings (Regen, kein Regen, vielleicht Regen). Dann werden mit dem letzten sed-Befehl Leerzeilen entfernt. Jetzt sollte der Code für Euch lesbarer sein. Oder?

So, jetzt seid ihr dran!
Grüßt: Anon.
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Ham » Fr 21. Aug 2009, 21:33

@Darkangel: da bist du ja auch schon viel weiter als wir (ich).
Ich hätte auch gern ein Wetter Bild per PHP auf meinem Desktop - nur wo kostenlos hochladen welches script etc. ???

Wäre schön, wenn du den thread erweitern könntest und eine kurze Anleitung geben könntest.
Jetzt weiß ich auch wer mich angeschrieben hat ;-D

c'ya
Benutzeravatar
Ham
Junior Mitglied
Junior Mitglied
 
Beiträge: 135
Registriert: Mo 16. Jun 2008, 09:53

Beitragvon ~*Darkangel*~ » Sa 22. Aug 2009, 06:15

@Ham gar kein Problem ;) Dafür musst du mir aber mal sagen wo ich solche Hintergrundbilder wie du sie hast herbekomme. In meinen Bildern kann man die geeklets meistens nicht sehr gut unterkriegen.

Tutorial: Wie lasse ich mir mittels Geektool und php skript das Wetter anzeigen?

Bild

Was wird benötigt:

Mac inkl. Installierten GeekTool.
Einen Server, welcher php unterstützt. Wenn ihr keinen habt meldet euch bei mir ich hab noch platz genug ;)
Einen php editor, ein TextEditor geht selbstverständlich auch.
Eure Yahoo Wetter id, beginnend mit GMXX. Diese bekommt ihr in dem ihr auf http://weather.yahoo.com/ euren Standort eingebt und oben in der Adressleiste nachschaut.
Bild


Schritt 1:

Öffnet euer php bzw. Texteditor und fügt folgenden Code hinzu:

<?php
/* Seit euch sicher in $url eure Stadtdaten angegeben zu haben */

$url="http://weather.yahoo.com/forecast/DEINESTADT.html";

$ch = curl_init();
$timeout = 0; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

$divStart = "<div class=\"forecast-icon\"";
$strEnd = "'); _background-image/* */: none;";
$start = strpos($file_contents, $divStart) + 50;
$end = strpos($file_contents, $strEnd);
$length = $end-$start;

$imagepath=substr($file_contents, $start , $length);
$image=imagecreatefrompng($imagepath);


imagealphablending($image, true);
imagesavealpha($image, true);
header('Content-Type: image/png');
imagepng($image);
?>


Schritt 2:

Nun kopiert ihr die Stadtdaten von yahoo in eurem php Dokument und zwar in folgender Zeile :

$url="http://weather.yahoo.com/forecast/DEINESTADT.html";

hier ersetzt ihr nun DEINESTADT durch die erhaltene GMXX, bei mir z.b GMXX1464.

Zum Schluss speichert ihr das Dokument z.b mit wetter.php ab und lädt es auf eurem Server hochladen.

Schritt 3:

Öffnet Geektool und wählt ein Image Geeklet aus.
Bild
Dieses zieht ihr nun auf eurem Desktop. Im Properties Fenster des image geeklets gebt ihr nun eure Domain zum php skript an.

Bild

Zum Schluss stellt ihr noch eure gewünschte Refreshzeit ein und schliesst das ganze wieder.



Liste für php Skripte die genutzt werden dürfen:

Benutzeravatar
~*Darkangel*~
Junior Mitglied
Junior Mitglied
 
Beiträge: 193
Registriert: Di 27. Mai 2008, 09:06

Beitragvon Steinmeier » So 6. Sep 2009, 16:15

Hallo,

ich habe das Wetterscript mit meiner Stadt aktualisiert.
Code: Alles auswählen
<?php
/* Seit euch sicher in $url eure Stadtdaten angegeben zu haben */

$url="http://weather.yahoo.com/forecast/GMXX1502.html";

$ch = curl_init();
$timeout = 0; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

$divStart = "<div class=\"forecast-icon\"";
$strEnd = "'); _background-image/* */: none;";
$start = strpos($file_contents, $divStart) + 50;
$end = strpos($file_contents, $strEnd);
$length = $end-$start;

$imagepath=substr($file_contents, $start , $length);
$image=imagecreatefrompng($imagepath);


imagealphablending($image, true);
imagesavealpha($image, true);
header('Content-Type: image/png');
imagepng($image);
?>


Leider meldet Safari einen Fehler in Zeile 6.
Weiß jemand wo der Fehler liegt?

und
wäre es mit dem Geektool die Aktivitäten der Timemaschine anzeigen zulassen.
z.B. ob zur Zeit ein Backup erstellt wird oder
wann das letzte Backup gemacht wurde?

mfg
Steinmeier
Steinmeier
Besucher
Besucher
 
Beiträge: 8
Registriert: Di 18. Aug 2009, 20:26

Beitragvon Dark_Scorpion » So 6. Sep 2009, 17:05

hey Leute, ich habe mir heute die neue Version von Geektool heruntergelden und installiert und es klappt alles soweit gut. das einzige Plroblem ist, dass das Anzeigen von den Tagen nicht richtig klappen will. also in den voherigen version hab ich das hier eingegeben:

Code: Alles auswählen
date "+%A" | sed -e 's/Monday/دوشنبه/;s/Tuesday/سه شنبه/;s/Wednesday/چهارشنبه/;s/Thursday/پنجشنبه/;s/Friday/جمعه/;s/Saturday/شنبه/;s/Sunday/یکشنبه/'


und es klappte alles und die Tage wurden dann auf Persisch angezeigt, aber jetzt wird das immer auf deutsch angezeigt. was muss ich denn da ändern damit das klappt? :-/
danke im voraus

EDIT: ok hat sich erledigt, habs selber raus bekommen.
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Kalender mit "Null"

Beitragvon sina » Di 8. Sep 2009, 08:30

Hallo.

Ich habe dieses Code:
Code: Alles auswählen
cal | sed -e '1d' -e '2p;2p;2p;2p' | sed -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' | sed -e "s/^/ /;s/$/ /;s/ $(date +%e) /\|$(date +%e)\|/"


Möchte aber das er "Nullen" mit vorne anstellt.
Also 01 02 03 usw.

Könnte mir das bitte einer sagen?

Lieben Dank!

SiNa


PS.
Ich möchte als Schrift -Skia- .
Da ist es aber verschoben.
Hoffe es ist damit dann auch besser.
sina
 

Beitragvon Dark_Scorpion » Di 8. Sep 2009, 22:04

hi, ich habe die neue Version von GeekTool installiert und alles klappt bestens aber die Uhrzeit läuft nicht korrekt, also ich meine die Zeit stimmt nicht ganz.
woran kann das liegen?
Ps. ich verwende folgenden Code:
Code: Alles auswählen
date +"%l:%M %p"

bitte um schnelle Hilfe
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Beitragvon sina » Mi 9. Sep 2009, 06:29

Hi.

Was meinst du mit `die Zeit stimmt nicht ganz´?
Geht se vor, nach oder was ist damit?
Was für ein System hast du? (10.4 / 10.5 / 10.6? )

Bei mir geht der Code.
Dachte eigentlich es wäre eher dieser:
Code: Alles auswählen
date +"%H:%M %p"


An die Aktuallisierung (Refresh every) hast du gedacht?
sina
 

Beitragvon sina » Mi 9. Sep 2009, 06:31

Hi.

Was meinst du mit `die Zeit stimmt nicht ganz´?
Geht se vor, nach oder was ist damit?
Was für ein System hast du? (10.4 / 10.5 / 10.6? )

Bei mir geht der Code.
Dachte eigentlich es wäre eher dieser:
Code: Alles auswählen
date +"%H:%M %p"


An die Aktualisierung (Refresh every) hast du gedacht?
sina
 

Beitragvon Dark_Scorpion » Mi 9. Sep 2009, 13:28

ah sorry, also die Uhr bleibt nach dem einstellen immer stehen, also die geht gar nicht mehr weiter und jedes mal wenn ich das wieder einstellen will, korrigiert er das von alleine ohne dass ich was gemacht habe. Das Problem ist nur, dass es dann so bleibt und nicht mehr weiter läuft.
ich hoffe ich konnte es besser erklären.
PS. ich benutze 10.6

und was dem Code angeht:
wenn man
Code: Alles auswählen
date +"%l:%M %p"
anstatt
Code: Alles auswählen
date +"%H:%M %p"
schreibt dann ist die Uhr in 12std. format.

EDIT: ooooops, wie es scheint hatte ich vergessen zu refreshen :-[.
ich glaube bei dem früheren Version war das anders.
naja danke trotzdem ;-D
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Beitragvon sina » Mi 9. Sep 2009, 16:08

Prima wenns geht.

Hoffe es kann mir noch jemand bei meinem Problem helfen.

(und evtl. den doppelten Beitrag entfernen) :-)
sina
 

Beitragvon Anon » Do 10. Sep 2009, 08:01

Hallo SiNa,
nettes Script, das Du da gefunden hast. Die Nullen vorneweg sind einfach einzufügen, nutze dazu diesen Code:
Code: Alles auswählen
cal | sed -e 's/ 1 /01 /; s/ 2 /02 /; s/ 3 /03 /; s/ 4 /04 /; s/ 5 /05 /; s/ 6 /06 /; s/ 7 /07 /; s/ 8 /08 /; s/ 9 /09 /' | sed -e '1d' -e '2p;2p;2p;2p' | sed -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' | sed -e "s/^/ /;s/$/ /;s/ $(date +%e) /\|$(date +%e)\|/"

Wenn Du Dir den Code ansiehst, fällt Dir auf, dass die erste sed-Anweisung (sed -e 's/ 1 /01 /; s/ 2 /02 / ...) neu ist. Hier sucht sed nach einstelligen Zahlen zwischen 1 und 9, und ergänzt diese mit einer Null voran. Genaugenommen sucht er nach [Leerzeichen]1[Leerzeichen].

Mit der Schriftart ist es dagegen nicht so einfach. Es gibt welche, die haben eine feste Laufweite, d.h. jeder Buchstabe ist genau gleich breit. Die bekannteste davon ist vielleicht Courier. Aber hier z.B. ist nicht jeder Buchstabe gleich breit. Das >i< ist viel schmaler als das >O<, oder? Wenn Du also die Schriftart aus dem Forum hier nehmen wolltest, dann würde der Kalender verschoben sein. Auch mit Null. Denn >Mo< wird breiter sein als >Di<. Daher funktioniert der Kalender nur mit einer Schriftart mit fester Laufweite.

Grüßt: Anon.
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Anon » Do 10. Sep 2009, 08:29

Hallo Steinmeier,
liebe Grüße aus Berlin nach Baunatal bei Kassel!

Steinmeier hat geschrieben:Hallo,
ich habe das Wetterscript mit meiner Stadt aktualisiert.
Code: Alles auswählen
<?php
...
$url="http://weather.yahoo.com/forecast/GMXX1502.html";
...
?>


Das Script ist in Ordnung, aber es scheint nicht auf einem PHP-fähigen Server zu liegen. Aber das ist nicht schlimm, denn auf jedem Mac (ich weiß es sicher für OSX) ist ein voll funktionsfähiger, PHP-fähiger Apache-Server vorhanden! Mit etwas Aufwand kannst Du den starten, PHP aktivieren, und das Script in den richtigen Ordner verschieben, dann GeekTool darauf verlinken. Viel Erfolg!

Steinmeier hat geschrieben:und wäre es mit dem Geektool die Aktivitäten der Timemaschine anzeigen zulassen.
z.B. ob zur Zeit ein Backup erstellt wird oder
wann das letzte Backup gemacht wurde?

Prinzipiell ist das auch möglich. Ich selbst verwende Timemachine nicht, aber über http://www.google.com weiß ich, dass Timemachine in die Systemlog-Datei schreibt. Die liegt hier:
Code: Alles auswählen
/var/log/system.log

Der Prozess, der zum Backup gestartet wird heißt
Code: Alles auswählen
/System/Library/CoreServices/backupd
und nach dem kannst Du die system.log durchforsten. Wenn Du auf "Starting standard backup" stößt, und die Uhrzeit und Datum aus der Datei ausliest, dann hast Du den letzten Backup-Termin. Wenn Du auf "Backup completed successfully" stößt, dann hat das Backup funktioniert. Wenn Du das Script über GeekTool alle sagenwirmal 30 Sekunden ausliest, dann wirst Du auch das aktuelle Backup mit zufriedenstellender Aktualität darstellen können.

Ich hoffe das hilft Dir. Viel Erfolg wünscht: Anon.
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Dark_Scorpion » Do 10. Sep 2009, 13:13

es gibt anscheinend doch noch ein Problem. ich habe diesen Code für die Tage benutzt:
Code: Alles auswählen
date "+%A" | sed -e 's/Montag/دوشنبه/;s/Dienstag/سه شنبه/;s/Mittwoch/چهارشنبه/;s/Donerstag/پنجشنبه/;s/Freitag/جمعه/;s/Samstag/شنبه/;s/Sonntag/یکشنبه/'
um die Tage auf Persisch anzeigen zu lassen und bis vor ein paar Tagen hat das auch geklappt. Aber nach einem Neustart werden die Tage wieder auf Deutsch angezeigt.
kann mir einer Helfen? :-/
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Beitragvon sina » Do 10. Sep 2009, 19:38

Mensch Anon, danke!

Klappt nun soweit.
Allerdings musste ich den Teil mit der Fünf ändern. Er hat diese nur ohne Null angezeigt.

Code: Alles auswählen
cal | sed -e 's/ 1 /01 /; s/ 2 /02 /; s/ 3 /03 /; s/ 4 /04 /; s/ 5/05/; s/ 6 /06 /; s/ 7 /07 /; s/ 8 /08 /; s/ 9 /09 /' | sed -e '1d' -e '2p;2p;2p;2p' | sed -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' | sed -e "s/^/ /;s/$/ /;s/ $(date +%e) /\|$(date +%e)\|/"


Es ist das "Leerzeichen" (LZ) nach der 5 weg und das LZ nach der 05.
So gehts dann vollständig. Hoffe das ist korrekt.


Das mit der Schrift ist schon blöde.
Passt dann wieder nicht mit dem Wetter zusammen. :-/
Evtl könnte man das ja mit einer Tabelle richten?
So etwa?
| | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | |

Viele Grüße
SiNa
sina
 

Beitragvon Anon » Fr 11. Sep 2009, 12:29

Hallo SiNa,
sina hat geschrieben:Allerdings musste ich den Teil mit der Fünf ändern. Er hat diese nur ohne Null angezeigt.
Code: Alles auswählen
cal | sed -e 's/ 1 /01 /; s/ 2 /02 /; s/ 3 /03 /; s/ 4 /04 /; s/ 5/05/; s/ 6 /06 /; s/ 7 /07 /; s/ 8 /08 /; s/ 9 /09 /' | sed -e '1d' -e '2p;2p;2p;2p' | sed -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' | sed -e "s/^/ /;s/$/ /;s/ $(date +%e) /\|$(date +%e)\|/"

Es ist das "Leerzeichen" (LZ) nach der 5 weg und das LZ nach der 05.
So gehts dann vollständig. Hoffe das ist korrekt.

Oops, keine gute Idee. Der Grund für den 5er Bug ist, dass nach der 5 ein Zeilenumbruch kommt und kein Leerzeichen! Der 5. September ist ein Samstag, und der ist am Ende der Zeile. Gib mal im Terminal nur
Code: Alles auswählen
cal

ein, dann kannst Du den Zeilenumbruch sehen und siehst was ich meine. Das Problem bei Deiner Lösung ist, dass im nächsten Monat bei ner anderen Zahl der Zeilenumbruch steht, und das Script dann erneut versagt. Die Zeilenumbrüche werden jedoch im Script später alle in Leerzeichen umgewandelt, und zwar hier:
Code: Alles auswählen
sed -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /'

Daher ist es besser, den neuen sed-Code am Ende des Scriptes einzufügen, also wenn alle Zeilenumbrüche in Leerzeichen umgewandelt sind:
Code: Alles auswählen
cal | sed -e '1d' -e '2p;2p;2p;2p' | sed -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' -e '$!N;s/\n/ /' | sed -e "s/^/ /;s/$/ /;s/ $(date +%e) /\|$(date +%e)\|/" | sed -e 's/ 1 /01 /; s/ 2 /02 /; s/ 3 /03 /; s/ 4 /04 /; s/ 5 /05 /; s/ 6 /06 /; s/ 7 /07 /; s/ 8 /08 /; s/ 9 /09 /'

Für das Schriftartenproblem hab ich auch keine Lösung gefunden und schließlich das Kalenderprojekt für mich aufgegeben. Man könnte mit Tabulatoren arbeiten, aber mit denen hat sed offenbar so seine Probleme (siehe hier fast ganz unten im Text):
Die meisen Versionen von sed kennen '\t' (Tabulator) nicht.

Vielleicht fällt jemandem anders eine Lösung ein? Oder Du verwendest für alle Darstellungen, auch Wetterscript usw. nur Schriftarten mit fester Laufweite.

Es grüßt mal wieder: Anon
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Anon » Fr 11. Sep 2009, 12:35

Hallo Dark_Scorpion,
nach einem Neustart, sagst Du?
Dark_Scorpion hat geschrieben:Aber nach einem Neustart werden die Tage wieder auf Deutsch angezeigt.

Das könnte bedeuten, dass das von Dir zitierte Script nicht gespeichert wurde, und/oder nach dem Neustart nicht geladen. Schau doch mal in GeekTool nach, wie das Script aussieht, das läuft. Und sei sicher, dass es auch läuft.

Und ewig grüßt: Anon.
Benutzeravatar
Anon
Besucher
Besucher
 
Beiträge: 50
Registriert: Sa 13. Jun 2009, 09:40

Beitragvon Dark_Scorpion » Fr 11. Sep 2009, 14:16

also aus irgendeinen Grund funktioniert es nach dem update wieder. irgendwie komisch. naja Hauptsache es geht wieder.
danke trotzdem ;-D
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

VorherigeNächste

Zurück zu Skripte & Programmierung