¿Es posible cambiar el ancho de columna de la vista de lista del Finder en AppleScript?

Quiero crear un AppleScript que abra cinco carpetas predefinidas en cinco pestañas diferentes en una nueva ventana del Finder con límites predefinidos y luego cambie la pestaña activa de esta ventana a la pestaña uno. También me gustaría que los nombres de archivo completos (de los archivos en las cinco carpetas) se muestren sin truncamiento. Uso exclusivamente List View en Finder.

¿Se puede lograr esta última condición en AppleScript o automatizarse de alguna manera?

El ancho predeterminado de la columna "Nombre" es demasiado estrecho; los nombres de archivo completos de mis archivos siempre se cortan. Para solucionar esto, cada vez que abro una carpeta, tengo que arrastrar manualmente el separador "Nombre" dramáticamente hacia la derecha o hacer doble clic en el separador (que ajusta automáticamente el ancho para mostrar la entrada más larga en su totalidad).


Tengo entendido que es imposible cambiar el ancho predeterminado de la columna "Nombre" de la vista de lista en una Mac. De lo contrario, simplemente podría configurar el ancho predeterminado de esta columna para que sea más grande y este ancho se establecería como predeterminado en todas las carpetas.

  • Mantener presionada la option ⌥tecla mientras arrastra un separador de columnas (para guardar su ancho) es inútil.

  • Intenté configurar el tamaño de columna más ancho como predeterminado presionando command ⌘+ Jen Finder y seleccionando "Usar como predeterminado". Pero esto no funciono.

  • Intenté aumentar cada valor de ancho de "Nombre" en mi archivo com.apple.finder.plist y luego volver a guardar el archivo, como se describe en el comentario más reciente del usuario azeotropo (de 2012) de esta página web (de 2003) . Sin embargo, permanece el antiguo y angosto ancho de "Nombre".

OS X El Capitán, versión 10.11.6.

Por lo que sé, se puede automatizar arrastrando el mouse;) aunque no estoy seguro de si eso es lo que te gustaría.
Sí, he estado tratando de encontrar una solución de AppleScript que implique clics del mouse. Sin embargo, no puedo hacer que funcione correctamente porque los clics del mouse basados ​​en código son muy meticulosos y poco confiables.

Respuestas (2)

La respuesta al tema de su pregunta "¿Es posible cambiar el ancho de columna de la Vista de lista del Finder en AppleScript?" Es sí. La respuesta a su pregunta sobre el uso de AppleScript para establecer el ancho de la columna de nombre para que sea lo suficientemente grande como para mostrar los nombres sin truncarlos también es sí. No estoy seguro de cómo manejar las pestañas en la ventana del Finder, pero parece que ya tiene un script que aborda las pestañas.

Una gran sorpresa (para mí) fue que tuve que cerrar y volver a abrir la ventana del Finder para ver el cambio.

Aquí hay una secuencia de comandos que opera en la ventana del Finder que está más al frente. El ancho de la columna "Nombre" se establece en 7,5 * (número de caracteres en el nombre más largo de la ventana). No es el ancho perfecto, pero me funciona siempre que use texto de 12 puntos en el Finder. Estamos configurando el ancho de la columna en una cierta cantidad de píxeles, y cada carácter toma una cantidad diferente de píxeles ya que el Finder no usa una fuente de ancho fijo, por lo que no podemos estar exactamente en lo correcto al configurar el ancho. Pero 7.5 * el número de caracteres en el nombre más largo parece funcionar bastante bien. Puedes ajustarlo, por supuesto.

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
Agradezco la respuesta, pero parece que set width of columnno hace nada en El Capitan (10.11.6).
Echaré un vistazo a 10.11.6 y te responderé.
Probé el script en una Mac con 10.11.6 y me funcionó. Intente hacer que la columna Nombre sea muy ancha (mucho más ancha de lo que necesita) y luego ejecute mi script. Debería ver que la ventana se cierra y luego se abre de nuevo con una columna Nombre redimensionada. Entonces debería ser obvio que el ancho ha cambiado.
Aquí hay un gif que muestra lo que sucede cuando sigo tu sugerencia; el ancho de la columna todavía no se ensancha en absoluto.
Tu gif es muy útil, gracias. Creo que en su ejemplo tiene un elemento con un nombre tan largo que mi script falla. Puede haber un límite en el ancho de una columna con respecto al ancho total de la ventana. Pruébelo con un caso menos extremo y debería ver que funciona. Entonces, entre nosotros, deberíamos ser capaces de manejar los casos extremos.
Aquí hay un gif que muestra lo que sucede cuando la longitud del nombre del archivo es menos extrema. Todavía nada. De manera similar, si la longitud del nombre de archivo es más corta que el ancho de columna predeterminado, el ancho de columna tampoco se ajusta en la dirección hacia la izquierda.
Eso es realmente interesante. Me pregunto por qué funciona para mí y no para usted. Te haré un gif para demostrarlo.
Aquí hay un video que muestra cómo funciona aquí. vimeo.com/268401842
Gracias por proporcionar la grabación de video. Veo que el script funciona maravillosamente en su máquina. Muy extraño...
¡Buenas noticias! Escribí el siguiente comando en Terminal, rm ~/Library/Preferences/com.apple.finder.plist( fuente ), seguido de killall Finder( fuente ), y su secuencia de comandos ahora funciona. ¿Es posible que el script funcione para nombres de archivo más largos? Pregunto porque la mayoría de mis nombres de archivo son largos.
Excelentes noticias sobre cómo hacer que el script funcione con su método de "desechar la preferencia". Puede haber un límite en el ancho de la columna del nombre de una ventana del Finder en relación con el ancho total de la ventana del Finder en la que se encuentra. Intente hacer que su ventana sea muy ancha antes de ejecutar el script. Eso también podría estar escrito, por supuesto.
Usé la línea tell application "Finder" to set the bounds of the front window to {259, 23, 3827, 666}para ampliar con éxito la ventana. El problema es que, una vez que se cambia el tamaño de la ventana a sus coordenadas originales después de establecer el ancho de la columna "Nombre", el divisor de la columna "Nombre" también se desliza hacia la izquierda. Por lo tanto, no se logra nada con esta solución alternativa.
¿Tiene alguna otra idea (sobre cómo aumentar el ancho de columna con guión)?
Lo siento, no tengo otras ideas. Creo que hemos hecho lo que podemos hacer con Applescripting the Finder. Tal vez una actualización de macOS traerá soporte mejorado de AppleScript al Finder y podemos intentarlo de nuevo.

