Bagaimana cara membuka tab tertentu dalam preferensi melalui Terminal?

2

Jadi saya tahu saya bisa menggunakannya open /System/Library/PreferencePanes/Keyboard.prefPane untuk membuka preferensi Keyboard. Tetapi bagaimana saya bisa membuka tab 'Pintasan' secara khusus?

Arthmost
sumber

Jawaban:

4

Anda dapat menggunakan AppleScript dari Terminal menggunakan osascript:

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

Ganti ‘shortcutsTab’ dengan salah satu T keyboardTab ’,‘ InputSources ’,‘ shortcutsTab ’,‘ Text ’,‘ Dictation ’atau‘ keyboardTab_ModifierKeys ’untuk mengubah tab yang dibuka.

Untuk menemukan daftar tab yang tersedia di panel preferensi lain, gunakan
osascript -e "tell application \"System Preferences\"" -e "set the current pane to pane id \"com.apple.preference. nama \ "" -e "dapatkan nama setiap jangkar panel id \" com.apple.preference. nama "" -e "dan katakan" di mana ‘nama’ adalah nama panel preferensi.


Untuk memilih kategori pintasan tertentu, Anda dapat menggunakan Acara Sistem untuk memilih baris dari tabel kiri.

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  saya  dari tabel 1 area gulir 1 grup pembagi 1 grup tab 1 "\
          -e "end tell" "
          -e "end tell" "
          -e "end tell" "
          -e "beri tahu aplikasi \" System Preferences \ "" \
          -e "aktifkan" \
          -e "akhiri" 

‘I’ adalah indeks (dihitung dari 1) dari baris di kolom kiri tab panel preferensi. Baris baru (menggunakan ‘\’ pada baris sebelumnya) dan spasi putih di luar tanda bicara hanya untuk memformat dan dapat dihilangkan.

Hati-hati dengan penggunaan 'repeat while not' yang menunggu System Preferences untuk membuka halaman yang diperlukan, namun ini membekukan kode sampai saat itu, dan jika System Preferences disibukkan dengan hal lain seperti masuk ke iCloud yang bisa ' t terganggu, ini akan membeku sampai Anda berhenti secara manual.

grg
sumber
Gaib! aku s get the name of every anchor of pane id "com.apple.preference.name applescript juga?
Arthmost
Bisakah saya juga membuka item tertentu di daftar Pintasan juga? Misalnya, 'Layanan'.
Arthmost
1
@Arthmost Ini membutuhkan beberapa AppleScript khusus untuk panel preferensi itu. Saya menggunakan atm ponsel saya tetapi saya bisa memeriksanya.
grg
Akan luar biasa, atau hanya mengarahkan saya ke arah yang benar.
Arthmost
1
@ Hampir saya telah menambahkan kode lengkap untuk mendapatkan nama tab dan memilih kategori pintasan.
grg
2

Lebih jauh ke jawaban dari @grgarside (saya tidak memiliki reputasi yang cukup untuk memposting ini sebagai komentar, maaf) tidak semua ID cocok dengan pola com.apple.preference.name (Yang membuatku tersandung untuk sementara waktu).

Pada macOS Sierra (10.12.2) ada 19 ID panel preferensi yang cocok dengan pola itu, 8 yang cocok dengan pola com.apple.preferences.name (perhatikan s) dan dua outlier ( com.apple.prefs.backup dan com.apple.Localization ).

Untuk mendapatkan ID dari panel saat ini (yang sudah Anda buka di System Preferences) gunakan:

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

Untuk mendapatkan setiap ID yang tersedia, gunakan:

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