¿Cómo se puede abrir una pestaña específica en las preferencias a través de Terminal?

2

Por lo tanto, sé que puedo usar open /System/Library/PreferencePanes/Keyboard.prefPane para abrir las preferencias del teclado. Pero, ¿cómo puedo abrir la pestaña 'Atajos' específicamente?

    
pregunta Arthmost 23.08.2016 - 13:26

2 respuestas

4

Puedes usar AppleScript desde la 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"

Reemplace ‘shortcutsTab’ con una de ‘keyboardTab’, ‘InputSources’, ‘shortcutsTab’, ‘Text’, ‘Dictation’ o ‘keyboardTab_ModifierKeys" para cambiar la pestaña que se abre.

Para buscar la lista de pestañas disponibles en otros paneles de preferencias, use
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" donde "nombre" es el nombre del panel de preferencias.

Para seleccionar una categoría específica de acceso directo, puede usar Eventos del sistema para seleccionar una fila de la tabla de la izquierda.

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’ es el índice (contando desde 1) de la fila en la columna izquierda de la pestaña del panel de preferencias. Las nuevas líneas (usando ‘\ 'en la línea anterior) y el espacio en blanco fuera de las marcas de voz son solo para formato y pueden omitirse.

Tenga cuidado con el uso de "repetir mientras que no", que espera a que las Preferencias del Sistema se abran a la página necesaria, sin embargo, esto congela el código hasta ese momento, y si las Preferencias del Sistema están ocupadas en otra cosa, como iniciar sesión en iCloud que no se puede interrumpir, esto se congelará hasta que salga manualmente.

    
respondido por el grg 23.08.2016 - 13:47
2

Además de la respuesta de @grgarside (no tengo suficiente reputación para publicar esto como un comentario, lo siento) no todas las ID coinciden con el patrón com.apple.preference.name (lo que me hizo tropezar por un tiempo).

A partir de macOS Sierra (10.12.2), hay 19 ID de panel de preferencias que coinciden con ese patrón, 8 que coinciden con el patrón com.apple.preferences.name (note la s) y dos valores atípicos ( com.apple.prefs.backup y com.apple.Localization ).

Para obtener el ID del panel actual (que ya tiene abierto en Preferencias del sistema) use:

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

Para obtener todos los ID de uso disponibles:

osascript -e "tell application \"System Preferences\"" -e "get the ID of every pane" -e "end tell"
    
respondido por el Matthew Lindfield Seager 11.01.2017 - 00:44

Lea otras preguntas en las etiquetas