5 votos

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

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

7voto

siva Puntos 23

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

Sustituye 'shortcutsTab' por una de 'keyboardTab', 'InputSources', 'shortcutsTab', 'Text', 'Dictation' o 'keyboardTab_ModifierKeys' para cambiar la pestaña que abre.

Para encontrar la lista de pestañas disponibles en otros paneles de preferencias, utilice
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 utilizar 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 de 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 discurso son sólo para el formato y se puede omitir.

Tenga cuidado con el uso de 'repetir mientras 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 punto, y si las Preferencias del Sistema están preocupadas con algo más como el inicio de sesión en iCloud que no puede ser interrumpido, esto se congelará hasta que salga manualmente.

0 votos

Mágico! es get the name of every anchor of pane id "com.apple.preference.name ¿también applescript?

0 votos

¿Puedo abrir también un elemento específico en la lista de accesos directos? Por ejemplo, "Servicios".

1 votos

@Arthmost Esto requeriría algún AppleScript específico para ese panel de preferencias. Estoy usando mi teléfono atm pero puedo mirar en él.

5voto

Matthew Puntos 131

A root de la respuesta de @grgarside (no tengo suficiente reputación para publicar esto como comentario, lo siento) no todos los IDs coinciden con el patrón com.apple.preference.name (lo que me hizo tropezar durante un tiempo).

A partir de MacOS Sierra (10.12.2) hay 19 ID de paneles de preferencias que coinciden con ese patrón, 8 que coinciden con el patrón com.apple.preferences.name (nótese 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) utilice:

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

Para obtener todas las identificaciones disponibles utilice:

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X