top | item 23275080

Show HN: Create a custom macOS app from a group of websites

170 points| hkgumbs | 5 years ago |github.com | reply

44 comments

order
[+] toomim|5 years ago|reply
I'm into this. I've wanted to build something like this before, too, but never finished it.

This feels closer to how app building should work. If I have a web app, it should be simple to give it an icon, with notifications.

And if I want to build that, I shouldn't have to figure out all of XCode. I should be able to just quickly make a webview with native controls.

And I shouldn't need to download all of electron. An OSX webview should only need a few kb as a standalone app.

[+] hadtodoit|5 years ago|reply
Please, no. Your application belongs on the web. I can already tell when applications are written with middleware, cross-platform tools, electron, etc. because they always run like trash. They offer no benefit over a website and only open up your machine to new attack vectors. I know I'll catch flack for this, but we shouldn't lower the bar to entry here. Native app development is not significantly more difficult than web and it's drastically better for the end user.
[+] jbroman|5 years ago|reply
Have you tried making an installable PWA? This should allow you to get an icon, notifications, and a separate window.
[+] aantix|5 years ago|reply
The JS performance in mobile safari is pretty incredible.

What can native do currently that js/html would have difficulty with?

[+] jitl|5 years ago|reply
See also the blog post: https://kofi.sexy/blog/multi

The swift-only, programmatic approach without Xcode or the typical app framework is very cool! Assembling those parts seems like a great learning experience.

(More interesting to me than the actual functionality)

[+] saagarjha|5 years ago|reply
A couple of nitpicks about the process:

> NSMakeRect/NSMakePoint

Generally I prefer the actual constructors.

> NSWindow.BackingStoreType.buffered/NSApplication.ActivationPolicy.regular

You can just use .buffered/.regular.

> let _ = NSApplication.shared

Just _ = NSApplication.shared works: https://github.com/saagarjha/DarkNight/blob/0e3aef8559b634ce...

> Rizwan Sattar wrote a neat workaround that monkey-patches NSBundle, which I’ve translated to Swift 4 below

Don't do this, it will stop working (crash!) once you update your Swift version and the compiler is smart enough to start making direct calls. As far as I am aware, this is the correct way to do it: https://github.com/saagarjha/DetailsViewer/blob/master/Detai...

[+] spilk|5 years ago|reply
Sounds similar to the old Fluid website wrapper for MacOS X ( https://fluidapp.com/ )
[+] gwbas1c|5 years ago|reply
I love fluid apps!

One thing I've always wanted is a Chrome plugin to redirect links into a dedicated fluid application.

[+] hundchenkatze|5 years ago|reply
This is pretty neat :) I read the blog post[0] about it too, and I definitely feel your multiple chat app pains. I'm curious to hear more about why you avoided Xcode and ViewControllers. In general I know many people dislike Xcode, but I've been doing iOS dev for a while now so I guess I'm used to it (it's a love have situation for me at times)

[0] https://kofi.sexy/blog/multi

[+] hkgumbs|5 years ago|reply
Thanks! Honestly my reasoning for avoiding XCode is fairly thin—I just hadn't used it before and didn't have it installed when I started. I imagine if I took the time to learn it, it would be fine. But I do also feel a bit weird about how developing for certain platforms requires you to use a specific IDE. I thought that was part of the goal of Swift (vs ObjC), but I may be just reflecting my own biases :)
[+] shp0ngle|5 years ago|reply
I’m probably missing something... what’s the positive of using this instead of just opening a few browser tabs?

edit: oh I see... single notifications and simple switcher. OK, seems reasonable enough

[+] stevewillows|5 years ago|reply
pretty slick. For web apps, I've been using this as a zsh alias to launch whatsapp and a few other similar sites without any toolbars (etc)

    /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --app=https://web.whatsapp.com --kiosk
[+] econcon|5 years ago|reply
Those with Mac development experience. What's the earliest way to make a screenshot app?
[+] saagarjha|5 years ago|reply
Depends on what you're trying to screenshot, but CGWindowListCreateImage is probably the function that you want in most cases.
[+] archildress|5 years ago|reply
The iOS image recognition, done on-device as I understand it, is one of the coolest things that it seems no one talks about.
[+] rasen58|5 years ago|reply
Where does that fit into this macOS app?
[+] ngcc_hk|5 years ago|reply
Don’t get this. Anything to do with this macOS app?