Saya mencoba membuat perintah shell berbasis Applescript yang memberi tahu aplikasi Preview dari Mac OS X untuk menutup jendela tertentu.
#!/bin/sh
osascript <<EOF
tell application "Preview"
close "$1"
end tell
EOF
Tapi ini tidak berhasil: Saya mendapatkan pesan kesalahan
25:52: execution error: Preview got an error: "musixdoc.pdf" doesn’t understand the close message. (-1708)
Pertanyaan terkait: Bagaimana cara menutup aplikasi OS X dari baris perintah menggunakan alias yang didefinisikan dalam .bash_profile saya?
macos
shell-script
applescript
Ewan Delanoy
sumber
sumber
Jawaban:
Mendapatkan Preview.app untuk menerima perintah AppleScript
Secara default, Pratinjau AppleScripting tidak berfungsi karena Pratinjau tidak memiliki kamus yang diperlukan. Untuk memperbaikinya, periksa jawaban Lauri di sini , yang menjelaskan pengaturan
NSAppleScriptEnabled
untuk Preview.app.Keluar dari Preview.app, lalu buka terminal dan masukkan:
Menutup jendela dari aplikasi
1) Dengan indeks jendela atau nama jendela
Perintah untuk menutup jendela aplikasi apa pun akan menjadi sesuatu seperti ini:
... atau jika Anda ingin menutup jendela dokumen bernama, misalnya
foo.jpg
:Jadi, dalam skrip shell Anda itu adalah:
Di sini, argumen pertama yang diteruskan ke skrip adalah nama jendela yang ingin Anda tutup, misalnya
./quit.sh foo.jpg
. Perhatikan bahwa jika file Anda mengandung spasi, Anda harus mengutip nama file, misalnya./quit.sh "foo bar.jpg"
.Atau jika Anda ingin menutup jendela sembarang dari aplikasi apa pun, gunakan ini:
Di sini, Anda akan menggunakan
./quit.sh Preview foo.jpg
misalnya.2) Dengan nama file
Jika Anda ingin menutup jendela yang dimiliki dokumen tertentu, tetapi memberikan nama file, Anda memerlukan sesuatu yang lain. Ini karena PDF multi-halaman dapat ditampilkan sebagai
foo.pdf (Page 1 of 42)
, tetapi Anda hanya ingin meneruskanfoo.pdf
ke AppleScript.Di sini kita beralih melalui jendela dan membandingkan nama file dengan argumen yang diteruskan ke skrip:
Sekarang Anda cukup menelepon
./quit.sh foo.pdf
. Secara umum, untuk semua aplikasi dengan jendela dokumen bernama, itu akan menjadi:Peringatan: Auto-closing Preview.app
Preview.app adalah salah satu aplikasi ini yang secara otomatis berhenti setelah jendela dokumen terakhir ditutup. Itu dilakukan untuk menghemat memori dan "membersihkan". Untuk menonaktifkan perilaku ini, jalankan yang berikut:
Tentu saja, untuk membatalkan itu, ubah
TRUE
keFALSE
.Menggunakan fungsi alih-alih skrip
Akhirnya, saya sarankan menempatkan skrip Anda ke dalam fungsi yang selalu tersedia di shell Anda. Untuk melakukan ini, tambahkan skrip ke
~/.bash_profile
. Buat file ini jika tidak ada.Setelah Anda menyimpan profil bash dan memulai kembali shell, Anda dapat menelepon
cw Preview foo.pdf
dari mana saja.sumber
tell application "Preview" to windows
, apakah itu memberi Anda hasil? Skrip apa yang Anda jalankan?Jawaban oleh slhck terlihat bagus dan teliti. Hati-hati, mengeksekusi baris kode ketiga :
'tampaknya' menyebabkan Pratinjau macet di setiap peluncuran dengan yang berikut:
Menurut manual codesign, yang
-f
memaksa 'tanda kode untuk mengganti dan tanda tangan yang ada' dan-s
adalah untuk 'menandatangani kode di jalur yang diberikan' ... dalam hal ini-
Rupanya, Pratinjau sekarang ditandatangani dengan tidak benar dan tidak dapat digunakan. :(
sumber