6 votes

Est-il possible de modifier la largeur d'une colonne de la vue de liste du Finder en AppleScript ?

Je veux créer un script AppleScript qui ouvre cinq dossiers prédéfinis dans cinq onglets différents dans une nouvelle fenêtre Finder avec des limites prédéfinies, puis déplace l'onglet actif de cette fenêtre vers l'onglet un. Je voudrais également que les noms complets des fichiers (des fichiers dans les cinq dossiers) soient affichés sans aucune troncature. J'utilise exclusivement la vue Liste dans Finder.

Cette dernière condition peut-elle être accomplie en AppleScript ou automatisée de quelque manière que ce soit?

La largeur par défaut de la colonne "Nom" est trop étroite ; les noms complets de mes fichiers sont toujours coupés. Pour résoudre ce problème, chaque fois que j'ouvre un dossier, je dois soit déplacer manuellement le séparateur "Nom" dramatiquement vers la droite, soit double-cliquer sur le séparateur lui-même (ce qui ajuste automatiquement la largeur pour afficher l'entrée la plus longue en entier).


Je comprends qu'il est impossible de changer la largeur par défaut de la colonne "Nom" en mode Liste sur un Mac. Sinon, je pourrais simplement définir la largeur par défaut de cette colonne comme étant plus grande et cette largeur serait définie comme étant la valeur par défaut pour tous les dossiers.

  • En maintenant la touche option enfoncée tout en déplaçant un séparateur de colonne (pour enregistrer sa largeur) est vain.

  • J'ai essayé de définir la taille de colonne plus large comme valeur par défaut en appuyant sur command + J dans Finder et en sélectionnant "Utiliser par défaut". Mais, cela n'a pas fonctionné.

  • J'ai essayé d'augmenter chaque valeur de largeur de "Nom" dans mon fichier com.apple.finder.plist puis de sauvegarder à nouveau le fichier, comme décrit dans le commentaire le plus récent de l'utilisateur azeotropo (de 2012) sur cette page web (de 2003). Mais, la vieille largeur étroite du "Nom" persiste.

OS X El Capitan, version 10.11.6.

0 votes

De ce que je sais, cela peut être automatisé en faisant glisser la souris ;) pas sûr que c'est ce que vous voudriez, cependant.

0 votes

Oui, j'ai essayé de trouver une solution AppleScript impliquant des clics de souris. Cependant, je n'arrive pas à le faire fonctionner correctement car les clics de souris basés sur le code sont très délicats et peu fiables.

3voto

Christian Boyce Points 1052

La réponse à la question sur la possibilité de changer la largeur d'une colonne de la vue en liste du Finder en AppleScript est OUI. La réponse à votre question sur l'utilisation d'AppleScript pour définir la largeur de la colonne du nom afin qu'elle soit suffisamment grande pour afficher les noms sans les tronquer est également oui. Je ne suis pas sûr de comment gérer les onglets dans la fenêtre du Finder, mais il semble que vous ayez déjà un script qui les gère.

Une grande surprise (pour moi) a été que j'ai dû fermer et rouvrir la fenêtre du Finder pour voir le changement.

Voici un script qui agit sur la fenêtre du Finder au premier plan. La largeur de la colonne "Nom" est définie comme étant de 7,5 * (le nombre de caractères dans le nom le plus long de la fenêtre). Ce n'est pas la largeur parfaite, mais cela fonctionne pour moi tant que j'utilise une police de 12 points dans le Finder. Nous définissons la largeur de la colonne comme un certain nombre de pixels, et chaque caractère occupe un nombre différent de pixels puisque le Finder n'utilise pas une police à largeur fixe, donc nous ne pouvons pas être exactement précis en définissant la largeur. Mais 7,5 * le nombre de caractères dans le nom le plus long semble fonctionner assez bien. Vous pouvez bien sûr l'ajuster.

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
    -- obtenir le nom le plus long (nombre de caractères)
    set longest_name to 0
    repeat with I from 1 to count of the_items
        -- vérifier les fichiers invisibles, que nous n'avons pas besoin de considérer
        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
    -- cela ne fonctionne que si la taille du texte est de 12. Le multiplicateur 7,5 pourrait être modifié
    -- si la taille du texte est différente.
    set desired_width to longest_name * 7,5
    set width of the_name_column to desired_width
    -- nous devons fermer et rouvrir la fenêtre pour voir les changements.
    -- il pourrait y avoir une commande "rafraîchir la fenêtre" mais je ne la connais pas.
    set the_target to target of the_window
    close the_target
    open the_target
