Kann das Download-Popover-Fenster von Safari breiter gemacht werden?

Wie kann die max. Breite (feste Breite≈425) des Download-Popover-Fensters von Safari breiter gemacht werden?

Gibt es eine Möglichkeit, Safaris "Download-Pop-Over-Fenster" in irgendeiner Weise zu erreichen, damit seine maximale Größe größer als 425 px ist und längere Dateinamen nicht mehr abgekürzt werden?
Vielleicht über AppleScriptObjC?

[[Antworten: Bisher (ohne Verwendung von AS-objC) sind nur drei "Workarounds" entstanden ...

  • Original Workaround #1 ... eine Mischung aus (do) ShellScript (cat/sed), AS, Html und Automator
  • Problemumgehung Nr. 1 ... verwendet nur Automator-Module, enthält aber auch das obige Shell-Skript
  • Workaround Nr. 2 ... mit direktem AS-Zugriff auf die plist-Datei von Safari, einem Dialog & einem "Button" in Safari

WA Nr. 2 ist mein Favorit; die "Fenster" der anderen sind flexibler. Beide verwenden Automator-Shortcuts. ]]

Ich bin mir nicht sicher, ob es funktioniert, aber manchmal haben Webbrowser eine Seite für Downloads, also würde ich es versuchen downloads://(wie bookmarks://)
Danke, IronCraftMan, aber leider funktioniert deine Idee nicht mit El Capitan's Safari ... obwohl das Lesezeichen Ding TUT.
Könnten Sie uns im Chatroom kontaktieren oder auf Meta fragen, wie Sie das beheben können? Es ist ein Chaos von einem Blog-Post und Q/A scheint an dieser Stelle etwas zerstört zu sein. Außerdem müssen wir Probleme auf Codeebene lösen und dies zum Stapelüberlauf bringen, wenn dies besser zu Ihrer Zielgruppe passt.
Du hast recht, ich nehme an, ich nutze diese Seite als eine Art "Notizbuch" für mich. Tatsächlich bin ich über so viele Problemumgehungen gestolpert, die Kombinationen aus Applescript- oder Automator- oder Inline-Shell-Skripten verwenden, dass ich möglicherweise einen klaren Pfad verloren habe. Aber BISHER wurde noch keine Antwort gepostet, die sich direkt dem Problem "Safari-Popover-Fenstergröße" nähert, fürchte ich ... Ich hätte nichts dagegen, wenn diese Frage überhaupt nach Stackoverflow verschoben würde.

Antworten (3)

Ursprüngliche Problemumgehung Nr. 1:

Das erste hier hat den Vorteil, nur eine Automator-Aktion zu verwenden und recht präzise Einstellungen des resultierenden Safari-eigenen Fensters zu ermöglichen. Das Endergebnis ist ein "Dienst" in den Menüs von Safari sowie eine Tastenkombination.
Diese Komponenten sind beteiligt:

  • Safaris " Download.plist " (in: Library/Safari)
  • Ein Shell-Skript , das cat & sed ausführt und die Eingabe der Plist-Datei in "Downloads1.html" filtert
  • Eine Html-Datei "Downloads2.html" mit Html-Tags Ihrer Wahl (ohne abschließende Tags: </...)
  • Ein AppleScript, das einen „do shell script“-Befehl enthält, der Safari „mitteilt“, eine
  • ... per Shellscript generierte Html-Datei "Downloads.html", um endlich …
  • Automator , um einen Workflow im Menü „ Dienste “ von Safari zu platzieren .

Dieser Code wird als Automator-Dienst ausgeführt (ohne „Ausführen“-Befehle ist es einfaches AppleScript):

on run {input, parameters} 
 -- [Only if needed, place: "LANG=C; LC_CTYPE=C; LC_ALL=C;" in front of "cd"]

    do shell script "cd ˜/Users/[myName]/Library/Safari/;
             rm Downloads.html;
             cat Downloads.plist | sed -n ' { s/.*Downloads/<p>D`load => /; ¬
                     s/.*Trash/<p>Trashed => / ; s/.*Movies/<p>Movies => /; ¬
                     s/mp4.*/mp4<p>/ p; }' > Downloads1.html';
             cat Downloads2.html Downloads1.html > Downloads.html;"

    tell application "Safari"
        make new document at end of documents with properties ¬
            {URL:"file:///Users/[myName]/Library/Safari/Downloads.html"} 
        set bounds of window 1 to {700, 62, 1280, 450} 
    end tell 
    return input 
end run

(Das Shell-Skript und "Neues Dokument erstellen ..." sind jeweils als Einzeiler gedacht.)

