Cara mengakses URL yang diklik di aplikasi penangan URL yang dibuat di Automator

14

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 pbcopydan 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?

DjDCH
sumber
Tidak menempatkan ini sebagai jawaban karena ini bukan solusi lengkap, tapi ini awal - saya menggunakan rubicode.com/Software/RCDefaultApp untuk mengatur aplikasi automator sebagai browser default. Di Automator, ada tindakan untuk Menyalin ke Clipboard. Saya tidak bisa mendapatkan input teks apa pun ke aplikasi automator.
penguinrob
Ditto, tapi saya menggunakan Choosy. Saya telah melakukan cukup banyak pengujian, dan saya menemukan yang berikut ini: 1) Aplikasi Automator berjalan. 2) Tampaknya tidak mendapatkan input sama sekali. 3) Ergo, ketika browser mengirim "tautan", itu tidak mengirim URL dalam plaintext. Ini harus ditangani dengan cara yang berbeda, dan itulah yang sebenarnya menjadi pertanyaan.
Timothy Mueller-Harder

Jawaban:

13

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:

  1. daftarkan aplikasi Anda untuk menerima acara kAEGetURL, dan atur CFBundleURLTypesInfo.plist di aplikasi Anda untuk menyertakan httpdan https.

  2. 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.

houbysoft
sumber
Terima kasih atas jawaban Anda. Saya tidak tahu bagaimana URL diproses di OSX. Saya telah melihat kode Anda, tetapi saya tidak tahu banyak tentang Objective-C. Tapi, aplikasi yang Anda hasilkan berfungsi seperti pesona dan itulah yang saya inginkan sejak awal. Terima kasih lagi!
DjDCH
Kerja bagus di aplikasi (biarkan). Saya ingin melimpahkan hadiahnya, tetapi saya melewatkan beberapa informasi pasti tentang pertanyaan jika Automator dapat (atau tidak bisa) dipaksa untuk mengakui acara kAEGetURL untuk melakukan itu.
kopischke
@kopischke: Saya baru saja mencari bantuan Automator untuk menyebutkan acara Apple, dan tidak ada yang ditemukan. Saya pikir adil untuk menganggap Automator tidak mendukung ini.
houbysoft
Dimungkinkan untuk melakukan ini dengan AppleScript, yang akan menjadi cara "logis" untuk memperluas alur kerja Automator, tanpa mempelajari XCode / ObjC dan menyusun aplikasi Anda sendiri. (Bukan karena semua itu rumit, tapi kemungkinan AppleScript akan lebih mudah.)
ocodo
Ini sepertinya tidak berfungsi pada 10.11. "/ Aplikasi / Salin URL ke Clipboard.app tidak tersedia sebagai browser HTTP"
TJ Luoma