thansk nathan, i will try it out now. I am curious if anyone else has done this for windows, Linux, Android and IOS ?
I am working on building apps with golang and QT, and need to be able to do it cross platform. QT has aweful support for this, and i think a golang lib that does this, will allow all GUI toolkits using golang to benefit from this. i am willing to bring it al together into a single library that is agnostic to OS and wraps the special things each OS needs. Then from your golang code you just call the agnostic lib, I know this is a bit of a boiling the ocean idea, but the more i looked into it the more i found he differences between OS to be huge. Please let me knwo what you think ... joe On Monday, February 20, 2017 at 6:32:08 PM UTC+1, Nathan Kerr wrote: > > I managed to get this working. > > https://gist.github.com/nathankerr/38d8b0d45590741b57f5f79be336f07c > > I don't know what sort of app you are making, so I made a simple gui that > displays the url received, with some filler text before any are. I think > the non-ui parts should transfer to whatever you are doing. > > A few notes: > > - main.go lines 3-8 (cgo and import C) are important. They tell go how to > build the c and obj-c parts. > - after C.StartURLHandler is called, HandlerURL will be called. HandleURL > needs to be non-blocking as it seems to block the whole UI, so put > long-running stuff in another go routine. I had to buffer labelText so the > a url received at the same time the app starts will not hang the program. > - I had to put C.StartURLHandler before the ui.Main stuff so the first url > would not be lost when the app is opened with `open myapp://whatever` and > the app was not already running. > - running `make` will setup the app, including building it. You will need > to `go get -u github.com/andlabs/ui` <http://github.com/andlabs/ui> > before doing so. > - You might need to change the url scheme to something else because you > (presumably) already have an app that registers myapp. I didn't think of > this earlier as I was trying to follow your question. > - Before trying to open the url, open the app itself. This will register > the url scheme with macOS. After doing so, the app will work if it is > already running or not. > - I was not able to get cmd-Q to close the app. Just click the close (red) > button on the window. This seems to be a limit of the ui package. > > This worked for me using go1.8 on macOS 10.12.3 and the latest version of > the ui package. > > Hope it helps you out. > > Nathan > > On Wednesday, July 6, 2016 at 11:50:02 PM UTC+2, chris...@gmail.com wrote: >> >> Hi, >> >> I'm trying to hook up a Go application to a URL protocol handler in Mac >> OS X. I want a user to be able to click on a link such as myapp://foo/bar >> and have that launch myapp and be able to access the full query parameters. >> I've made it as far as getting the OS to register the handler and launch >> the app. That's done by bundling the Go binary into a OS X-style .app >> package with a Info.plist file like this: >> https://gist.github.com/chrissnell/db95a3c5ad6ceca4c673e96cca0f7548 >> >> The challenge now is to figure out how to reference the query parameters >> within Go. I've determined that they're not passed as command-line >> arguments. From what I can tell, you have to use Cocoa libraries to get >> at them [1]. I don't know Objective-C or Swift, though, so that's where >> I'm stumbling. >> >> There are cheap hacks to do this with AppleScript [2] but I wanted >> something more native. >> >> Has anybody done this? >> >> Chris >> >> >> [1] >> http://fredandrandall.com/blog/2011/07/30/how-to-launch-your-macios-app-with-a-custom-url/ >> >> [2] >> https://support.shotgunsoftware.com/hc/en-us/community/posts/209485898-Launching-External-Applications-using-Custom-Protocols-under-OSX >> >> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.