AppleScript guardado como aplicación no ejecuta un script completo cuando se pasa el argumento

2

Guardo el siguiente AppleScript como aplicación, para abrir Firefox en pantalla completa y sin la barra de menú:

tell application "Firefox" to activate
delay 0.8
do shell script "lsappinfo setinfo -app Firefox ApplicationType=UIElement"
tell application "System Events" to tell process "Firefox" to set value of attribute "AXFullScreen" of last window to true

Y ejecútalo como:

open -a "Firefox Full Screen"

Esto funciona como se esperaba, Firefox se abre, pasa a pantalla completa, sin la barra de menús. El problema es cuando intento abrir con una URL:

open -a "Firefox Full Screen" "https://google.com"

Esto aún abre Firefox, con la URL dada en una nueva pestaña, pero no ejecuta las líneas después de delay 0.8 , por lo que no se abre en pantalla completa. No entiendo por qué sucede esto y cómo solucionarlo.

Sé que esas líneas no se ejecutan porque el sistema no advierte que debo agregar la aplicación como una excepción de accesibilidad (cuando no tengo una agregada / habilitada). Siempre advierte si no paso la URL (y no tengo una excepción agregada / habilitada).

EDIT 1

También intenté ejecutar la siguiente versión con open -a "Firefox Full Screen" , open -a "Firefox Full Screen" "https://google.com" , open -a "Firefox Full Screen" --args "https://google.com" y es peor dado que, en cualquier caso, no ejecuta las últimas líneas:

on run argv
    tell application "Firefox"
        activate
        repeat with arg in argv
            open location (arg as text)
        end repeat
    end tell
    delay 0.8
    do shell script "lsappinfo setinfo -app Firefox ApplicationType=UIElement"
    tell application "System Events" to tell process "Firefox" to set value of attribute "AXFullScreen" of last window to true
end run

EDIT 2

Parece que el problema está relacionado con enlace .

    
pregunta pepper_chico 22.01.2018 - 04:25

1 respuesta

2

Parece que pasar argumentos a un AppleScript guardado como una aplicación se ha roto en algún momento . Cumplí mi tarea usando Automator para crear una nueva aplicación equivalente que utiliza un Action > Utilities > Run Shell Script :

open -a Firefox
sleep 1
lsappinfo setinfo -app Firefox ApplicationType=UIElement
osascript -e 'tell application "System Events" to tell process "Firefox" to set value of attribute "AXFullScreen" of first window to true'
sleep 0.5
for f in "$@"; do open -a Firefox "$f"; done

Configuré el script de shell Shell: en /bin/sh y Pass input: en as arguments , lo guardo como "Pantalla completa de Firefox" en /Applications , cambio su icono como se explica aquí y añádalo como una excepción en System Preferences > Security & Privacy > Privacy Tab > Accessibility .

Luego puedo ejecutar cualquiera de los siguientes y funciona como se esperaba:

  • open -a "Firefox Full Screen"
  • open -a "Firefox Full Screen" --args "https://google.com"
  • open -a "Firefox Full Screen" --args "https://google.com" "https://twitter.com"

Estoy usando esto junto con el siguiente userChrome.css para evadir a con la barra de menú de macOS en aplicaciones de pantalla completa y otro error de barra de direcciones y pestañas de ocultación automática que Firefox tiene con la pantalla completa nativa de macOS .

userChrome.css

#navigator-toolbox[inFullscreen] {
    position: relative;
    z-index: 1;
    height: 3px;
    margin-bottom: -3px;
    opacity: 0;
    overflow: hidden;
}

#navigator-toolbox[inFullscreen]:hover {
    height: auto;
    margin-bottom: 0px;
    opacity: 1;
    overflow: show;
}

#content-deck[inFullscreen]{
    position:relative;
    z-index: 0;
}

Para un enfoque genérico, revise mi otra respuesta .

TIP

  • Firefox, de forma predeterminada, no tiene ningún problema en Linux o Windows para ocultar automáticamente la barra de direcciones y las pestañas en pantalla completa como se esperaba. Dicho esto, tomé este userChrome.css de mi configuración de ArchLinux. Lo uso en i3 y balanceo los administradores de ventanas de mosaico, con todos los [inFullscreen] eliminados, para obtener la barra de direcciones y las pestañas para ocultarse automáticamente en normal ventanas sin bordes.
respondido por el pepper_chico 22.01.2018 - 23:43

Lea otras preguntas en las etiquetas