El siguiente código configurará la columna de nombre, en la vista de lista, para que se ajuste al tamaño del nombre de archivo más largo en todas las ventanas abiertas o en todas las pestañas de todas las ventanas de la aplicación Finder. Si no hay ninguna ventana del Finder abierta, se abrirá una nueva ventana del Finder en la vista de lista y establecerá el ancho de la columna del nombre de forma adecuada.

Este código requiere la utilidad de terceros, CLICLIC .

“Cliclick” es la abreviatura de “ C lic en la interfaz de línea de comandos . Es una pequeña aplicación de shell/Terminal que emulará los clics del mouse o una serie de clics del mouse (incluidos los clics dobles y los clics de control) en coordenadas de pantalla arbitrarias. Además, le permite mover el mouse, obtener las coordenadas actuales del mouse, presionar teclas modificadoras, etc.

La descarga es gratuita, pero es un software de donación y es fácil de instalar.

En mi sistema tengo cliclicken el siguiente directorio: /usr/local/bin/. Debido a esta ubicación, en mi código AppleScript y en la aplicación Terminal, necesito usar la ruta completa para cliclickllamar al comando. Por ejemplo:  do shell script "/usr/local/bin/cliclick rc:." en AppleScript está diciendo cliclickque haga clic con el botón derecho.

Esto me funciona con la última versión de macOS Mojave.

Las coordenadas xy yutilizadas en este siguiente script se establecieron mientras la resolución de mi pantalla era 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
        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


ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Interesante, pero en mis pruebas con macOS High Sierra falló varias veces en las pruebas, lo suficiente como para que no pueda hacer +1. Por cierto, agregaría la -r opción al cliclick comando para "Restaurar la ubicación inicial del mouse cuando termine".
Usando macOS High Sierra, solo tengo curiosidad por saber exactamente dónde se atasca el script. En mi versión del script, lo tengo configurado para restaurar la ubicación original del mouse. Omití eso porque no parecía útil ya que lo estaba ejecutando a través de un menú de servicio... ¿Cuál habría sido la última ubicación del mouse? Haré la actualización en breve.
Si bien funcionará en una ventana del Finder, a veces hace clic en una ventana de aplicación diferente con consecuencias no deseadas. Demasiado tarde esta noche para intentar depurarlo, pero lo haré mañana si tengo la oportunidad.
Sin embargo, realmente no tengo tiempo para depurar esto, jugué con él un poco más y continué obteniendo resultados no deseados con el clic que en realidad no hace clic en la ventana del Finder sino en otra ventana de la aplicación y también cuando tengo más de una ventana del Finder abierta y en diferentes Escritorios, mientras una de las ventanas obtiene su columna de nombre expandida, la del Escritorio actual, luego cambia al otro Escritorio. ¿¡Por qué, quién sabe!? La conclusión es que, si bien funciona para usted en su entorno, tiene demasiados errores en mi entorno y estoy considerando seriamente rechazar esta respuesta debido a eso.