• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Wenn Applikation set bounds nicht unterstützt...

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.
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
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ß
 

r74

Golden Delicious
Registriert
20.12.12
Beiträge
9
@sedna: danke... Hab mich zu unpräzise ausgedrückt: Platzieren und auf eine bestimmte Grösse bringen... Noch eine Idee?
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
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ß
 

r74

Golden Delicious
Registriert
20.12.12
Beiträge
9
@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?
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
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ß