Saya memiliki sebuah apel yang memeriksa baterai macbook saya dan memaksa hibernasi ketika mencapai tingkat tertentu, setelah menampilkan hitungan mundur 60 detik.
Saya telah berhasil mengaturnya agar berjalan di latar belakang melalui launchd, setiap 30 detik, sebagai skrip tetapi ini menyebabkan ikon memantul yang mengganggu di dok.
Jadi, saya menyimpan skrip sebagai aplikasi dan sekarang ikon dock tidak lagi memantul tetapi jika saya berada di aplikasi terminal (misalnya) dan kebetulan saya menekan CONTROL seperti yang diluncurkan di latar belakang, saya menjadi takut " Tekan Jalankan untuk menjalankan skrip ini, atau Berhenti untuk keluar dari kotak dialog ". Dan ya saya telah memastikan bahwa ketika saya menyimpannya opsi "Layar Startup" TIDAK dipilih.
Dialog ini muncul di belakang semua jendela lain sehingga saya tidak tahu bahwa itu telah terjadi dan aplikasi / skrip saya macet pada saat ini.
Adakah saran cara mengatasi ini agar saya dapat menjalankan skrip saya tanpa dialog yang mengganggu atau ikon yang terpental?
Terima kasih.
EDIT: Satu ide yang muncul di pikiran adalah menggunakan opsi ExitTimeOut dalam file plist. Halaman manual mengatakan:
ExitTimeOut <integer>
The amount of time launchd waits before sending a SIGKILL signal. The default value is 20 seconds. The
value zero is interpreted as infinity.
Jadi saya menambahkannya seperti ini:
<key>ServiceDescription</key>
<string>Battery Monitor</string>
<key>StartInterval</key>
<integer>30</integer>
<key>ExitTimeOut</key>
<integer>90</integer>
kemudian melakukan unload / memuat file .plist. Sayangnya itu tidak berfungsi. Apakah saya salah memahami opsi ini?
Jawaban:
Konversikan ke Shell Script dan Pair AppleScript
Ubah cek Anda untuk status baterai menjadi skrip shell. Script shell kemudian dapat dijalankan secara teratur melalui a
launchd
tiket kerja tanpa menghadirkan antarmuka pengguna apa pun.Ketika kondisi terpenuhi, skrip shell Anda dapat meluncurkan AppleScript untuk berinteraksi dengan pengguna.
Ini mengasumsikan Anda menggunakan
~/Library/LaunchAgent
pendekatan untuk tiket pekerjaan launchd. Pekerjaan peluncuran komputer secara luas tidak akan dapat meluncurkan komponen AppleScript di sesi pengguna yang sesuai.Atau, Anda bisa menggunakan alat pihak ketiga untuk pemicu pada acara baterai , seperti Manajer Daya ; ini akan menghindari polling baterai Anda dan meningkatkan kinerja baterai Anda.
sumber