@geschwindigkeit: hast schon mit osascript ausführen aus der kommandozeile versucht? als text oder scpt gespeichert... (würde mal beides versuchen)
(text)Code:osascript deinscript.applescript
oder
(scpt)Code:osascript deinscript.scpt
@auführen per shortcut
Benutzt du irgendetwas wie keyboardmaestro oder quicksilver oder sowas? damit wäre es ein einfaches das zu bewerkstelligen.
BetterTouchTool kann das übrigens auch (also irgendwas ausführen auf tastenkombi). Dann fällt aber osascript aus, allerdings kann es scpt's ausführen...
ah das wäre vielleicht noch ein tipp zum testen für die performance:
im applescripteditor, in den preferences, mach dir mal das script menü an. dann speicherst du dein script als scpt un legst es in ~/Library/Scripts ab und führst es dann über das scriptmenü aus.
Ergebnis 1 bis 10 von 20
- 27.07.2010, 19:09 #1
AppleScript für Fenstermanagement
Hi!
Zu aller erst möchte ich mal sagen, dass ich bei weitem kein AppleScript Guru bin, eher als Anfänger einzuordnen.
Ich will endlich mal ein bisschen automatische Fensterpositionierung haben, wie z.B. die Programme Cinch oder Divvy das machen.
Also dachte mir, dass man so ein ähnliches Fenstermanagement, zumindest vorerst für den Finder, bestimmt auch mit AppleScript erledigen könnte. So hab ich mal ein AppleScript geschrieben, das tatsächlich zu funktionieren scheint...
Jetzt geht es mir dabei vor allem um die Performance, d.h. wie führt man das Teil möglichst schnell aus?Code:-- ordnet 2 Finderfenster am oberen Rand an -- für eine Auflösung von 1920x1200 set screen_width to 1920 set screen_height to 1200 set dock_height to 150 -- mit etwas Freiraum set margin_west to 150 -- Seitenabstand links set margin_east to 230 -- Seitenabstand rechts -- Maße für Fenster set finder_width to (screen_width - (margin_west + margin_east)) / 2 set finder_height to ((screen_height - dock_height) / 2) tell application "Finder" -- kein Finderfenster vorhanden if not (the first window exists) then set window1 to make new Finder window set sidebar width of window1 to 100 set the target of window1 to (folder (path to home folder)) set the bounds of window1 to {margin_west, 0, margin_west + finder_width, finder_height} set window2 to make new Finder window set the target of window2 to (folder (path to home folder)) set the bounds of window2 to {margin_west + finder_width, 0, margin_west + finder_width * 2, finder_height} -- ein Finderfenster vorhanden else if not (the second window exists) then set the bounds of the first window to {margin_west, 0, margin_west + finder_width, finder_height} set window3 to make new Finder window set the target of window3 to (folder (path to home folder)) set the bounds of window3 to {margin_west + finder_width, 0, margin_west + finder_width * 2, finder_height} -- beide vorhanden else set the bounds of the first window to {margin_west, 0, margin_west + finder_width, finder_height} set the bounds of the second window to {margin_west + finder_width, 0, margin_west + finder_width * 2, finder_height} end if activate end tell
Ich hab es schon als Service probiert - zu langsam. Als Applikation gespeichert - schon schneller, aber wie startet man diese möglichst schnell und wenn es geht per Shortcut ? Das Teil ins Dock legen will ich auch nicht und Spotlight is auch nich so mein Ding.
Daher bin ich für alle Arten von Verbesserungsvorschlägen dankbar, d.h. falls No-Gos drin sind, gravierende Fehler oder einfach nicht performante Befehle. Auch Tipps zum AppleScript Stil oder wie ich die Applikation möglichst schnell starte wären sehr hilfreich.
Danke und Gruß,
Guy.brushIt's more fun to be a pirate than to join the navy.RTF Apfeltalk Wiki
- 27.07.2010, 20:12 #2The cause of the problem is:
Don't worry; it's been deprecated.
The new one is worse.
- 27.07.2010, 20:37 #3
Ja, das geht schon sehr fix, aber wie startet man das am besten? das Terminal hab ich ja nicht immer auf.
Ja, tatsächlich Alfred kann das (sowohl per default Suche als auch mit dem "run" Command) und auch nicht gerade langsam, daran kann ich mich glaub ich gewöhnen. Aber Shortcut wär evtl. noch besser.
Danke derweil.
It's more fun to be a pirate than to join the navy.RTF Apfeltalk Wiki
- 27.07.2010, 21:15 #4
hmm ich hab mir grad alfred angeguckt... der kann das nicht, was ich meinte.
haste nicht ne magic mouse oder so und hast lust auf bettertouchtool? damit könntest du es tatsächlich mit einer tastenkombi ausführen. oder eben quicksilver, keyboarmaestro oder... ähm... da gabs noch eins... moment.. ahc da gibts mehrere. buttler kannd as wohl auch. quickkeys ist für solche dinge auch sehr geil, aber auch sehr teuer.
ich hab lange quicksilver benutzt, um genau das zu machen, was du vorhast, also skripte und wasweißich mit nem keystroke zu versehen, war aber mit quicksilver dann irgendwann unzufrieden, weil es mir u.a. mehr als einmal meine mühsam konfigurierten actions gelöscht hat und bin zu keyboardmaestro gewechselt. ist zwar auch nicht günstig, aber ich habs's nie bereut. ich könnte ohne nicht leben
quickkeys ist aber noch ein tick geiler, finde ich, aber auch teurer... naja, kommt auch drauf an für was.
quicksilver, kennst du ja bestimmt, würde dir das, was alfred anbietet, auch zur verfügung stellen + shortcuts wie du es dir wünschst, allerdings ist die usability, imho, verglichen mit keyboard maestro und quickkeys, fürn po - leider.
ja weiß nicht, die zuverlässigen, die ich kenne, sind die teuren und um nur dieses eine script damit auszuführen (dabei bleibts aber nicht, wenn du sowas erstmal hast
), ist es ein bisschen mit kanonen auf spatzen geschossen... du weißt schon... The cause of the problem is:
Don't worry; it's been deprecated.
The new one is worse.
- 27.07.2010, 21:19 #5
hast du eigentlich schon folgendes mit den services versucht?
1. service ohne input, führt ein shellscript aus mit inhalt
osascript /kompletter/pfad/zu/deinem/script.scpt
2. service ohne input, führt ein apfelscript aus mit deinem script als inhalt
denen kannst du ja dann ein shortcut zuweisen... und vielleicht ist es dann trotzdem schnell genug...The cause of the problem is:
Don't worry; it's been deprecated.
The new one is worse.
- 27.07.2010, 22:14 #6
Gut, dass du mich nochmal daran erinnerst! Es klappt!