end tell

0 votes

Je vous remercie de votre réponse, mais il semble que définir la largeur de la colonne ne fonctionne pas sur El Capitan (10.11.6).

0 votes

Je vais jeter un coup d'œil à 10.11.6 et je reviendrai vers toi.

0 votes

J'ai testé le script sur un Mac avec 10.11.6 et ça a fonctionné pour moi. Essayez de rendre la colonne Nom très large (beaucoup plus large que nécessaire) puis exécutez mon script. Vous devriez voir la fenêtre se fermer, puis se rouvrir avec une colonne Nom redimensionnée. Il devrait alors être évident que la largeur a changé.

2voto

wch1zpink Points 6067

Ce code suivant définira la largeur de la colonne du nom, en vue liste, pour qu'elle corresponde à la taille du nom de fichier le plus long dans chaque fenêtre ou dans chaque onglet de chaque fenêtre de l'application Finder. S'il n'y a pas de fenêtres Finder ouvertes, il ouvrira une nouvelle fenêtre Finder en vue liste et définira correctement la largeur de la colonne du nom.

Ce code nécessite l'utilitaire tiers, Cliclick.

“Cliclick” est l'abréviation de “Commande-Ligne Interface Clic”. C'est une petite application shell/Terminal qui émule des clics de souris ou des séries de clics de souris (y compris des doubles clics et des clics avec la touche Contrôle) à des coordonnées d'écran arbitraires. De plus, cela vous permet de déplacer la souris, d'obtenir les coordonnées actuelles de la souris, d'appuyer sur les touches de modification, etc.

C'est gratuit à télécharger mais c'est un don logiciel, et c'est facile à installer.

Sur mon système, j'ai le fichier cliclick dans le répertoire suivant : /usr/local/bin/. En raison de cet emplacement, dans mon code AppleScript et dans l'application Terminal, je dois utiliser le chemin complet vers cliclick pour appeler la commande. Par exemple : do shell script "/usr/local/bin/cliclick rc:." Dans AppleScript, cela indique à cliclick de faire un clic droit.

Cela fonctionne pour moi avec la dernière version de macOS Mojave.

Les coordonnées x et y utilisées dans ce script suivant ont été définies lorsque la résolution de mon écran était de 1280 x 800.

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

        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 Clic aux Coordonnées
end setColumnWidth

saisir la description de l'image ici

saisir la description de l'image ici

0 votes

Intéressant mais dans mes tests sous macOS High Sierra, il a échoué plusieurs fois, assez pour que je ne puisse pas le +1. Au fait, j'ajouterais l'option -r au command cliclick pour "Restaurer l'emplacement initial de la souris une fois terminé".

0 votes

En utilisant macOS High Sierra, je suis juste curieux de savoir exactement où le script est bloqué. Dans ma version du script, je l'ai configuré pour restaurer l'emplacement d'origine de la souris. Je l'ai omis car cela ne semblait pas utile puisque je l'exécutais via un menu de service... qui aurait été le dernier emplacement de la souris. Je ferai la mise à jour sous peu

0 votes

Tout en travaillant sur une fenêtre du Finder, il arrive parfois qu'il clique en fait sur une autre fenêtre d'application avec des conséquences non désirées. Trop tard ce soir pour que j'essaie et que je débogue, mais je le ferai demain si j'en ai l'occasion.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X