0 votos

Usando Automator para configurar ventanas del Finder

Uso ventanas de Finder para mostrar imágenes de los empleados de mi empresa en una pantalla de TV. Una ventana de Finder para cada departamento. Las diferentes ventanas de Finder están ajustadas para caber en dos pantallas de TV 4K. ¿Hay alguna forma de utilizar Automator o AppleScript para guardar y recordar esta configuración exacta cuando sea necesario?

0 votos

La respuesta corta es sí, utilizando AppleScript, sin embargo la respuesta más larga es un poco compleja para un comentario. Puede haber una aplicación que pueda ayudar a automatizar el proceso, por lo que es posible que desees hacer una pequeña búsqueda en Google. Hoy no tengo tiempo para publicar una respuesta sobre cómo hago algo similar con la disposición de ventanas del Finder, basándome en cuál pantalla está enfocada, sin embargo después de que todas las ventanas estén ordenadas usé tell application "Finder" to get properties of windows y luego analizando y utilizando los resultados... Usé set ..., etc. Sé que eso no ayuda mucho, pero es un punto de partida para buscar en Google.

0 votos

No estoy seguro si has visto mi respuesta aún, sin embargo he modificado el código y los comentarios. Entonces si lo has visto y has comenzado a implementarlo, entonces debes usar los cambios de código que he hecho.

0 votos

@user3439894. Eso es brillante. Muchas gracias. Voy a revisar tu trabajo e intentar adaptarlo a mis necesidades.

1voto

user3439894 Puntos 5883

La muestra script La siguiente es una codificación con las siguientes suposiciones, usted quiere que las ventanas del Finder sean tan simples como sea posible, es decir, sin Barra de Ruta, Panel de Vista Previa, Barra de Herramientas, Barra Lateral o Barra de Estado, sólo una ventana simple en la vista de Icono con la Barra de Título mostrando el nombre del Departamento con los iconos de la imagen mostrando una vista previa de la imagen y ajustada a un tamaño determinado con la etiqueta mostrada debajo de la imagen. Otras configuraciones requerirán una lógica o codificación adicional. Nota: Vea los comentarios en el código si desea establecer una imagen o un color para un fondo común de todas las ventanas del Finder de la carpeta de destino que desee mostrar y organizar.

Para el entorno de prueba utilicé mi MacBook Pro y Thunderbolt Display configurados con el MacBook Pro como pantalla principal con barra de menú y el Thunderbolt Display a su derecha. El script abre las cuatro ventanas de destino del Finder de ejemplo, establece los requisitos de vista y las organiza en la pantalla Thunderbolt como se muestra en la imagen siguiente.


Thunderbolt Display Image


Para utilizar este script tendrá que reunir información de su escenario totalmente configurado y hacer las código cambios y para ello, haz lo siguiente:

  • En primer lugar, abre las carpetas de destino y organízalas en la(s) pantalla(s) según tus necesidades/deseos.

  • Nota: Para facilitar la tarea, al tener menos información que analizar en el siguiente paso, cierre todas las demás ventanas del Finder.

  • Abre el editor de script y en una nueva ventana que no tenga código en él, utilice el siguiente comando para obtener las propiedades de las ventanas abiertas del Finder:

    tell application "Finder" to get properties of windows

  • En el panel de resultados, verás un montón de información que puede parecer imposible de discernir, sin embargo no será tan difícil. Es posible que quieras copiar y pegar esta información en TextEdit para hacer un poco de análisis y tener la información lista para copiar y pegar en el script como sea necesario.

    A partir de la información recopilada, querrá principalmente dos datos para cada ventana del Finder de destino, su name y bounds . Puede ver en el código lo que el bounds información y cómo se aplica.

  • Obtendrá las propiedades de vista adicionales necesarias desde Mostrar opciones de vista seleccionando una ventana de destino y luego haciendo clic en 'Finder > Vista > Mostrar opciones de vista J' o simplemente pulsando J después de seleccionar una ventana de destino. Consulte los comentarios en la sección código sobre la información de "Mostrar opciones de vista".

  • Copiar y pegar el código a continuación desde el Navegador a una nueva ventana en el Editor de script y luego haga clic en el botón Compilar para asegurarse de que no hay errores iniciales en el actual código . Los comentarios y código será ahora mucho más fácil de discernir, ya que el editor de script aplicará el resaltado sintáctico adecuado al código algo que el navegador no hace correctamente.

    Debería poder seguir los comentarios a lo largo del script para modificarlo para su caso de uso. Si tienes alguna duda, sólo tienes que preguntar.


