Ist es möglich, die Spaltenbreite einer Finder-Listenansicht in AppleScript zu ändern?

Ich möchte ein AppleScript erstellen, das fünf vordefinierte Ordner in fünf verschiedenen Registerkarten in einem neuen Finder-Fenster mit vordefinierten Grenzen öffnet und dann die aktive Registerkarte dieses Fensters auf Registerkarte eins verschiebt. Ich möchte auch, dass die vollständigen Dateinamen (der Dateien in allen fünf Ordnern) ohne Kürzung angezeigt werden. Ich verwende ausschließlich die Listenansicht im Finder.

Kann diese letzte Bedingung in AppleScript oder in irgendeiner Weise automatisiert werden?

Die Standardspaltenbreite "Name" ist zu schmal; Die vollständigen Dateinamen meiner Dateien werden immer abgeschnitten. Um dies zu beheben, muss ich jedes Mal, wenn ich einen Ordner öffne, entweder das Trennzeichen „Name“ manuell dramatisch nach rechts ziehen oder auf das Trennzeichen selbst doppelklicken (wodurch die Breite automatisch angepasst wird, um den längsten Eintrag vollständig anzuzeigen).


Meines Wissens nach ist es unmöglich , die Standardbreite der Spalte "Name" der Listenansicht auf einem Mac zu ändern. Andernfalls könnte ich einfach die Standardbreite dieser Spalte größer einstellen und diese Breite würde als Standard für alle Ordner festgelegt.

  • Das Gedrückthalten der option ⌥Taste beim Ziehen eines Spaltentrennzeichens (um seine Breite zu sparen) ist erfolglos.

  • Ich habe versucht, die breitere Spaltengröße als Standard festzulegen, indem ich im Finder command ⌘+ gedrückt Jund „Als Standard verwenden“ ausgewählt habe. Aber das hat nicht funktioniert.

  • Ich habe versucht, jeden Breitenwert "Name" in meiner Datei com.apple.finder.plist zu erhöhen und die Datei dann erneut zu speichern, wie im neuesten Kommentar des Benutzers azeotropo (ab 2012) dieser Webseite (ab 2003) beschrieben . Aber die alte, schmale "Name"-Breite bleibt bestehen.

OS X El Capitan, Version 10.11.6.

Soweit ich weiß, kann es durch Ziehen der Maus automatisiert werden ;) Ich bin mir jedoch nicht sicher, ob Sie das möchten.
Ja, ich habe versucht, eine AppleScript-Lösung auszuarbeiten, die Mausklicks beinhaltet. Ich kann es jedoch nicht richtig zum Laufen bringen, da codebasierte Mausklicks sehr pingelig und unzuverlässig sind.

Antworten (2)

Die Antwort auf das Thema Ihrer Frage "Ist es möglich, die Spaltenbreite einer Finder-Listenansicht in AppleScript zu ändern?" ist ja. Die Antwort auf Ihre Frage zur Verwendung von AppleScript, um die Breite der Namensspalte so einzustellen, dass sie groß genug ist, um die Namen ohne Abschneiden anzuzeigen, lautet ebenfalls Ja. Ich bin mir nicht sicher, wie ich mit den Tabs im Finder-Fenster umgehen soll, aber es hört sich so an, als hätten Sie ein Skript, das die Tabs bereits anspricht.

Eine große Überraschung (für mich) war, dass ich das Finder-Fenster schließen und erneut öffnen musste, um die Änderung zu sehen.

Hier ist ein Skript, das im vordersten Finder-Fenster ausgeführt wird. Die Breite der Spalte "Name" ist auf 7,5 * (Anzahl der Zeichen des längsten Namens im Fenster) festgelegt. Es ist nicht die perfekte Breite, aber es funktioniert für mich, solange ich 12-Punkt-Text im Finder verwende. Wir setzen die Breite der Spalte auf eine bestimmte Anzahl von Pixeln, und jedes Zeichen benötigt eine andere Anzahl von Pixeln, da der Finder keine Schriftart mit fester Breite verwendet, sodass wir beim Festlegen der Breite nicht genau richtig sein können. Aber 7,5 * die Anzahl der Zeichen im längsten Namen scheint ziemlich gut zu funktionieren. Du kannst es natürlich anpassen.

