Peter Fischer
Falls Sie sich mit dem Gedanken tragen, ein Skript zu schreiben, das ihren Desktop aufräumt, sind Sie hier gerade richtig.
In OS 9 lassen sich Objekte nicht per Skript positionieren, wenn bei den Darstellungsoptionen "Am Raster ausrichten" angewählt ist. Es erscheint folgende Fehlermeldung:
Das ist natürlich Humbug. Es handelt sich bei einer Datei, einem Alias oder einem Volume ja nicht um ein Fenster. Wir wollen schließlich nur deren Icons auf dem Desktop anordnen.
Hier ein kleines Skript zur Demonstration. Wählen Sie bitte in den Darstellungsoptionen "Am Raster ausrichten" aus. Ich möchte das hier nicht per Skript erledigen.
tell application "Finder"
if not (exists folder "Verschiebe mich") then
set NeuerOrdner to make new folder
set the name of NeuerOrdner to "Verschiebe mich"
set NeuerOrdner to folder "Verschiebe mich"
else
set NeuerOrdner to folder "Verschiebe mich"
end if
set ThePosition to position of NeuerOrdner
delay 3 -- Damit man die Sache besser beobachten kann
set hPos to (item 1 of ThePosition) - 50
set vPos to (item 2 of ThePosition) - 50
set ThePosition to {hPos, vPos}
set position of NeuerOrdner to ThePosition
end tell
Das Skript prüft zunächst, ob der Ordner "Verschiebe mich" existiert. Dieser Ordner soll per Skript verschoben werden. Wenn Sie das Skript jetzt starten, bekommen Sie die erwähnte Fehlermeldung zu sehen.
Die Lösung
...ist jedoch ganz einfach. Die Option "Am Raster ausrichten" können wir per Skript deaktivieren, also Ausrichtung "keine".
Es wird nicht erst lange geprüft, welche Option ausgewählt ist. Die aktuelle Einstellung schreiben wir einfach in eine Variable.
set myView to (spatial view arrangement of desktop)
Jetzt schalten wir die Symbolanordnung auf "keine". Es spielt keine Rolle, ob diese Einstellung evtl. bereits vorliegt.
set spatial view arrangement of desktop to not arranged
Nun können wir den Ordner verschieben lassen. Die Fehlermeldung bleibt uns erspart. Nachdem das geschehen ist, stellen wir die alten Einstellungen wieder her.
set spatial view arrangement of desktop to myView
Wenn wir das jetzt in unser Skript einbauen sieht das so aus:
tell application "Finder"
if not (exists folder "Verschiebe mich") then
set NeuerOrdner to make new folder
set the name of NeuerOrdner to "Verschiebe mich"
set NeuerOrdner to folder "Verschiebe mich"
else
set NeuerOrdner to folder "Verschiebe mich"
end if
set ThePosition to position of NeuerOrdner
delay 3 -- Damit man die Sache besser beobachten kann
set myView to (spatial view arrangement of desktop)
set spatial view arrangement of desktop to not arranged
set hPos to (item 1 of ThePosition) - 50
set vPos to (item 2 of ThePosition) - 50
set ThePosition to {hPos, vPos}
set position of NeuerOrdner to ThePosition
set spatial view arrangement of desktop to myView
end tell
Jetzt läuft unser Skript auch ohne Probleme.
So ganz ohne Grund gibt es diese Fehlermeldung jedoch nicht. Es ist zwar möglich, Fenster zu verschieben, sogar wenn "Am Raster ausrichten" aktiviert ist, wenn es sich jedoch um ein Popup-Fenster handelt, funktioniert das nicht. Deshalb sollten Sie, wann immer Sie per Skript ein Fenster positionieren wollen, zuerst prüfen, ob es kein Popup-Fenster ist.
Im folgenden Skript lasse ich alle normalen Fenster in eine Variable schreiben. Falls diese Liste leer ist, haben Sie kein normales Fenster offen. Dann ist es Zeit, per Skript etwas dagegen zu unternehmen.
tell application "Finder"
activate
set AllWindows to every container window whose popup is false
if AllWindows = {} then
set myWindow to container window of (open startup disk)
else
set myWindow to item 1 of AllWindows
end if
set ThePosition to position of myWindow
delay 3
set hPos to (item 1 of ThePosition) + 50
set vPos to (item 2 of ThePosition) + 50
set ThePosition to {hPos, vPos}
set position of myWindow to ThePosition
end tell
Nun wünsche ich Ihnen fröhliches Verschieben!
|