#
##        READ COMMENTS FOR AN UNDERSTANDING OF WHAT THE CODE IS DOING
##        AND WHAT INFORMATION YOU'LL NEED TO PROVIDE AND OR MODIFY.
#
#
#    The 'gTargetPath' variable is a global (to the script only) variable being set for
#    the path to the target folders Finder is to open and arrange, that which contain
#    the Company's employee pictures which are arranged in separate folders by
#    their respective Departments.
#
#    It's assuming a logical hierarchical folder structure where the starting point
#    is in the User's Picture folder (or other location) and progresses e.g., 
#    Company > Departments > Department Name. Obviously you'll need to
#    modify it to suite your needs. Note however, this script is coded with the
#    assumption that all target folders to be opened are all in a given parent
#    folder so as to only have to set the path to the containing parent folder.
#
#    Thus only having to provide the 'name' of each target folder and its
#    'bounds' info, for them to be programmatically opened and arranged
#    on the attached Display(s) per the other relevant setting in the script.
#
#    Note: If the target folders to be opened are not in a centralized parent
#    folder then create Aliases for the folders and place them in a centralized
#    parent folder so as to maintain a single path to use in this script.
#

global gTargetPath

set gTargetPath to (path to pictures folder as text) & "Company:Departments:"

#
#    This first 'tell application "Finder"' statement block is where
#    you'll set the 'name' of the target folders with its 'bounds' info.
#
#    The example settings should serve as a guide. Each Department
#    code block consists of two 'set' statements and the calling of the
#    'arrangeWindow(folder_name, window_bounds)' subroutine, which
#    itself does not need to be modified.
#
#    Just provide the info, as the example info for each folder shows.
#

tell application "Finder"
    activate

    ###    Accounting    ###

    set folder_name to "Accounting"
    set window_bounds to {1495, 36, 2252, 706}

    my arrangeWindow(folder_name, window_bounds)

    ###    Marketing    ###

    set folder_name to "Marketing"
    set window_bounds to {2321, 36, 3075, 706}

    my arrangeWindow(folder_name, window_bounds)

    ###    Production    ###

    set folder_name to "Production"
    set window_bounds to {3156, 36, 3912, 706}

    my arrangeWindow(folder_name, window_bounds)

    ###    Sales    ###

    set folder_name to "Sales"
    set window_bounds to {2320, 757, 3075, 1426}

    my arrangeWindow(folder_name, window_bounds)

end tell

#
##
###    Begin Subroutines        ###
##
#
#    ONLY THIS FIRST SUBROUTINE SHOULD NEED TO BE MODIFIED.
#
#    Read comments for an understanding of what the code is doing
#    and what information you'll need to provide and or modify.
#
#    The 'setFinderViewShowViewOptions(folder_name)' subroutine handles the setting
#    available when using 'Finder > View > Show View Options  J' and the values of
#    some may/will need to be modified to suite your use case.
#
#    The current setting are what were used in the test example and I'd imagine you'd
#    only have to change 'set icon size to' and 'set text size to', to the value you need.
#
#    The other setting are conducive to what I believe one would want and shouldn't 
#    need adjusting. That is sans the settings if using a picture or other then default
#    color for the background in Icon view. See additional comments around each.
#

on setFinderViewShowViewOptions(folder_name)

    #    Finder > View > Show View Options  J

    tell application "Finder"
        activate window named folder_name
        tell icon view options of window folder_name
            set arrangement to arranged by name # See Finder's AppleScript Dictionary for other values.
            set icon size to 256
            set shows item info to false
            set shows icon preview to true
            set text size to 12 # Valid values: 10~16
            set label position to bottom # Valid values: [right|bottom]

            #
            ##
            ###    THE NEXT TWO PROPRIETIES CAN ONLY BE USED ONE AT A TIME!
            ##
            #
            #    For 'set background picture to (file)', remove '(*' and '*)' to
            #    activate the 'try' code block while modifying the example
            #    path to reflect the correct POSIX path to the target image file
            #    to be used for the background.
            #
            #    Note: If the image dimensions are larger then the window,
            #    it displays only the portion starting in the upper right corner
            #   of the image and starting in the upper right corner of the
            #    window. Right sizing the image to fit the size of the window
            #    ahead of time may be necessary.
            #

            (*
                try
                    set background picture to POSIX file "/Users/me/Pictures/IMG_0866.JPG"
                    tell application "Finder"
                        close Finder window named folder_name
                        open gTargetPath & folder_name
                    end tell
                end try
            *)

            #
            #    'set background color to {RGB color * 257 for each value of RGB.}'
            #
            #    For example, a color of 85% grayscale would be '217, 217, 217' in RGB color.
            #    Multiply each RGB value by 257, e.g, 217*257=55769 so the 'set ...' command
            #    below would set the background color to 85% grayscale.
            #
            #    Remove the '-- ' from in front of '-- set ...' to activate the code.
            #

            -- set background color to {55769, 55769, 55769}

        end tell
    end tell