tell application "Finder"
    activate
    set the_window to window 1
    set current view of the_window to list view
    set the_options to list view options of the_window
    set the_name_column to first column of the_options whose name is name column
    set the_items to name of every item of the_window
    -- get the longest name (count of characters)
    set longest_name to 0
    repeat with I from 1 to count of the_items
        --check for invisible files, which we don't need to consider
        if character 1 of item I of the_items is not "." then
            if (count of characters of item I of the_items) > longest_name then
                set longest_name to count of characters of item I of the_items
            end if
        end if
    end repeat
    -- this only works if the text size is 12. The multiplier 7.5 could be changed
    -- if the text size is something else. 
    set desired_width to longest_name * 7.5
    set width of the_name_column to desired_width
    -- we have to close and reopen the window in order to see any changes.
    -- there might be a "refresh window" command but I don't know it.
    set the_target to target of the_window
    close the_target
    open the_target
end tell
Ich weiß die Antwort zu schätzen, aber es scheint, dass das set width of columnbei El Capitan (10.11.6) nichts bewirkt.
Ich werde mir den 10.11.6 ansehen und mich bei Ihnen melden.
Ich habe das Skript auf einem Mac mit 10.11.6 getestet und es hat bei mir funktioniert. Versuchen Sie, die Name-Spalte sehr breit zu machen (viel breiter als nötig) und dann mein Skript auszuführen. Sie sollten sehen, wie sich das Fenster schließt und dann mit einer geänderten Namensspalte erneut öffnet. Es sollte dann offensichtlich sein, dass sich die Breite geändert hat.
Hier ist ein GIF , das zeigt, was passiert, wenn ich Ihrem Vorschlag folge. Die Spaltenbreite wird immer noch nicht breiter.
Ihr Gif ist sehr hilfreich - danke. Ich denke, dass Sie in Ihrem Beispiel ein Element mit einem so langen Namen haben, dass mein Skript zusammenbricht. Es kann eine Grenze geben, wie breit eine Spalte in Bezug auf die gesamte Fensterbreite werden kann. Versuchen Sie es mit einem weniger extremen Fall und Sie sollten sehen, dass es funktioniert. Dann sollten wir gemeinsam in der Lage sein, die Extremfälle zu bewältigen.
Hier ist ein GIF , das zeigt, was passiert, wenn die Länge des Dateinamens weniger extrem ist. Immer noch nichts. Wenn die Länge des Dateinamens kürzer als die Standardspaltenbreite ist, wird die Spaltenbreite ebenfalls nicht nach links angepasst.
Das ist wirklich interessant. Ich frage mich, warum es bei mir funktioniert und bei dir nicht. Ich werde Ihnen ein Gif machen, um es zu demonstrieren.
Hier ist ein Video, das zeigt, wie es hier funktioniert. vimeo.com/268401842
Vielen Dank für die Bereitstellung der Videoaufzeichnung. Ich sehe, dass das Skript auf Ihrem Computer wunderbar funktioniert. Sehr eigenartig...
Gute Nachrichten! Ich habe den folgenden Befehl in Terminal eingegeben, rm ~/Library/Preferences/com.apple.finder.plist( Quelle ), gefolgt von killall Finder( Quelle ), und Ihr Skript funktioniert jetzt. Ist es möglich, dass das Skript für längere Dateinamen funktioniert? Ich frage, weil die meisten meiner Dateinamen lang sind.
Tolle Neuigkeiten darüber, wie Sie das Skript mit Ihrer Methode "Werfen Sie die Präferenz weg" zum Laufen bringen. Es kann eine Begrenzung geben, wie breit die Namensspalte eines Finder-Fensters im Verhältnis zur Gesamtbreite des Finder-Fensters sein kann, in dem es sich befindet. Versuchen Sie, Ihr Fenster sehr breit zu machen, bevor Sie das Skript ausführen. Das könnte man natürlich auch scripten.
Ich habe die Linie verwendet tell application "Finder" to set the bounds of the front window to {259, 23, 3827, 666}, um das Fenster erfolgreich zu erweitern. Das Problem besteht darin, dass, sobald die Größe des Fensters auf seine ursprünglichen Koordinaten geändert wird, nachdem die Spaltenbreite "Name" festgelegt wurde, der Spaltenteiler "Name" ebenfalls nach links gleitet. Mit dieser Problemumgehung wird also nichts erreicht.
Haben Sie andere Ideen (wie Sie die Breite der Skriptspalte erhöhen können)?
Tut mir leid, ich habe keine andere Idee. Ich denke, wir haben getan, was wir mit Applescripting the Finder tun können. Vielleicht bringt ein Update für macOS eine verbesserte AppleScript-Unterstützung für den Finder und wir können es erneut versuchen.

