Saat ini saya mencoba mengubah perilaku penanganan URL default di OS X. Saya ingin, ketika mengklik tautan apa pun di luar peramban web, untuk menyalin URL ini ke papan tulis alih-alih membukanya di peramban web default - misalnya , mengklik tautan dalam percakapan Skype harus menyalin URL ini ke papan tulis OS X alih-alih membukanya di Firefox (yang saat ini merupakan browser web default saya).
Saya telah memikirkan solusi, tetapi saat ini saya tidak dapat mengimplementasikannya. Jika saya dapat membuat aplikasi yang memasukkan URL ke papan tulis yang dikirim kepadanya, dan dapat mengatur aplikasi ini sebagai browser web default, saya akan dapat mencapai tujuan saya.
Saya membuat aplikasi dengan Automator yang mengeksekusi perintah shell pbcopy
dan telah menetapkan aplikasi ini sebagai browser web default saya, tetapi saya tidak mendapatkan hasil yang diharapkan. Saya melakukan beberapa pengujian dan saya dapat mengonfirmasi bahwa aplikasi berjalan saat mengklik tautan, namun, saya tidak bisa meneruskan URL ke skrip aplikasi / shell. Saya mencoba keduanya stdin atau argumen yang berlalu, tetapi tidak berhasil.
Apakah ada cara untuk aplikasi yang dibuat dengan Automator untuk mengambil URL yang diklik dan mengirimkannya pbcopy
, ketika aplikasi itu ditetapkan sebagai penangan (default) untuk URL?
Atau, apakah ada cara yang lebih baik untuk membuat peramban web palsu yang mengambil input dan meletakkannya di papan tulis daripada Automator? Atau adakah cara lain yang bisa saya lakukan untuk mencapai tujuan saya tanpa aplikasi / skrip khusus?
Jawaban:
Cara membuka URL di Mac OS X sebenarnya lebih rumit daripada yang Anda bayangkan. Ketika Anda mengklik URL, Mac OS X tidak hanya meneruskan URL browser untuk dibuka; sebagai gantinya, ia mengirimkannya ke Apple Event, dengan ID
kAEGetURL
, yang berisi URL.Saya tidak pernah benar-benar menggunakan Automator (itu terlalu lambat dan terbatas untuk penggunaan khas saya), jadi saya tidak yakin tentang ini, tapi saya ragu itu memiliki kemampuan untuk menangani Acara Apple. Karenanya Anda tidak akan dapat menggunakan Automator untuk mencapai apa yang Anda inginkan.
Karena itu Anda harus menggunakan aplikasi Objective-C normal di Xcode.
Dua hal dasar yang perlu Anda lakukan adalah:
daftarkan aplikasi Anda untuk menerima acara kAEGetURL, dan atur
CFBundleURLTypes
Info.plist di aplikasi Anda untuk menyertakanhttp
danhttps
.Terapkan metode yang menangani acara kAEGetURL, dan buat itu menyalin URL ke clipboard.
Dua hal ini relatif mudah dilakukan di Objective-C; untuk menggambarkan, saya telah membuat contoh aplikasi yang melakukan ini. Anda dapat melihatnya di https://github.com/houbysoft/short/tree/master/Copy%20URL%20to%20Clipboard . File yang paling penting adalah https://github.com/houbysoft/short/blob/master/Copy%20URL%20to%20Clipboard/Copy%20URL%20to%20Clipboard/AppDelegate.m , di sana Anda dapat melihat cara mendaftar untuk event (ini dilakukan di applicationWillFinishLaunching: method) dan cara menyalinnya ke clipboard (ini dilakukan di getUrl: withReplyEvent: method).
Jika Anda merasa malas dan hanya ingin melihat ini berfungsi, ambil file ini , ekstrak aplikasi darinya, tetapkan itu sebagai browser web default (buka Safari Preferences, dan telusuri aplikasi itu di bidang browser web Default). Kemudian klik tautan Anda di Skype, dan itu harus disalin langsung ke papan klip Anda.
sumber