end setFinderViewShowViewOptions

#
##
###    THE SUBROUTINES BELOW SHOULD NOT NEED TO BE MODIFIED.        ###
##
#
#    The 'setFinderView(folder_name)' subroutine programmatically handles setting
#    the 'Finder > View' menu setting for hiding the Toolbar and Status Bar.
#
#    All other [Hide/Show ...] 'View' menu commands require GUI Scripting and
#    are handled by the 'setFinderViewGUI()' subroutine following below this one.
#

on setFinderView(folder_name)

    #     Finder > View > [as Icons (icon) | as List (list) | as Columns  (column) | as Cover Flow (flow)]
    #     Finder > View > [Hide/Show Toolbar]
    #     Finder > View > [Hide/Show Status Bar]

    tell application "Finder"
        activate window named folder_name
        try
            set the current view of window folder_name to icon view
            set toolbar visible of window folder_name to false
            set statusbar visible of window folder_name to false
        end try
    end tell
end setFinderView

#
##
###      THE USE OF 'setFinderViewGUI()' REQUIRES PERMISSION FOR ASSISTIVE ACCESS.        ###
##
#
#    This subroutine handles clicking, as applicable, "Hide Tab Bar", "Hide Path Bar" and "Hide Preview"
#    on the View menu in Finder. These are not programmatically scriptable in the same manner as
#    selecting the current view to e.g. 'as Icons'. Or 'Hide/Show Toolbar' and 'Hide/Show Status Bar'
#    and as such requires GUI Scripting and thus requires permission to do so.
#
#    See https://support.apple.com/HT202802 for additional information and note while the article
#    is named "OS X: Using AppleScript with Accessibility and Security features in Mavericks",
#    nonetheless it's applicable to later versions of OS X too.
#

on setFinderViewGUI(folder_name)
    tell application "Finder"
        activate window named folder_name
        tell application "System Events"
            set menuViewItems to get name of menu items of menu 1 of menu bar item "View" of menu bar 1 of process "Finder"
            try
                considering case
                    if menuViewItems contains {"Hide Tab Bar"} then
                        click menu item "Hide Tab Bar" of menu 1 of menu bar item "View" of menu bar 1 of process "Finder"
                    end if
                    if menuViewItems contains {"Hide Path Bar"} then
                        click menu item "Hide Path Bar" of menu 1 of menu bar item "View" of menu bar 1 of process "Finder"
                    end if
                    if menuViewItems contains {"Hide Preview"} then
                        click menu item "Hide Preview" of menu 1 of menu bar item "View" of menu bar 1 of process "Finder"
                    end if
                end considering
            end try
        end tell
    end tell
end setFinderViewGUI

#
#    The 'arrangeWindow(folder_name, window_bounds)' subroutine handles
#    the processing of the other subroutines so all settings are applied to each
#    Finder window for which a folder name and the window 'bounds' have been
#    supplied in the beginning of this script in the first 'tell application "Finder"'
#    statement block. This subroutine should not have to be modified.
#
#    Thus minimizing the amount of script modifications to achive what I think
#    would be for a reasonable appearance in the overall window that is
#    displaying the photos. Which is to hide all non-essential window controls
#    to provide a clean and uncluttered look giving the pictures better focus.
#

on arrangeWindow(folder_name, window_bounds)
    tell application "Finder"
        open gTargetPath & folder_name
        my setFinderView(folder_name)
        my setFinderViewGUI(folder_name)
        my setFinderViewShowViewOptions(folder_name)
        set bounds of window named folder_name to window_bounds
    end tell
end arrangeWindow

#
##
###    End Subroutines      ###
##
#

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X