AppleScript per ridimensionare le colonne del Finder

1

Stanco del dimensionamento approssimativo e semi-leggibile del Finder delle colonne di visualizzazione elenco, sto tentando di codificare una soluzione AppleScript. Omissioni e bug nel dizionario del Finder rendono questo (per indulgere in understatement) una sfida. L'obiettivo è che qualsiasi finestra visualizzi una vista elenco minimalista con una singola sequenza di tasti, con tutte le colonne impostate sulla larghezza minima che evita il troncamento e la finestra stessa dimensionata per il suo contenuto. Qualcosa in questo senso ...

Le principali difficoltà che ho riscontrato finora sono nella classe colonna di opzioni di visualizzazione elenco di finestra del Finder .

  • visibile non riflette in modo accurato lo stato effettivo delle colonne
  • L'impostazione
  • visibile non ha alcun effetto
  • width può essere letto ma l'impostazione non ha alcun effetto

Né è d'aiuto il fatto che il pulsante di zoom del Finder non abbia fatto nulla di buono o utile dato che i telefoni cellulari avevano le dimensioni di una scatola da scarpe.

Qualcuno ha tentato un progetto simile o ha superato tutte le difficoltà sopra riportate? Si odia ricorrere all'ineleganza semi-affidabile dello scripting GUI.

    
posta Bryan 16.03.2018 - 23:14
fonte

1 risposta

0

Ho testato il seguente script (scritto per rispondere ad un'altra domanda qui - questa - È possibile modificare la larghezza di una colonna dell'elenco dei Finder in AppleScript?

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

Tale script imposterà la larghezza della colonna Nome, in una finestra visualizzata come lista, tanto grande quanto deve essere necessaria per adattarsi al nome più lungo di un elemento nella finestra. Funziona (per me) in macOS 10.11.6 e 10.12.6.

La chiave è riconoscere che non "imposta la larghezza della colonna del nome della finestra 1." Piuttosto, tu "imposta la larghezza della colonna del nome delle opzioni di visualizzazione elenco della finestra 1." Questo è pseudo-codice ma racconta la storia. Vedi lo script per i dettagli.

    
risposta data 06.05.2018 - 07:28
fonte

Leggi altre domande sui tag