¿Cómo verificar si hay elementos invisibles visibles?

0

¿Cómo verifico AppleScript si hay objetos invisibles visibles? Si es visible, haz: defaults write com.apple.finder AppleShowAllFiles 0 en invisible, haz: defaults write com.apple.finder AppleShowAllFiles 1 .

Eso debería ser una secuencia de comandos, por lo que puedo cambiar lo visible con un solo clic. ¿Es eso posible con AppleScript?

    
pregunta user121028 07.04.2015 - 12:21

2 respuestas

1

Una alternativa al script de grgarside, esto no necesita que reinicies el Finder, solo actualiza las ventanas abiertas.

Se puede guardar como una aplicación o en Automator, como un servicio.
Lo tengo como un Servicio, activado en Cmd ⌘ H de Pref. Del sistema > Teclado > Accesos directos > Servicios, que me obligaron a cambiar el comando clave "Ocultar buscador" en ... Accesos directos > Los accesos directos de aplicaciones a algo distinto de los predeterminados.

Para agregar como Servicio, inicie Automator y luego el menú Archivo > Nuevo.
Seleccione Servicio en el cuadro de diálogo y luego arrastre Ejecutar AppleScript a la nueva ventana de Automator.
Copie / pegue el script dentro de on run - reemplazando (* Su script va aquí *) & Salvar. Solo necesita los parámetros predeterminados para todo lo demás.

EnPreferenciasdelsistema>Teclado>Accesosdirectos>Serviciosqueseañadiráncomoúltimalínea.Establecercualquiercomandodelatecladedisparoquetegusta.

Si usas Cmd ⌘ H de la misma manera que yo, deberás cambiar Hide Finder a otra cosa. Solo usé un atajo de basura como nunca lo necesito ese comando ...

setnewHiddenVisiblesStateto"YES"
try
    set oldHiddenVisiblesState to do shell script "defaults read com.apple.finder AppleShowAllFiles"
    if oldHiddenVisiblesState is in {"1", "YES"} then
        set newHiddenVisiblesState to "NO"
    end if
end try
do shell script "defaults write com.apple.finder AppleShowAllFiles " & newHiddenVisiblesState


tell application "Finder"
    set theWindows to every Finder window
    repeat with i from 1 to number of items in theWindows
        set this_item to item i of theWindows
        set theView to current view of this_item
        if theView is list view then
            set current view of this_item to icon view
        else
            set current view of this_item to list view

        end if
        set current view of this_item to theView
    end repeat
end tell

El propio script lee el estado actual de la bandera invisible (menos elegante que la versión de grgarside pero igual de eficazmente) y luego cambia cada ventana abierta a otro tipo de vista: lista, icono, etc. y luego otra vez.

Editar: Actualizar las ventanas ya no funciona en El Capitán, ahora debes reiniciar el Finder.
Nueva versión para El Capitán

set newHiddenVisiblesState to "YES"
try
    set oldHiddenVisiblesState to do shell script "defaults read com.apple.finder AppleShowAllFiles"
    if oldHiddenVisiblesState is in {"1", "YES"} then
        set newHiddenVisiblesState to "NO"
    end if
end try
do shell script "defaults write com.apple.finder AppleShowAllFiles " & newHiddenVisiblesState & "; killall Finder"
    
respondido por el Tetsujin 07.04.2015 - 12:42
0

Esto establece el valor de b en verdadero o falso según el valor actual de AppleShowAllFiles:

[[ $(defaults read com.apple.finder AppleShowAllFiles) = 1 ]] && b=false || b=true

Por lo tanto, puede crear un script como este:

do shell script "[[ $(defaults read com.apple.finder AppleShowAllFiles) = 1 ]] && b=false || b=true
defaults write com.apple.finder AppleShowAllFiles -bool $b"
tell application "Finder"
    quit
    delay 0.2 -- without this delay there was a "connection is invalid" error
    reopen -- open a new default window
    activate -- make Finder frontmost
end tell

Todo el crédito a Lauri en esta respuesta en desbordamiento de pila

    
respondido por el grg 07.04.2015 - 12:26

Lea otras preguntas en las etiquetas