• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

Wenn Applikation set bounds nicht unterstützt...

  • Ersteller Ersteller r74
  • Erstellt am Erstellt am

r74

Golden Delicious
Registriert
20.12.12
Beiträge
9
Hallo Forum

"Sublime Text 2" lässt sich per AppleScript (unter 10.8.2) zwar starten, das Programmfenster lässt sich aber per set bounds nicht platzieren...
Was tun in solchen Situationen?

Danke.
 
Hallo,

das Programm ist wohl nicht AppleScript-fähig.
Wenn es wirklich nur um Platzieren und nicht um Größenänderung geht:

Code:
tell application "System Events" to tell process "Sublime..usw"
    set position of window "XY" to {0, 22}    
end tell

Gruß
 
@sedna: danke... Hab mich zu unpräzise ausgedrückt: Platzieren und auf eine bestimmte Grösse bringen... Noch eine Idee?
 
Ja schon ...
... aber ich kenne deinen Workflow nicht genau und kann nach der Art deiner Anfrage nur vermuten:
Du startest Sublime Text ohne zuletzt geöffnete Fenster und möchtest das mittig platzierte neue Fenster anpassen.

Die Werte für die Größe des neuen Fensters werden hier gespeichert:
~/Library/Application Support/Sublime Text 2/Settings/Session.sublime_session

Da das ein JSON-Dokument ist, muss/könnte man da mit z.B. sed rangehen:

Code:
[B]set[/B] [COLOR=#4f8f00]sess[/COLOR] [B]to[/B] "/Users/r74/Library/Application Support/Sublime Text 2/Settings/Session.sublime_session"
[B]set[/B] [COLOR=#4f8f00]newsess[/COLOR] [B]to[/B] "/Users/r74/Library/Application Support/Sublime Text 2/Settings/SessionNew.sublime_session"


[COLOR=#5E6161]-- als Einzeiler:[/COLOR]
[COLOR=#5E6161]--do shell script "cp " & quoted form of sess & space & quoted form of newsess & "; sed '/new_window_height/s/[0-9]\\{3,4\\}[.]0/600.0/;/new_window_width/s/[0-9]\\{3,4\\}[.]0/800.0/' " & quoted form of newsess & space & ">" & quoted form of sess & "; rm " & quoted form of newsess[/COLOR]


[COLOR=#5E6161]-- oder aufgedröselt:[/COLOR]

[COLOR=#5E6161]--kopiere sess nach newsess[/COLOR]
[COLOR=#012fbe][B]do shell script[/B][/COLOR] "cp " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]sess[/COLOR] & [COLOR=#812fdc]space[/COLOR] & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]newsess[/COLOR]


[COLOR=#5E6161]--ersetze in newsess nur in den Zeilen new_window_height und new_window_width alle 3 oder 4 stelligen Zahlen, gefolgt von einem Dezimalpunkt und einer 0[COLOR=#942193],[/COLOR] mit 600.0 bzw. 800.0 - schreibe das in sess[/COLOR]
[COLOR=#012fbe][B]do shell script[/B][/COLOR] "sed '/new_window_height/s/[0-9]\\{3,4\\}[.]0/600.0/;/new_window_width/s/[0-9]\\{3,4\\}[.]0/800.0/' " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]newsess[/COLOR] & [COLOR=#812fdc]space[/COLOR] & ">" & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]sess[/COLOR]


[COLOR=#5E6161]--lösche newsess[/COLOR]
[COLOR=#012fbe][B]do shell script[/B][/COLOR] "rm " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]newsess[/COLOR]
Pfade anpassen
und mit dem ersten Skript kombinieren


Das geht mit Sicherheit noch eleganter ...
Gruß
 
@sedna: Vielen Dank für diese Idee. Hab das soweit umgesetzt und bin auf zwei weitere Fragen gestossen.
1. Wie kriege ich es hin, dass das Sublime Text Fenster z.B. nur die rechte Bildschirmhälfte beansprucht? Ich suche also wirklich nach einem "set bounds"-Ersatz wo ich die Position der linken oberen Ecke, die Höhe und die Breite des Programmfensters bestimmen kann.
2. Ich brauche das ganze für mein MacBookPro an das ich auch mal einen zweiten Bildschirm anstöpsle. Ist es auch möglich, das Fenster auf den externen Monitor zu setzen wenn dieser vorhanden ist?
 
Hallo

zu 1)
tja, ich hätte mein Skript mal testen sollen ... System Events erkennt das Fenster gar nicht und kann es somit auch nicht verschieben
Da bleiben nur zwei Möglichkeiten: Du öffnest ein neues Fenster und schließt dann erst das Programm. Dann könnte man vor dem nächsten Start mit sed die ersten 4 Zahlen der folgende Zeile in Session.sublime_session verändern:
"position": "1 74 960 1104 0 0 1920 1178 "

Oder -- und das ist die einfachste Lösung -- nur halt nicht sauber:
Du erstellst dir eine (Art) Vorlage (bzw. eine für jedes Display) und kopierst diese immer vor dem Start von Sublime Text in den Settings Ordner:
Sublime Text öffnen, ein leeres Fenster positionieren (und nicht schließen), Sublime Text schließen, Session.sublime_session sichern

Bedenke die Nachteile, die entstehen könnten und ob du damit leben kannst.

Beispielskript für ein oder zwei Displays:

Code:
[B]set[/B] [COLOR=#4f8f00]sess[/COLOR] [B]to[/B] "/Users/r74/Library/Application Support/Sublime Text 2/Settings/Session.sublime_session"
[B]set[/B] [COLOR=#4f8f00]Template1[/COLOR] [B]to[/B] "/Users/r74/Library/Application Support/Sublime Text 2/Template1/Session.sublime_session"
[B]set[/B] [COLOR=#4f8f00]Template2[/COLOR] [B]to[/B] "/Users/r74/Library/Application Support/Sublime Text 2/Template2/Session.sublime_session"

[B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Image Events" [B]to[/B] [B]set[/B] [COLOR=#4f8f00]SecondDisplay[/COLOR] [B]to[/B] ([COLOR=#0433ff][B]count[/B][/COLOR] [COLOR=#0433ff][I]displays[/I][/COLOR]) > 1

[COLOR=#4F8F00][COLOR=#000000][B]if[/B] [/COLOR]SecondDisplay[COLOR=#000000] [B]then[/B][/COLOR][/COLOR]
[COLOR=#5E6161]--kopiere Template 2[/COLOR]
[COLOR=#812FDC][COLOR=#012fbe][B]do shell script[/B][/COLOR][COLOR=#000000] "cp " & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]Template2[/COLOR][COLOR=#000000] & [/COLOR]space[COLOR=#000000] & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]sess[/COLOR][/COLOR]
[B]else[/B]
[COLOR=#5E6161]--kopiere Template 1[/COLOR]
[COLOR=#812FDC][COLOR=#012fbe][B]do shell script[/B][/COLOR][COLOR=#000000] "cp " & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]Template1[/COLOR][COLOR=#000000] & [/COLOR]space[COLOR=#000000] & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]sess[/COLOR][/COLOR]
[B]end[/B] [B]if[/B]

[B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Sublime Text 2" [B]to[/B] [COLOR=#0433ff][B]activate[/B][/COLOR]

Gruß