AppleScript salvato come applicazione non esegue l'intero script quando viene passato l'argomento

2

Salva il seguente AppleScript come applicazione, per aprire Firefox a schermo intero e senza la barra dei menu:

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

Ed eseguilo come:

open -a "Firefox Full Screen"

Funziona come previsto, Firefox è aperto, va a schermo intero, senza la barra dei menu. Il problema è quando provo a chiamare open con un URL:

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

Questo apre ancora Firefox, con l'URL specificato in una nuova scheda, ma non esegue le righe dopo delay 0.8 , quindi non si apre a schermo intero. Non capisco perché questo accada e come risolverlo.

So che quelle righe non vengono eseguite perché il sistema non avverte che devo aggiungere l'applicazione come eccezione per l'accessibilità (quando non ne ho una aggiunta / abilitata). Mi avvisa sempre se non passo l'URL (e non ho un'eccezione aggiunta / abilitata).

MODIFICA 1

Ho anche provato ad eseguire la seguente versione con open -a "Firefox Full Screen" , open -a "Firefox Full Screen" "https://google.com" , open -a "Firefox Full Screen" --args "https://google.com" ed è peggio visto che non esegue le ultime righe in ogni caso:

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

MODIFICA 2

Sembra che il problema sia correlato al link .

    
posta pepper_chico 22.01.2018 - 04:25
fonte

1 risposta

3

Sembra che passare argomenti a un AppleScript salvato come applicazione si sia rotto a un certo punto . Ho completato il mio compito utilizzando Automator per creare una nuova applicazione equivalente che utilizza 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

Ho impostato lo script di shell Shell: in /bin/sh e Pass input: in as arguments , salvalo come "Firefox Schermo intero" in /Applications , cambia la sua icona come spiegato qui e aggiungilo come eccezione in System Preferences > Security & Privacy > Privacy Tab > Accessibility .

Quindi posso eseguire una delle seguenti azioni e funziona come previsto:

  • 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"

Sto usando questo accoppiato con il seguente userChrome.css per eludere un noto problema con la barra dei menu di macOS nelle applicazioni a schermo intero e un'altra lunga barra degli indirizzi e un bug automatico per nascondere la scheda con Firefox con lo schermo intero nativo di 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;
}

Per un approccio generico, controlla la mia altra risposta .

Suggerimento

  • Firefox, per impostazione predefinita, non ha alcun problema su Linux o Windows per nascondere automaticamente la barra degli indirizzi e le schede a schermo intero come previsto. Detto questo, ho preso questo userChrome.css dalla mia installazione di ArchLinux. Lo uso su i3 e oscuro i gestori delle finestre di affiancamento, con tutto il [inFullscreen] rimosso, per ottenere la barra degli indirizzi e le schede da nascondere automaticamente nelle normali finestre senza bordi.
risposta data 22.01.2018 - 23:43
fonte

Leggi altre domande sui tag