Come si può aprire una scheda specifica nelle preferenze tramite Terminale?

2

Quindi so che posso usare open /System/Library/PreferencePanes/Keyboard.prefPane per aprire le preferenze della tastiera. Ma come posso aprire la scheda "Scorciatoie" in particolare?

    
posta Arthmost 23.08.2016 - 13:26
fonte

2 risposte

4

Puoi usare AppleScript da Terminal usando osascript:

osascript -e "tell application \"System Preferences\"" -e "set the current pane to pane id \"com.apple.preference.keyboard\"" -e "reveal anchor \"shortcutsTab\" of pane id \"com.apple.preference.keyboard\"" -e "activate" -e "end tell"

Sostituisci "shortcutsTab" con uno di "keyboardTab", "InputSources", "shortcutsTab", "Text", "Dictation" o "keyboardTab_ModifierKeys" per cambiare la scheda che apre.

Per trovare l'elenco delle schede disponibili in altri riquadri delle preferenze, usa
osascript -e "tell application \"System Preferences\"" -e "set the current pane to pane id \"com.apple.preference.name\"" -e "get the name of every anchor of pane id \"com.apple.preference.name\"" -e "end tell" dove "nome" è il nome del pannello delle preferenze.

Per selezionare una categoria specifica di collegamento, puoi utilizzare Eventi di sistema per selezionare una riga dalla tabella di sinistra.

osascript -e "tell application \"System Preferences\"" \
          -e   "set the current pane to pane id \"com.apple.preference.keyboard\"" \
          -e   "reveal anchor \"shortcutsTab\" of pane id \"com.apple.preference.keyboard\"" \
          -e "end tell" \
          -e "tell application \"System Events\"" \
          -e   "tell application process \"System Preferences\"" \
          -e     "repeat while not (window 1 exists)" \
          -e     "end repeat" \
          -e     "tell window 1" \
          -e       "repeat while not (row 1 of table 1 of scroll area 1 of splitter group 1 of tab group 1 exists)" \
          -e       "end repeat" \
          -e       "select row i of table 1 of scroll area 1 of splitter group 1 of tab group 1" \
          -e     "end tell" \
          -e   "end tell" \
          -e "end tell" \
          -e "tell application \"System Preferences\"" \
          -e   "activate" \
          -e "end tell"

'i' è l'indice (contando da 1) della riga nella colonna sinistra della scheda del pannello delle preferenze. Le nuove linee (usando '\' sulla riga precedente) e lo spazio bianco al di fuori dei segni del parlato sono solo per la formattazione e possono essere omesse.

Fai attenzione all'uso di "repeat while not" che aspetta che System Preferences si apra alla pagina necessaria, tuttavia questo congela il codice fino a quel punto, e se le Preferenze di Sistema sono preoccupate di qualcos'altro come l'accesso ad iCloud che non può essere interrotto, questo si blocca fino a quando non si esce manualmente.

    
risposta data 23.08.2016 - 13:47
fonte
2

Oltre alla risposta di @grgarside (non ho una reputazione sufficiente per postare questo come commento, scusa) non tutti gli ID corrispondono al modello com.apple.preference.name (che mi ha fatto inciampare per un po ').

A partire da macOS Sierra (10.12.2) ci sono 19 ID del riquadro delle preferenze che corrispondono a quel modello, 8 che corrispondono al modello com.apple.preferences.name (si noti la s) e due valori anomali ( com.apple.prefs.backup e com.apple.Localization ).

Per ottenere l'ID del riquadro corrente (che hai già aperto in Preferenze di Sistema) usa:

osascript -e "tell application \"System Preferences\"" -e "get the ID of the current pane" -e "end tell"

Per utilizzare tutti gli ID disponibili:

osascript -e "tell application \"System Preferences\"" -e "get the ID of every pane" -e "end tell"
    
risposta data 11.01.2017 - 00:44
fonte

Leggi altre domande sui tag