• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Fensterlayout

-hacki-

Alkmene
Registriert
16.08.09
Beiträge
33
Hallo zusammen,

vlt. kann mir jemand kurz mit einem passenden Applescript aushelfen.

Ich möchte meinen Bildschirm (1280*800) für die Java-Programmierung wie folgt aufteilen:
- linke Hälfte (1280/2*800) --> jEdit
- rechts oben (1280/2*800/2) --> Terminal
- rechts unten (1280/2*800/2) --> Finder

Dock ist unten falls das wichtig ist, blendet sich aber automatisch aus, deswegen auch die Vollbild-Darstellung.

Dürft ja für einen von euch Profis kein Problem sein oder?

Also wär echt lieb und schonmal vielen Dank. Nach meinem kleinen Javakurs muss ich mich wohl mal mit Applescript beschäftigen, echt cool was man damit alles machen kann...

LG Felix
 

wami

Oberösterreichischer Brünerling
Registriert
15.12.08
Beiträge
714
nimm doch einfach den automator, dass hast du dir doch in zwei Sekunden zusammengeklickt...
 

-hacki-

Alkmene
Registriert
16.08.09
Beiträge
33
Hallo,

danke soweit. Wollte das aber mit Applescript lösen, nicht mit einem zusätzlichen Programm.

tell application "Safari"

activate

set the bounds of the first window to {0, 0, 1280 / 2, 800}

end tell

So funktioniert es zwar mit Safari, aber wenn ich zB Terminal oder jEdit einsetze, danngeht nichtsmehr... Woran liegt das denn?

LG
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Dann so
Code:
tell application "System Events"
	set jEProc to some process whose name contains "jEdit"
	tell jEProc
		tell window 1
			set position to {100, 0}
			set size to {1200, 800}
		end tell
	end tell
end tell
 

-hacki-

Alkmene
Registriert
16.08.09
Beiträge
33
Hallo,

so jetzt ordnen sich die Fenster wie gewollt an. Funktioniert aber nur wenn schon die entsprechenden Programme geöffnet sind.

Code:
tell application "System Events"
	set jEProc to some process whose name contains "jEdit"
	tell jEProc
		tell window 1
			set position to {0, 0}
			set size to {1280 / 2, 800}
		end tell
	end tell
end tell

tell application "System Events"
	set jEProc to some process whose name contains "Terminal"
	tell jEProc
		tell window 1
			set position to {1280 / 2, 0}
			set size to {1280 / 2, 800 / 2}
		end tell
	end tell
end tell

tell application "System Events"
	set jEProc to some process whose name contains "Finder"
	tell jEProc
		tell window 1
			set position to {1280 / 2, 800 / 2 + 17}
			set size to {1280 / 2, 800 / 2 - 17}
		end tell
	end tell
end tell

Geöffnet wird doch über:
Code:
tell application "..."
activate
end tell

Funktioniert aber wiederum weder mit Finder noch mit Terminal... :(

Danke mal soweit :) Vielleicht kannst du mir ja auch nochmal weiterhelfen ;)
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Ich denke ich würd's irgendwie so in der Art machen:

Code:
set fancyApps to {¬
{appName:"Terminal", wPos:{1280 / 2, 0}, wSize:{1280 / 2, 800 / 2}}, ¬
{appName:"Finder", wPos:{1280 / 2, 800 / 2 + 17}, wSize:{1280 / 2, 800 / 2 - 17}}, ¬
{appName:"jEdit", wPos:{0, 0}, wSize:{1280 / 2, 800}} ¬
}



repeat with aApp in fancyApps
mvWin(appName of aApp, wPos of aApp, wSize of aApp)
end repeat

return



on mvWin(procName, wPos, wSize)
tell app "system events"
repeat with i from 1 to 5
try
set aProc to (some process whose name contains procName)
set the frontmost of aProc to true --bring to front
exit repeat
on error
tell me to tell app procName to activate
delay 5
end try
end repeat

--check wincount
repeat until (count of windows of aProc) > 0
if (count of windows of aProc) < 1 then ¬
tell aProc
set its frontmost to true
keystroke "n" using {command down}
end tell
end repeat

tell aProc
tell window 1 of aProc
set position to wPos
set size to wSize
end tell
end tell
end tell
end mvWin


ist jetzt irgendwie schnell zusammengeschustert. Kann man sicherlich noch verbessern. Ein bisschen was musste ja auch noch tun ;)
Getestet hab ich's auch nicht. Aber sollte eigentlich klappen... :innocent: :-D
Auf eigene Gefahr, wa? ;)
 
Zuletzt bearbeitet:

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Axo... vergessen:

Funktioniert aber wiederum weder mit Finder noch mit Terminal...
Doch, das geht. Das Problem ist wahrscheinlich, dass bspw. das Terminal schon läuft aber halt kein Fenster hat, ergo kannste auch nix resizen/moven.
 

-hacki-

Alkmene
Registriert
16.08.09
Beiträge
33
Hallo,

danke an alles die soweit geholfen haben.

@Guy.brush:
Danke! Hab deinen Thread schon gesehen, aber ich hab zuwenig Ahnung deinen Quellcode zu verändern, damit er macht was ich will ;) xD

