Come accedere a un URL cliccato in un'applicazione gestore URL creata in Automator


14

Attualmente sto provando a modificare il comportamento di gestione degli URL predefinito in OS X. Vorrei fare clic su un collegamento all'esterno di un browser Web per copiare questo URL sul pannello di controllo anziché aprirlo nel browser Web predefinito, ad esempio , facendo clic su un collegamento in una conversazione Skype dovresti copiare questo URL sul pannello di controllo di OS X anziché aprirlo in Firefox (che è attualmente il mio browser Web predefinito).

Ho pensato alle soluzioni, ma al momento non sono in grado di implementarne una. Se riesco a creare un'applicazione che inserisce gli URL nel pannello di controllo che gli vengono inviati e posso impostare questa applicazione come browser Web predefinito, sarei in grado di raggiungere il mio obiettivo.

Ho creato un'applicazione con Automator che esegue il comando shell pbcopye ho impostato questa applicazione come browser Web predefinito, ma non ho ottenuto il risultato previsto. Ho eseguito alcuni test e posso confermare che l'applicazione viene eseguita facendo clic su un collegamento, tuttavia non riesco a far passare l'URL allo script dell'applicazione / shell. Ho provato sia Stdin che una discussione passata, ma senza successo.

Esiste un modo per un'applicazione creata con Automator di recuperare un URL cliccato e inviarlo a pbcopy, quando l'applicazione è impostata come gestore (predefinito) per gli URL?

In alternativa, esiste un modo migliore per creare un browser Web falso che prende l'input e lo inserisce nel pannello di controllo di Automator? O c'è un altro modo in cui posso raggiungere il mio obiettivo senza un'applicazione / script personalizzati?


Non ponendo questa come risposta poiché non è una soluzione completa, ma è un inizio: ho usato rubicode.com/Software/RCDefaultApp per impostare un'applicazione di automazione come browser predefinito. In Automator, c'è un'azione da copiare negli Appunti. Non riesco a ottenere alcun input di testo in un'app automator.
penguinrob,

Idem, ma ho usato Choosy. Ho fatto un bel po 'di test e ho trovato quanto segue: 1) L'app Automator viene eseguita. 2) Non sembra affatto ricevere alcun tipo di input. 3) Ergo, quando un browser viene inviato un "link", non viene inviato un URL in testo normale. Questo deve essere gestito in un modo diverso, ed è davvero quello che la domanda è dopo.
Timothy Mueller-Harder il

Risposte:


13

Il modo in cui l'apertura degli URL in Mac OS X è in realtà più complicato di quanto si pensi. Quando fai clic su un URL, Mac OS X non passa semplicemente al browser l'URL da aprire; invece, gli invia un evento Apple, con l'ID kAEGetURL, contenente l'URL.

Non ho mai usato Automator (è troppo lento e limitato per il mio uso tipico), quindi non ne sono sicuro, ma dubito che abbia la capacità di gestire gli eventi Apple. Pertanto non sarai in grado di utilizzare Automator per ottenere ciò che desideri.

Dovrai quindi ricorrere a una normale app Objective-C in Xcode.

Le due cose di base che devi fare sono:

  1. registra la tua app per ricevere l'evento kAEGetURL e imposta CFBundleURLTypesnella Info.plist della tua app per includere httpe https.

  2. Implementa un metodo che gestisce l'evento kAEGetURL e copia l'URL negli Appunti.

Queste due cose sono relativamente semplici da fare in Objective-C; per illustrare, ho creato un'applicazione di esempio che esegue questa operazione. Puoi vederlo su https://github.com/houbysoft/short/tree/master/Copy%20URL%20to%20Clipboard . Il file più importante è https://github.com/houbysoft/short/blob/master/Copy%20URL%20to%20Clipboard/Copy%20URL%20to%20Clipboard/AppDelegate.m , lì puoi vedere come registrarti per il evento (questo viene fatto nel metodo applicationWillFinishLaunching:) e come copiarlo negli appunti (questo viene fatto nel metodo getUrl: withReplyEvent:)

Se ti senti pigro e vuoi solo vedere che funziona, prendi questo file , estrai l'applicazione da esso, impostalo come browser Web predefinito (apri Preferenze Safari e cerca l'app nel campo Browser Web predefinito). Quindi fare clic sul collegamento in Skype e dovrebbe essere copiato direttamente negli Appunti.


La ringrazio per la risposta. Non sapevo come procedesse l'URL in OSX. Ho dato un'occhiata al tuo codice, ma non conosco molto Objective-C. Ma l'applicazione risultante funziona come un incantesimo e quello che volevo dall'inizio. Grazie ancora!
DjDCH

Bel lavoro sull'app (let). Mi piacerebbe concedere la generosità, ma mi mancano alcune informazioni definitive sulla domanda se Automator può (o non può) essere costretto a riconoscere un evento kAEGetURL per farlo.
kopischke,

@kopischke: ho appena cercato nella guida di Automator qualsiasi menzione di eventi Apple e non è stato trovato nulla. Penso che sia giusto presumere che Automator non supporti questo.
houbysoft,

È possibile farlo con AppleScript, che sarebbe il modo "logico" di estendere un flusso di lavoro di Automator, senza approfondire XCode / ObjC e compilare la propria app. (non che sia tutto così complicato, ma è probabile che AppleScript sarebbe più facile.)
Ocodo

Questo non sembra funzionare il 10.11. "/ Applicazioni / Copia URL in Clipboard.app non è disponibile come browser HTTP"
TJ Luoma
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.