Integriert sind zwei "Filter" in den sed-Teil (.*Movies & .*Trash), sodass mein Browserfenster so aussieht (Sie können diese Filter bearbeiten oder/und Erweiterungen nach Bedarf hinzufügen):

+----------------------- Toolbar -------------------------+
|                                                         |
|  D'load => /Some_sinster_TV_series_S02E01_15.11.21_00-  |
|  40_BBC3_93_TVOON_DE.mpg.HQ.avi.otrkey                  |
|                                                         |
|  Movies => DS9.4.07_Little_green_men.mp4                |
|                                                         |
|  Trashed => /DS9.3.09_Defiant.mp4                       |
|                                                         |
|  Trashed => /DS9.3.07_Civil_Defense.mp4                 |
|                                                         |
+---------------------------------------------------------+

(Diese führenden Schrägstriche sind scheiße … aber schwer herauszufiltern.)

  • Die auskommentierte zweite Zeile kann benötigt werden oder auch nicht …
  • Ersetzen Sie [myName] durch Ihren eigenen Benutzernamen.
  • Um diesen Code als "Dienst" in Safari zu verwenden, müssen Sie ihn in ein Feld "AppleScript ausführen" im Automator einfügen. Speichern Sie es als "Workflow".
  • Sie können dann eine Verknüpfung erstellen (z. B.: opt-cmd-d), die es sofort ausführt (Systemeinstellungen / Tastatur / Verknüpfungen / Dienste).
  • Meine Lösung ist nicht wirklich ausgefeilt, aber ich habe viel über sed, awk, cat und AppleScript/Automator gelernt (gimped).
Ich habe Ihre Antwort ein wenig mit Codeformatierung aufgeräumt. Verwenden Sie kein HTML – dies ist ein Markdown-Editor. Fühlen Sie sich frei, weiter zu bearbeiten, wenn ich wichtige Informationen aus Ihrer Antwort verloren habe.
Vielen Dank grgarside. Ich konnte keine Möglichkeit finden, meine Mischung aus Shell und Applescript hier korrekt anzuzeigen, da sich all diese Sonderzeichen ziemlich seltsam verhalten, wenn sie hier gepostet werden. MEIN FEHLER ...
Hier ist eine kurze Anleitung zu Markdown . Wenn Sie zum Einrücken einer Zeile vier Leerzeichen verwenden, bleibt der Text erhalten. Vier Leerzeichen können mit der Symbolleistenschaltfläche oder ⌘K stapelweise eingefügt werden.
Ist dies einfacher, als einen Download-Ordner, der auf Fan-Ansicht eingestellt ist, in das Dock zu legen?
Ich habe diese Frage gerade als EDIT in meiner ursprünglichen Frage auf dieser Seite beantwortet. Ich habe gute Gründe, nicht alle Dutzende von Dateien in meinem Downloads-Ordner anzuzeigen ... ; -)

Problemumgehung Nr. 2

Meine bevorzugte Lösung verwendet Applescript, um direkt auf "Downloads.plist" zuzugreifen (kein Shell-Skripting) und platziert einen Link in der Favoritenleiste von Safari, um es Ihnen bequemer zu machen.
Zuerst speichern Sie diese Skripte im Ordner "~/Library/Scripts/Folder action scripts/", dann hängen Sie sie (Kontextmenü: Ordneraktionen konfigurieren) an einen neuen "Ordner1" irgendwo tief unten auf Ihrem Mac an.
Um sie zu aktivieren, adressieren Sie einen (bedeutungslosen) Dummy "Folder2" in "Folder1" über dieses Lesezeichen:

file:///Path/to/first/Folder1/Folder2   [place link in your favorites bar!]

Nun, was passiert:
- Der angeklickte Symbolleisten-Link öffnet "Folder1", weil der aufgerufene "Folder2" darin ist.
- So werden BEIDE angehängte Skripte gestartet, #-1 schließt das mit Lesezeichen versehene "Folder2"-Fenster ...
- ... als nächstes bestellt "System Events", um alle "DownloadEntryPath"-Elemente von Safari zu erhalten.
- Diese Pfade werden auf Name plus übergeordneten Ordner gekürzt und in einem "Dialog-Alarm" gesammelt.
- (Warten auf "Dialogfenster":) #-2-Skript verschiebt es sofort nach dem Popup nach rechts oben.