@fyysh:
Der Code funktioniert so halb. Terminal und Finder öffnet er und ordnet beide Fenster korrekt an. Dann will er jEdit öffnen, dabei hängt sich allerdings der ganze Mac auf :( Vlt findest du ja doch noch einen Fehler...


LG Felix
 
Zuletzt bearbeitet:

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Hmm... jetzt hab ich mir doch mal jEdit runtergeladen und Script per C&P ausprobiert... uhm.... funktioniert für mich genau so, wie es da steht.
Musst wohl selber debuggen.

Ich würd das debuggen mit nem einfachen
tell app "jEdit" to activate
anfangen
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
hmm vielleicht hat es sich auch den falschen Prozess gegriffen?

änder mal
set aProc to (some process whose name contains procName)
in
set aProc to (some process whose name is procName)



Oder du machst das Ganze mit Bundle Identifier:
Code:
set fancyApps to {¬
	{appBI:"com.apple.Terminal", wPos:{1280 / 2, 0}, wSize:{1280 / 2, 800 / 2}}, ¬
	{appBI:"com.apple.finder", wPos:{1280 / 2, 800 / 2 + 17}, wSize:{1280 / 2, 800 / 2 - 17}}, ¬
	{appBI:"org.gjt.sp.jedit", wPos:{0, 0}, wSize:{1280 / 2, 800}} ¬
		}



repeat with aApp in fancyApps
	mvWin(appBI of aApp, wPos of aApp, wSize of aApp)
end repeat

return



on mvWin(procBI, wPos, wSize)
	tell application "System Events"
		repeat with i from 1 to 5
			try
				set aProc to (some process whose bundle identifier is procBI)
				set the frontmost of aProc to true --bring to front
				exit repeat
			on error
				--tell me to tell application procName to activate
				tell me to do shell script "open -b " & procBI
				delay 5
			end try
		end repeat
		
		--check wincount
		repeat until (count of windows of aProc) > 0
			if (count of windows of aProc) < 1 then ¬
				tell aProc
					set its frontmost to true
					keystroke "n" using {command down}
				end tell
		end repeat
		
		tell aProc
			tell window 1 of aProc
				set position to wPos
				set size to wSize
			end tell
		end tell
	end tell
end mvWin
 

-hacki-

Alkmene
Registriert
16.08.09
Beiträge
33
Hi nochmal,

also der alte Code hat grad eben funktioniert, direkt danach leider wieder nicht... :(

ich teste mal den Neuen.

lg

Neuer Code:
Ging einmal, dann wieder nicht. Beim Fehlversuch kam so ein Dauerton, wie wenn man eine Taste gedrückt hält. Ich hoffe du weisst was ich mein...
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Vorsicht da war n Fehler drin.

Der Bundle Identifier von jEdit ist "org.gjt.sp.jedit", nicht "org.gjt.sp.jeditt".
 

-hacki-

Alkmene
Registriert
16.08.09
Beiträge
33
Ja diese Fehlermeldung kam beim ersten Start. Hab ich schon geändert... :)
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo!

Dein Dauerton kommt bestimmt vom "keystroke n"

Zu den Prozessen kann ich nur anmerken, dass, wenn man den Namen kennt, man diese auch direkt ansprechen sollte (also is statt contains)
Oder eben über Bundle Identifier...

Und: Terminal und Finder sind AppleSkript-fähige Programme. Denen kann man direkt befehlen, Fenster in einer bestimmten Größe zu öffnen.

Ich hätte das also etwas anders gelöst.
(Wobei, wenn man Spaces benutzt und Terminal oder jEdit schon geöffnet sind, die ganze Angelegenheit etwas komplizierter ausfallen würde)

(jEdit startet doch immer mit einem Fenster, oder?)

Code:
tell application "Finder"
	activate
	try
		close every Finder window
		set x to make new Finder window to folder "Documents" of home
	end try
	set bounds of x to {640, 444, 1280, 844}
end tell


tell application "Terminal"
	activate
	set bounds of window 1 to {640, 0, 1280, 400}
end tell


tell application "jEdit" to activate
tell application "System Events"
tell process "jEdit"
set w to false
repeat until w is true
try
window 1
set w to true
end try
end repeat
		
tell window 1
set position to {0, 0}
set size to {1280 / 2, 800}
end tell
		
end tell
end tell

Da jEdit doch so ein Java Programm ist, dauert es wohl ein wenig, bis es am Start ist. Deshalb die Schleife

@fyysh: Prozessname ist nicht immer gleich Programmname. Aber das spielt hier wohl keine Rolle, oder?


Gruß
 

-hacki-

Alkmene
Registriert
16.08.09
Beiträge
33
Hallo,

funktioniert soweit ganz gut, nur jEdit wird nicht geöffnet. Steht zwar oben in der "Menüleiste", aber das Programm an sich wird nicht geöffnet...
Ja, normalerweise startet jEdit in einem Fenster.

LG Felix
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
@fyysh: Prozessname ist nicht immer gleich Programmname. Aber das spielt hier wohl keine Rolle, oder?
hast recht und nope, in diesem fall nicht, da stimmt er überein.

@-hacki-
check mal ob jedit nicht irgendwo noch halbabgeschossen im hintergrund läuft. ^^
 

-hacki-

Alkmene
Registriert
16.08.09
Beiträge
33
Hi,

ähm nein, ich find zumindest nichts. Aktivitätsanzeige zeigt keine jEdit an...

lg

edit: so nochmal versucht. jEdit wird nicht geöffnet, Dauerton kommt, Mac hängt sich auf. Nur neustart über Ausknopf möglich...
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
und
open -b org.gjt.sp.jedit
im terminal klappt auch nicht?
(vorher jedit abschließen...)