Menggunakan launchd untuk membunuh dan memulai ulang Finder di OS X

4

Saya mencoba menggunakan launchagent pada login untuk mematikan Finder, dan kemudian meluncurkan kembali TotalFinder , untuk secara otomatis menerapkan mod coloridebar untuk OS X 10.7 (mod dapat ditemukan di sini ).

Jika saya menggunakan agen peluncur untuk memanggil skrip shell, tidak apa-apa, seperti:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.colorsidebar.root</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/POSIX/path/to/some/shell/script.sh</string>
    </array>
</dict>
</plist>

Dan kemudian dalam skrip shell, yang saya gunakan adalah

#!/bin/bash
#
#This file kills the finder on user session start
#and re-launches TotalFinder
#

killall Finder
Open /Applications/TotalFinder.app

Sekarang, ketika saya mencoba menggabungkan keduanya seperti itu

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.colorsidebar.root</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>killall Finder</string>
        <string>open /Applications/TotalFinder.app</string>
    </array>
</dict>
</plist>

Tidak berfungsi, dan konsol menampilkan kesalahan berikut:

8/21/11 5: 16: 16.957 PM com.colorsidebar.root: / bin / bash: killall Finder: Tidak ada file atau direktori

Jocelyn
sumber

Jawaban:

3

bashmengharapkan untuk diberi nama file (yaitu skrip) sebagai argumennya. Karena tidak ada file bernama "killall Finder", Anda mendapatkan kesalahan untuk efek itu. Jika Anda ingin meneruskan perintah ke bash sebagai argumen, Anda harus menggunakan -copsi, dan meneruskan perintah sebagai argumen tunggal:

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>killall Finder; open /Applications/TotalFinder.app</string>
</array>
Gordon Davisson
sumber