on opening folder this_folder
    tell application "Finder" to close front window
    tell application "System Events"
        set the plist_path to "~/Library/Safari/Downloads.plist"
        set the plist_file to property list file plist_path
        set downloadItems to property list items of property list item ¬
            "DownloadHistory" of plist_file
        set DL_display to ""
        set AppleScript's text item delimiters to {"/"}

        repeat with i from 1 to number of items in downloadItems
            set DL_item to (get text items -2 thru -1 of ((value of ¬
                property list item "DownloadEntryPath" of property ¬
                list item i of property list item 1 of plist_file) as string))
            set DL_display to DL_display & return & "[" & ¬
                text item 1 of DL_item & ":]" & return & text item 2 of ¬
                DL_item & return
        end repeat

        tell application "Finder" to display dialog DL_display as string ¬
            buttons {"Close"} default button 1 -- NEW: tell appl. "Finder" to
    end tell
end opening folder

Wenn Sie dieses zweite "Ordneraktionsskript" anhängen, verschiebt es den "Dialog" nach rechts/oben auf Ihrem Bildschirm:

on opening folder this_folder
    tell application "Finder"
        set screenRgt to bounds of the window of desktop
        set rightEdge to (item 3 of screenRgt) - 425
    end tell
    tell application "System Events" to tell process "Finder"
        repeat while not (exists window "Recent downloads")
        end repeat
        delay 0.1   -- wait (and make sure...) for "dialog window" !
        set position of window "Recent downloads" to {rightEdge, 61}
    end tell
end opening folder

Der einzige Nachteil dieser Lösung ist meiner Meinung nach, dass jeweils für einen Moment der geöffnete Ordner und die Warnung über Ihren Bildschirm "blitzen" ...

Problemumgehung Nr. 1

Da bisher keine Antwort erklärt hat, wie das Pop-Over-Fenster von Safari programmgesteuert beeinflusst werden kann:

Verwenden Sie nur Automator

Hier ist eine Möglichkeit, eine Liste "Letzte Downloads" anzuzeigen, die nur Automator verwendet .

  • Sie müssen AppleScript hier überhaupt nicht verwenden. Stattdessen werden 4 Module von Automator benötigt , um ausgeführt zu werden.
  • Es öffnet sich ein hübsch gerahmtes Browserfenster (im Automator-Stil).
    (Sie müssen jedoch eine „Downloads2.html“-Datei mit Ihren HTML-Tags ohne End-Tags in /Users/[myName]/Library/Safari platzieren.)
  1. Doppelklicken Sie nach dem Öffnen von File > New > Service in Automator auf:
    AutomatorDo Shell Script

    Fügen Sie als Nächstes den folgenden Code in das Fenster auf der rechten Seite ein:

    # only if needed, place as 1st line: LANG=C; LC_CTYPE=C; LC_ALL=C;
    
    cd /Users/[myName]/Library/Safari;
    cat -su Downloads.plist | sed -n  '{ s/.*Downloads/<p>D`load => / ; ¬
          s/otrkey.*/otrkey/ p; s/.*Trash/<p>Trashed => / ; ¬
          s/.*Movies/<p>Movies =>  /;  s/mp4.*/mp4<p>/ p; }' > Downloads1.html;
    rm Downloads.html;
    cat Downloads2.html Downloads1.html > Downloads.html;
    
  2. Doppelklicken Sie in der Aktionsliste von Automator auf Pause .

    Ich habe 0,1 / Sekunden gewählt , musste aber die Ignorieren-Eingabe von dieser Aktionsschaltfläche ( Optionen ) aktivieren. Ich habe festgestellt, dass Safari auf meinem Computer ein leeres Fenster anzeigt, wenn ich der nächsten Aktion keine Pause gönne…

  3. Fügen Sie Get Specific URLs aus der Aktionsliste von Safari hinzu. Entfernen Sie alle angegebenen URLs und wählen Sie die Schaltfläche [HINZUFÜGEN] . Dann schreibe:

    file:///Users/[myName]/Library/Safari/Downloads.html
    
  4. Der letzte Schritt besteht schließlich darin, im Safari-Fenster auf Website-Pop-Up zu doppelklicken . Meine Parameter:

    • Seitengröße: Benutzerdefiniert
    • Werte: 600 x 300
    • Position: Zentriert

    (Der Fokus von Safari verbleibt auf dem vorderen Fenster, Sie können also nicht „ESC“ drücken, um das Popup zu schließen.)

  5. Sie können Folgendes hinzufügen: Systemeinstellungen → Tastatur → Verknüpfungen → Dienste; (zB: opt-cmd-d).

(Schauen Sie sich das resultierende Fenster bei "Original Workaround #1" weiter oben an, da beide Beispiele identische Html-Dateien für ihr Aussehen verwenden!)