Das Problem war, dass ich das Script zuerst noch mit einem GUI Auswahl-Dialog verknüpft hatte, was den Service wohl um einiges verlangsamt hat. Nummer 1 bringt zwar nen Fehler, aber 2. funktioniert jetzt super und auch in angenehmer Zeit!
Hier meine Script-Variationen, mit denen ich nun (vorerst) wunschlos glücklich bin:
Das Script aus dem 1. Post mach übrigens das selbe, nur mit halber Finder Höhe...Code:-- Split Finder vertical Script Version 1.0 -- ordnet 2 Finderfenster vertikal mit voller Höhe an -- für eine Auflösung von 1920x1200 set screen_width to 1920 set screen_height to 1200 set dock_height to 150 -- mit etwas Freiraum set margin_west to 150 -- Seitenabstand links set margin_east to 230 -- Seitenabstand rechts -- Maße für Fenster set finder_width to (screen_width - (margin_west + margin_east)) / 2 set finder_height to ((screen_height - dock_height)) tell application "Finder" -- kein Finderfenster vorhanden if not (the first window exists) then set window1 to make new Finder window set sidebar width of window1 to 100 set the target of window1 to (folder (path to home folder)) set the bounds of window1 to {margin_west, 0, margin_west + finder_width, finder_height} set window2 to make new Finder window set the target of window2 to (folder (path to home folder)) set the bounds of window2 to {margin_west + finder_width, 0, margin_west + finder_width * 2, finder_height} -- ein Finderfenster vorhanden else if not (the second window exists) then set the bounds of the first window to {margin_west, 0, margin_west + finder_width, finder_height} set window3 to make new Finder window set the target of window3 to (folder (path to home folder)) set the bounds of window3 to {margin_west + finder_width, 0, margin_west + finder_width * 2, finder_height} -- beide vorhanden else set the bounds of the first window to {margin_west, 0, margin_west + finder_width, finder_height} set the bounds of the second window to {margin_west + finder_width, 0, margin_west + finder_width * 2, finder_height} end if activate end tell
Code:-- Split Finder horizontal Version 1.0 -- ordnet 2 Finderfenster horizontal mit voller Breite an -- für eine Auflösung von 1920x1200 set screen_width to 1920 set screen_height to 1200 set dock_height to 150 -- mit etwas Freiraum set margin_west to 150 -- Seitenabstand links set margin_east to 230 -- Seitenabstand rechts set pitch to 75 -- Abstand für Menüleisten -- Maße für Fenster set finder_width to (screen_width - (margin_west + margin_east)) set finder_height to ((screen_height - dock_height - pitch) / 2) tell application "Finder" -- kein Finderfenster vorhanden if not (the first window exists) then set window1 to make new Finder window set sidebar width of window1 to 100 set the target of window1 to (folder (path to home folder)) set the bounds of window1 to {margin_west, 0, margin_west + finder_width, finder_height} set window2 to make new Finder window set the target of window2 to (folder (path to home folder)) set the bounds of window2 to {margin_west, finder_height + pitch, margin_west + finder_width, finder_height * 2 + pitch} -- ein Finderfenster vorhanden else if not (the second window exists) then set the bounds of the first window to {margin_west, 0, margin_west + finder_width, finder_height} set window3 to make new Finder window set the target of window3 to (folder (path to home folder)) set the bounds of window3 to {margin_west, finder_height + pitch, margin_west + finder_width, finder_height * 2 + pitch} -- beide vorhanden else set the bounds of the first window to {margin_west, 0, margin_west + finder_width, finder_height} set the bounds of the second window to {margin_west, finder_height + pitch, margin_west + finder_width, finder_height * 2 + pitch} end if activate end tell
Alle einzeln als Service mit Aktion "Run AppleScript" gespeichert und mit Shortcuts versehen. Mir gefällts.Code:-- CenterFinder Version 1.0 -- zentriert das Finderfenster -- für eine Auflösung von 1920x1200 set screen_width to 1920 set screen_height to 1200 set dock_height to 150 -- mit etwas Freiraum set pitch to 230 -- zusätzlicher Abstand -- Maße für Fenster set finder_width to (screen_width - pitch) / 2 set finder_height to (screen_height - dock_height) / 2 tell application "Finder" -- kein Finderfenster vorhanden if not (the first window exists) then set window1 to make new Finder window set sidebar width of window1 to 100 set the target of window1 to (folder (path to home folder)) set the bounds of window1 to {(screen_width - finder_width) / 2, (screen_height - finder_height) / 2, (screen_width + finder_width) / 2, (screen_height + finder_height) / 2} -- ein Finderfenster vorhanden else set the bounds of the first window to {(screen_width - finder_width) / 2, (screen_height - finder_height) / 2, (screen_width + finder_width) / 2, (screen_height + finder_height) / 2} end if activate end tell
Es gibt bestimmt noch mehr nützliche Fensterarrangements.
Danke nochmal.
It's more fun to be a pirate than to join the navy.RTF Apfeltalk Wiki
- 27.07.2010, 22:31 #7
Hallo!
Ich habe mal kurz über die Skripte geschaut und mir sind 2 Dinge aufgefallen:
• Der Finder zählt ein wenig anders, als andere Programme: der kleinste mögliche Wert der y Achse ist dort 44 ( = Höhe der Menüleiste) und nicht 0.
• set sidebar width of window1 to 100 -- Seit 10.5 geht dieser Wert schon nicht mehr und dürfte dazu führen, dass deine Fenster ohne Toolbar geöffnet werden.
GrußGeändert von sedna (27.07.2010 um 22:52 Uhr) Grund: Gerade bemerkt, dass das Skript unter 10.6 läuft
- 27.07.2010, 22:39 #8
Hehe, Danke, ja das dachte ich mir schon, dass da was komisch läuft mit den Abständen, ich hab dann immer irgendwelche Pseudo-Abstände eingeführt, damit das dann einigermaßen hin haut. Ich verbesser es, wenn ich wieder Zeit und Lust hab.
Zu der Sidebar: Als ich den Befehl nicht drin hatte, hab ich bemerkt, dass die Sidebar in neuen Finderfenstern immer zu breit war. Mit dem Befehl wars besser und ich kann auch keinen Nachteil entdecken, es ist alles wo es sein sollte.
Hab mal eben ein Video erstellt:
Geändert von Guy.brush (27.07.2010 um 22:55 Uhr) Grund: Video hinzugefügt
It's more fun to be a pirate than to join the navy.RTF Apfeltalk Wiki
- 27.07.2010, 23:01 #9
Also das mit der "0" wird quasi automatisch "korrigiert". Ist also nur ein halber Fehler.
Und zur Sidebar: Ok. Wenn es denn so funktionert... Ich glaube, dass 135 der kleinste mögliche Wert ist.
Gruß
- 27.07.2010, 23:19 #10
@video&ergebnis: nice
The cause of the problem is:
Don't worry; it's been deprecated.
The new one is worse.


Zitieren