Der folgende Code stellt die Namensspalte in der Listenansicht so ein, dass sie der Größe des längsten Dateinamens in jedem geöffneten Fenster oder jeder Registerkarte in jedem Fenster in der Finder-App entspricht. Wenn keine Finder-Fenster geöffnet sind, wird ein neues Finder-Fenster in der Listenansicht geöffnet und die Breite der Namensspalte entsprechend festgelegt.

Dieser Code erfordert das Dienstprogramm eines Drittanbieters, Clickick .

„Click“ ist die Abkürzung für „ Command - Line I nterface Click “ . Es ist eine winzige Shell-/Terminal-Anwendung, die Mausklicks oder eine Reihe von Mausklicks (einschließlich Doppelklicks und Control-Klicks) an beliebigen Bildschirmkoordinaten emuliert. Darüber hinaus können Sie die Maus bewegen, die aktuellen Mauskoordinaten abrufen, Modifikatortasten drücken usw.

Es kann kostenlos heruntergeladen werden, ist aber Donationware und einfach zu installieren.

Auf meinem System habe ich cliclickim folgenden Verzeichnis: /usr/local/bin/. Aufgrund dieser Position muss ich in meinem AppleScript-Code und in der Terminal-App den vollständigen Pfad verwenden, um cliclickden Befehl aufzurufen. Zum Beispiel:  do shell script "/usr/local/bin/cliclick rc:." In AppleScript wird gesagt cliclick, dass man mit der rechten Maustaste klicken soll.

Dies funktioniert bei mir mit der neuesten Version von macOS Mojave.

Die in diesem folgenden Skript verwendeten Koordinaten xund ywurden eingestellt, während meine Bildschirmauflösung 1280 x 800 betrug.

global thisWindow

tell application "Finder"
    activate
    if not (exists of Finder window 1) then
        make new Finder window to path to documents folder
    end if
    set theWindows to name of windows
    repeat with i from 1 to count of theWindows
        set thisWindow to item i of theWindows
        set index of Finder window thisWindow to 1
        tell its Finder window thisWindow
            set currentView to current view
            if currentView is not list view then
                set current view to list view
            end if
        end tell
        my setColumnWidth()
    end repeat
end tell

on setColumnWidth()
    tell application "System Events"
        repeat while not (exists of scroll area 1 of splitter group 1 of splitter group 1 ¬
            of window thisWindow of application process "Finder")
            delay 0.1
        end repeat
        set frameBounds to value of attribute "AXFrame" of UI element 2 of row 2 ¬
            of outline 1 of scroll area 1 of splitter group 1 of splitter group 1 ¬
            of window thisWindow of application process "Finder"
    end tell

    set x to (item 1 of frameBounds) - 1
    set y to (item 2 of frameBounds) - 13

    do shell script "/usr/local/bin/cliclick dc:" & x & "," & y -- Double Click At Coordinates
end setColumnWidth


Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Interessant, aber in meinen Tests unter macOS High Sierra ist es beim Testen einige Male fehlgeschlagen, genug, dass ich ihm nicht +1 geben kann. Übrigens würde ich dem Befehl die -r Option "Anfangsposition der Maus wiederherstellen, wenn fertig" hinzufügen. cliclick
Bei Verwendung von macOS High Sierra bin ich nur neugierig, wo genau das Skript blockiert wird. In meiner Version des Skripts habe ich es so eingestellt, dass die ursprüngliche Mausposition wiederhergestellt wird. Ich habe das weggelassen, weil es nicht nützlich erschien, da ich es über ein Servicemenü ausgeführt habe ... Das wäre die letzte Mausposition gewesen, an der ich das Update in Kürze vornehmen werde
Während es trotzdem in einem Finder-Fenster funktioniert, klickt es manchmal tatsächlich auf ein anderes Anwendungsfenster mit unerwünschten Folgen. Heute Abend ist es zu spät, um zu versuchen, es zu debuggen, aber ich werde es morgen tun, wenn ich eine Chance bekomme.
Ich habe wirklich nicht die Zeit, dies zu debuggen, aber ich habe noch etwas mehr damit gespielt und erhalte weiterhin unerwünschte Ergebnisse, wenn der Klick tatsächlich nicht auf das Finder-Fenster, sondern auf ein anderes Anwendungsfenster klickt, und auch, wenn ich mehr als ein Finder-Fenster geöffnet habe und auf verschiedenen Desktops, während eines der Fenster seine Namensspalte erweitert bekommt, das auf dem aktuellen Desktop, wechselt es dann zum anderen Desktop. Warum, wer weiß!? Fazit ist, während es in Ihrer Umgebung für Sie funktioniert, ist es in meiner Umgebung viel zu fehlerhaft und ich erwäge ernsthaft, diese Antwort deswegen abzulehnen.