Darling – Run Mac apps on Linux
darlinghq.org
darlinghq.org
Even if you do get dedicated mac instances, managing them is a bit of a nightmare since MacOS isn't designed to be headless.
Your comment is making me want to do a 180 as Flutter’s future is now scary to me.
1. Be the change and make a framework that helps people create new and better toolchains for making iOS apps. It's more work, and requires taking the challenging path sometimes, but it's the better play for the long-term success of the community.
2. Use existing solutions that are locked in Apple's ecosystem, thereby railroading the community so that they too are locked in to Apple's ecosystem.
Why Apple's ecosystem worries me: Apple has shown time and time again that they will do the absolute minimum required to get people in the door before shutting it behind them. If someone else tills the soil and grows an orchard of delicious fruit that's reasonably priced and good for you, Apple will spend millions to fly in fruit trees with fruit that's almost as good and put a 'free with contract' sign up. What they don't mention is that they have no intention of watering the trees once the "competition" goes out of business.
https://assetstore.unity.com/packages/tools/utilities/ios-pr...
I doubt any employer would let you do this though. And I have my Mac Mini for recording music and building IOS apps. But it is neat to see it's possible
Why?
[0]: https://github.com/apple-cross-toolchain/rules_applecross
That doesn't mean that this is a scalable solution for running our business on, but for the occasional one off mac build to make sure it's not fallen behind, it works just fine for us.
In some other countries I have seen an iMac been shared across teams that would take turns at the device.
In Germany I would state the same statement, we live between Windows and macOS on the office, but I also have some care for those that aren't so lucky.
[0]: https://github.com/apple-cross-toolchain/rules_applecross
https://news.ycombinator.com/item?id=12854895 [nov, 2016]
https://news.ycombinator.com/item?id=19772322 [apr, 2019]
https://news.ycombinator.com/item?id=22700365 [mar, 2020]
https://news.ycombinator.com/item?id=24683669 [oct, 2020]
This is an amazing and important goal! Thank you so much for dedicating your time and efforts to this!
Some Dev commandline tools and compilers are starting to work, so these kind of environments will probably come first which will provide better performance than running under virtual machines.
Then it's not useful as the only thing interesting on macOs are the GUI applications. All the tools I used on macOs for the command line where already available on Linux.
You mean like GNUStep?
This is Hacker News, not Product Hunt
Maybe by posting here they will get more people to help make GUI happen
From the link.... "Zig is a general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software."
If you want to contribute there is an active community on Discord.
> With WSL 2, yes! See the documentation for more details.
https://docs.darlinghq.org/wsl-build.html
Darwin on Linux on Windows...spins totem really fast.
Who would've thought this would be a thing 7-8 years ago?
the appeal back then (and from I hear people say until today) was always how everything is neatly integrated. a coherent system from the hardware all the way up the stack. not sure if that is overselling it but at least that's how I understand is what people are happy to pay for.
While I do have some alternatives on my Linux system (Obsidian, Espanso, uLauncher, a bunch of scripts), they're not as integrated and somewhat of a pain to maintain properly.
Plus first-party apps like Safari with its fluid trackpad gestures, Photos with its iCloud integration, and of course Xcode, because being able to build/debug things for macOS/iOS is a bonus feature I can offer as a developer.
The list is a lot shorter than 10 or 15 years ago. Most new apps that come out are Electron, but even then there's sometimes no Linux port (Trello, WhatsApp).
I also like the integration between my phone and my computer. For example, taking a picture on my phone and having it show up in Photos automatically, the ability to copy and paste between my phone and computer, the ability to make phone calls on my computer, the ability to share browser windows between my phone and computer, and the ability to use my iPad as a second monitor.
I've been using Linux since Slackware's first release, and still use it today, but it isn't my main desktop for these reasons.
that rules out any Adobe product :)
I doubt Ghostscript would be up to it performance wise as much of the DPS is backed by hardware nowadays.
Anyway, good luck!
This is a commonly repeated myth. The Quartz graphics framework does not use PDF internally. Its rendering model is roughly based on PDF, but not much more so than any other vector graphics format, like SVG or Cairo.
It'd be nice to have a gvisor/UML like option that would let it run entirely in user space.
> Emulating XNU system calls directly in Linux would have a few benefits, but isn't really workable. Unlike BSD kernels, Linux has no support for foreign system call emulation and having such an extensive and intrusive patchset merged into Linux would be too difficult. Requiring Darling's users to patch their kernels is out of question as well.
I wonder what such a patch set might look like.
The advantage of Wine is that it's more mature. The disadvantage is that Windows is possibly the least Unix-like operating system in popular use and the number of ugly hacks they have to use to make Linux do what Windows does will never cease to be a source of friction and heisenbugs.
Whereas macOS is a Unix, so Darling doesn't have to imitate all the eccentric behavior of the Windows kernel, it can just implement the API.
There’s also libraries like GCD which GUI applications use and expect to work and have interesting interactions with pthreads. I’d guess it will be a while before they have simpler third-party apps working let alone something like Office. I see that they have the Coocotron examples working but Cocotron is the precise subset of the API that they’ve actually implemented so it’s not really indicative of the work in front of them.
CoreFoundation already (partly) exists for FoundationKit support though I’d probably grab the GNUStep code for that.
Any old Carbon APIs might be a hassle.
Compositing is where it’d get tricky even with Ghostscript. It’d be slow without hardware support.
Impressed they can load dyld though. That’s a tricky thing to do.
most macOS software uses the APIs offered by userspace libs almost exclusively. They represent a huge and vast interconnected set of libraries, developed over decades. Maybe not quite as large as the entire Windows API, but similar in scope.
EDIT: It says "some" GUI apps are working / experimental, so probably Messages is not there yet, just curious if anyone has tried.
Pop-up box comes up, here you can have as many credentials as you need, it saves them, just double click one and it will enter it in your terminal window. This an absolute life changing feature for me. I manage a ton of servers, and yeah we use SSO to ssh into them, but that is just ssh access. Once you are on a server they maybe several passwords and or accounts you need to login to or accesses (like postgres, mongodb, redis, etc.). Of course we have seperate passwords for each environment, so having this feature is pretty much a must for me now. Any terminal software that doesn't have a feature like this is a no-go for me (and so far iTerm2 is the only one I have found that has this feature, I have looked high and low for something similar native in Linux but have only come up with bupkis).
The other features I like about iTerm2 are pretty standard in at least a dozen or so other terminal emulators (tabs, split windows, etc.). Password management is THE feature that is painfully missing from Terminator, Tilix, etc.
Never thought of incorporating this in the terminal emulator. I just use a command line client for my usual password manager. Any reason you can't do that?
The obvious issue with this is the need to be in a session on your local machine. For example you would have to run the cli password manager, then ssh, then login to postgres. Then say you need to go to another machine and use a different password, now you have to back out to your local machine, run the password command again, then login to the other machine. The tool passmgr for example copies the pw to clipboard for 30 seconds, so now you up against the clock to get in and use it, what if you sit on remote machine for half the day? Now you have to constantly flip back to your local machine then back to the remote machine.
With in integrated password manager it doesn't matter what machine I am on, or even if I am daisy chained several ssh sessions deep, I can always immediately get access to the passwords I need.
Either way, if you prefer something more interactive and keybind-y, one portable alternative you can use regardless of terminal emulator without necessarily involving a clipboard is to plug the password manager CLI into a terminal multiplexer, e.g.:
https://github.com/BlueDrink9/tmux-passwords
https://github.com/rafi/tmux-pass
https://github.com/Alkindi42/tmux-bitwarden
(I understand that this is kind of the opposite of what the terminal emulators you listed are about, which is having the terminal emulator do the multiplexing and other integrations. But you can get the same stuff done and it's more portable.)
> Almost! This took us a lot of time and effort, but we finally have basic experimental support for running simple graphical applications.
So, I guess for now it makes sense there are no screenshots
TL;DR: GUI almost working. I assume screenshots will be added when it is.
I think part of the problem is that most software that you would want to run on Linux from MacOS are also on Windows, and Wine/Proton already exists. As a result, I think people don't really feel the urge to contribute to Darling when they could just contribute to Wine.
I've been keeping an eye on it, and will continue to keep an eye it, and I've noticed the development is very slow. At the rate it's going, it'll be years before it'll be a viable solution like Wine is. I hope visibility for it will increase so that the current devs get some more help on this.
I'd still like to give thanks to the devs as this is a very ambitious project. I'm sure people used to say "it'll be years before it'll be a viable solution" when Wine was in its infancy.
Having Linux run iOS, macOS, Android, and Windows applications running would be nothing less than mind-boggling, and would finally get people to stop yelling that nothing runs on Linux.
I don't think so. Wine was viable for me, playing Starcraft Brood Wars in 2000.
Other than games, in 2000 it was running a significant number of minor applications for me.
So? Darling is 9 years into its[1] development and hasn't really reached the maturity that Wine had after 7 years of development.
If memory serves me correctly[2], I'm quite sure that I played one or two Directx games on Linux using Wine in Dec-1998 - that's 5 years of development.
Fair enough, most of the games/apps did not run (Dune 2k was listed as "working" so I ran out and bought a copy only to find that it got no further than the game menu screen) but it ran more Windowed programs and full-screen games back then than Darling does now, so I don't think that I am performing an unfair comparison in that regard.
It might be that there is just not enough contributors to Darling to proceed at the pace that Wine did.
[1] I don't believe an apostrophe goes between the 't' and the 's'.
[2] At this stage of my life I treat my memory as a rough guide to past events, not as a record of what happened, so I could be wrong about the dates towards the end of the 90s.
In 1993 wine had a much smaller target though, windows was in its infancy. Darling started in 2012, over a decade after mac-OSX, which even at that point was an established OS brand.
Nothing will stop those people from yelling that, because it hasn't been true in a very long time and that doesn't stop them. These are the same people who say they don't want to run Linux because they don't want to compile their sound card drivers. They are already way outside of rational territory and deep into religious territory. In their minds Linux hasn't changed a bit since 1999, even though if you were to compare mac os from that time period against modern linux, they would become enraged at the unfairness and injustice.
It's rational for me to want my sound card to work without having to compile code. No other operating system would make me compile code to fulfill such a rudimentary and basic expectation. That's not religion, that's usability.
I can't imagine trying to walk my parents through compiling a kernel driver to get their hardware working, and that's why I've never tried to get them to use Linux. If you want normal people to use Linux you should never, ever, ever ask them to even use a terminal, much less a compiler.
I've used Linux on the desktop, on and off, for over 20 years -- in fact, since the year 1999 as you mentioned. It still sucks. Every time I come back to it I have at least one driver problem. It's not ok, and it's not defensible. Instead of defending it and blaming critics for being "religious," admit that it has faults. Things only get better when we recognize the deficiencies and fix them, as Valve has been trying to do with Proton.
I can only assume its hardware disparity. I never have much money so I always get older cheaper hardware I can afford, where support has most likely had time to mature. Perhaps people with these negative impressions of Linux are trying to install distros on newer, bleeding edge stuff?
One area where I am dramatically wrong about this is with regards to high performance video drivers though that is improving. Even there though, a distro like Manjaro will likely work perfectly out of the box. To get performance a gamer wants might require a fair bit more knowledge but that said gamers tend to spend quite a bit of time managing and tuning things even on Windows.
I also tried a Dell XPS, but there were some BIOS problems, the keyboard layout was awful (which is not a Linux problem), and Hibernate was spotty at best.
Bad keyboard layout was also a problem with the Entroware.
Hibernate works perfectly on my LaptopsForLinux model. :+1: I just wish there was a keyboard protector in case I spill coffee on it.
Maybe laptop nirvana will finally be reached with the Framework when it finally reaches these shores. [EDIT] It has arrived.
I have personally ported Linux to many devices the manufacturer never intended it to run on and I even have code in the kernel. I can generally make Linux run on anything by compiling a custom kernel or drivers with maybe a custom patch or two.
I love having that freedom but that freedom is too often confused as the default end user experience of someone that goes to a store and buys a computer that ships with Linux.
When comparing Linux vs Windows or MacOS for end users then talking about porting to unsupported hardware is silly. If you want to run MacOS on unsupported hardware it will take some hacking too.
I have helped hundreds move to Linux many of whom are elderly and non technical. I have them go buy a computer that ships with Linux and is supported so they never need to open a terminal and everything just works. Dell, System76, and Purism all have fantastic offerings here and I do not know of anyone who has switched back.
I've found numerous times Ubuntu just doesn't want to work. Ether Wifi or Bluetooth is broken.
Fedora seems to be a bit better, it's my daily driver on my old lightweight laptop. My big gaming PC runs Windows.
I make music and play games with it, no matter what the FOSS community wants to think , Linux doesn't come close in these aspects.
Each OS does different things well. Linux is very good for running on older hardware, or small computers like a PI.
Windows is exceptional at gaming and game development ( really any C# dev). Visual Studio is the greatest IDE ever made. If I had to write C# in note pad I'd give up coding.
Mac OS is best for creatives. Logic Pro is only 200$ , and easily replaces an entire studio. With Logic and a 300$ mic you can make something very nice. Your also forced to own a Mac if you want to make iPhone apps.
The music creation ecosystem on IOS is miles ahead of Android. It's at the point where I'm considering am iPhone in addition to my iPad for on the go music creation.
At the same time, as a phone, my Pixel 6 is everything I could ever want. Automatically letting me screen calls saved me hours per months.
I'll forever love Linux for giving a stable NodeJS dev environment when Windows wouldn't. Without desktop Linux I would of never been able to develop the apps which got me my first job. But you need to be open to hopping in the terminal.
As far as WiFi is concerned, I'm more likely than not to blame the crap connection on the access point. I've had great success replacing rubbish APs with something basic but good, but for work I want wires if at all reasonable.
Have you tried out Rider? https://www.jetbrains.com/rider/
It's one of the JetBrains commercial IDEs, but since i got the Ultimate package of their products for Java development and some other stuff, i also tried out Rider and found it to be pretty pleasant for everything from web development, to game development (with Unity in particular, though Godot also works obviously, as would other engines like Stride, or NeoAxis or whatever).
They have some pretty nice features for Unity, like giving you hints about methods which are slow and are used every tick, or maybe alternative methods that could be a better fit in some cases: https://www.jetbrains.com/lp/dotnet-unity/
Now, some people say that Rider's a bit sluggish like some other JetBrains products, but in my experience it's pretty close to Visual Studio (faster startup, slower when indexing project, faster for many code hints, slower for autocomplete), though maybe because of me enjoying messing around with the memory limits and usually increasing them slightly.
Nonetheless, for enterprise projects, i'd probably just continue using Visual Studio for consistency's sake. Heck, last i checked, Visual Studio even had plugins for supporting Python and other languages, which was interesting to behold. Apart from that, i'm not really aware of many other IDEs for .NET/C# out there, maybe MonoDevelop which is free, but also kind of abandoned: https://www.monodevelop.com/
Just figured that i'd mention JetBrains products in the first place, because they're my toolbox nowadays for which i reach whenever i want to do some development with the IDE helping me out regardless of whatever tech stack i'm dealing with (at least the common ones), so it has largely replaced Visual Studio for me. Though i still reach for Visual Studio Code for more rapid/lightweight editing of scripts, confguration files and such (or other text editors for when an IDE isn't necessary).
By the way: JetBrains is also working on a more lightwheight editor called Fleet which seems to be comparable with VS Code, at least visually. There's already a product page for that at https://www.jetbrains.com/fleet/
Visual Studio is going to be the best supported IDE for C#. I'm fine with having a Windows PC for that.
I still Dual boot on my old laptop
Admittedly, most of my complaints there would be about the different Android SDK versions and how sluggish and slow everything feels at times, as well as about how Android seems to have a stripped down JDK inside of it, which causes weirdness with certain libraries, as opposed to just having something like OpenJDK.
But hey, whatever works for you! I don't really think that there are that many (if any) alternatives for Android development, to be honest.
I'll agree Android dev is pretty frustrating, it's much better than it was just a few years ago, but it's still nowhere close to iOS. iOS users also tend to be much more willing to pay money, so there's that.
It excels at having a large plugin ecosystem, moreso than JetBrains products have (probably close to what Visual Studio Code has, just look at https://marketplace.eclipse.org/category/categories/programm...) and being a common base for a variety of other tools out there, due to its modular nature, but there are plenty of disadvantages to that approach (loose coupling that ends up being brittle and worse runtime performance come to mind) and the workspaces concept feels shoehorned on.
That said, some out there swear by it and admittedly the customized versions of it, like Spring Tool Suite (STS), provide a lot of value to them and numerous other people, so everyone should probably just use what fits their needs. For Android in particular, however, i haven't found an IDE that's as pleasant to use as for other languages. Oh well, high expectations be damned~
I legit quit a job since they wanted me to use Eclipse.
For the past several years I've been recycling Windows 7 and up laptops by giving them a second life with GNU/Linux, and everything Just Works most of the time, including sound, videocard, power management, etc. The only thing I've had occasionally not working is the volume and brightness buttons, but they work most of the time as well.
When my partner's Windows 8 laptop shit itself after an unconsentual upgrade, I installed Ubuntu on it, and it worked just fine out of the box, for years. This person is not a computer nerd by any means.
I'm not saying your experience is not valid, but it is the complete opposite of mine.
Separately:
> If you want normal people to use Linux you should never, ever, ever ask them to even use a terminal
What about Alexa or Siri? Would it be acceptable to ask them to use a voice-activated digital assistant to accomplish what people use the command-line for? What about a text-activated one, without the voice recognition problems?
I am not a big gamer on any platform. In fact, I was using my son’s Steam account. He uses Windows himself but I was running it on Linux. I only played a few titles but they all played pretty well given that it was on an older laptop. Steam itself installed from the standard Manjaro repository but I did have to compile a driver for the controller.
The giant youtube channel Linus Tech Tips has done a recent series of videos on gaming on linux. On Jan 1 they published a 15 min summary video that covers that 70% claim in a much more nuanced way: https://youtu.be/Rlg4K16ujFw
Punchline: it's kinda true, but there's plenty of struggle for new and multiplayer games still.
ProtonDB also considers a game as "working" if even a single person gave it a thumbs up, so the big "17,984 games work" on the home page is very misleading.
I think "asterisk" is warranted, since there are still show-stopper games that won't run without their precious kernel-level anti-cheat (sorry professional Valorant players), but the asterisk is shrinking, not growing. It's a fairly small caviat at this point, especially for more casual audiences, and I kinda wonder why it was such a sticking point for Linus. Wine is not a panacea, but if you look at the landscape and see the majority of Windows software running, I think there's hope in that.
That's a much more complicated process that either macOS or Windows.
Generally speaking, bluetooth is a complicated and proprietary mess though and many (especially cheaper vendors) don't bother testing at all. I'm actually amazed that bluetooth works as well as it does on linux. Taking a few minutes before a hardware purchase to check compatibility is a really good idea.
That seems like a terrible success rate, though, doesn't it? 1 out 12 bluetooth devices failed to work whereas they work 100% on Windows? For the average user, that is definitely going to be a dealbreaker.
I get told that I should have bought something that was Mac compatible, and no one says that Mac's have a terrible out of the box experience or that it makes it a deal-breaker.
Especially when the process on macOS or Windows is that they do not support that bluetooth adapter, they will never support it, and you should just buy a different one.
I do my hardware compatibility checking before I buy. If I'm going to have to track down and compile drivers, it's my punishment for wanting a bleeding edge thing, and I always know what I'm getting into.
I absolutely used to love macOS and thought that they must have the cleanest nicest code in the world because they have such a well-developed UI+UX, but in the end, the core code below it has the same wrinkles as any software project. They’re just paved over. Plus, Apple loves to let stuff fail silently.
[1] https://www.usa.canon.com/internet/portal/us/home/support/de...
Similar situation for Windows as yourself, only unsigned XP drivers.
Linux works without installing anything.
I agree that this is part of it. But I also just see plain antagonism against Linux because people recommend it. Just pure contrarianism.
But a lot of the recommendations for Proton are also "memey". It's a bad fit if you need Anti-Cheat or proper injection protection. And that's just the nature of the beast. A proper Anti-Cheat _shouldn't_ approve of the injection necessary to get Proton working
So I do have to keep a Windows installation myself. But Proton represents a really cool technical milestone. Weird the way people talk about tech in games.
Not wanting to "compile their sound card drivers" sounds like a very rational argument to me...
>In their minds Linux hasn't changed a bit since 1999
It did, but other OSes are also a moving target.
Seen Linux (the vlogger) try to get a basic system running?
(And I'm an old UNIX+Linux hat with 25 years of experience).
I am remembered of it every day I have to reboot Network Manager on Ubuntu LTS to reconnect to my wlan, on a EEE PC that was even sold with Linux on it.
When this netbook dies, the only desktops I will keep using are on the form of Android, VMWare or some headless stuff, anything beyond POSIX APIs is always expecting too much.
I literally had to do this to get my sound card working on a new laptop recently. I know it is partially my fault for choosing such a new laptop and expecting Linux to work on it, but still... it's not an unreasonable expectation to have in 2022.
Also, software that doesn't run in wine these days is usually due to anti-piracy/anti-cheat as they try to dig into your operating system. Since these are anti-ethical to how Linux works, if you are fine running these sorts of things then why would you try and switch to Linux?
And whenever anyone asks if they should switch to Linux,if all they want it to be is a Windows emulator then I would recommend against it.
In common hardware and software configurations things have gotten way better indeed!
However, if you venture outside of what's commonly available, expect trouble, same as you'd get with FreeBSD and most other OSes out there.
For example, i bought a netbook much like this one: https://techbite.eu/en/laptopy/laptop-zin-3-14-1 because it fit within my price point (a university student at the time) and my other requirements for something lightweight and compact for note taking.
Sadly, upon purging Windows from it (since 4 GB of RAM total made it unusable) and replacing it with Debian, Ubuntu, Fedora or Linux Mint (in approx. that order), i ran into quite a few issues:
- on some distros (Fedora in particular, i think one or two more) the touchpad didn't work by default, some piece of configuration needed to be edited
- on some distros (can't remember which), sound didn't appear to be working correctly
- on none of the distros Wi-Fi seemed to work correctly out of the box
That last bit was especially sad, since the netbook doesn't have an ethernet port by itself, so i had to do an air gapped install of some custom drivers that someone had patched together... but not before discovering that most distros out there don't have GCC out of the box (or some of the other dependencies, can't remember) and that putting it on a USB stick is curiously difficult, when the install will fail unless you also manage to download all of the dependencies that you need for the package and installing all of them at the same time (no CD/DVD drive either, by the way). Oh, and curiously compiling drivers and messing around with DKMS or whatever isn't as straightforward as one might always expect, something about headers and versions and whatnot...In the end, i got it working, sort of. After realizing that the fingerprint scanner which was working in Windows isn't detected at all as a device on Linux, i just gave up on that particular aspect and took Wi-Fi working as enough of a success for my needs at the time. Also, it seemed like the fingerprint scanning software on Linux had a very specific set of supported hardware, a la sound drivers in these older days.
Now, you could argue that i'm using a configuration that isn't necessarily supported with some seemingly random piece of hardware and you'd probably be right in doing so, since the official drivers were only available for Windows on the manufacturer's site. But i'd argue that it doesn't really matter because the outcome is what's important and what will impact how people feel about the OS.
The takeaway here is that no matter what you do, you probably should stick to the more common hardware configurations and devices out there. And not just in regards to Linux, but also things like your smartphones (my rugged model hasn't received any actual updates in a while because the manufacturers clearly don't care, as it turns out) and even SoC devices (e.g. Raspberry Pi over alternatives, unless you can get a really good deal).
That said, Linux has come a long way and i hope that most of the distros out there will just keep getting better, since Mint + XFCE made the resources constrained hardware pretty usable, as would Debian + XFCE and others (DEs like LXDE or LXQt or whatever). That's pretty cool, in my eyes!
Now, if i actually wanted a laptop as a daily driver with Linux on it, i'd perhaps look into the direction of the ThinkPad models, either older or newer ones, whichever i could afford. In my experience, they have superior keyboards, good I/O, good driver support and are built to be reasonably sturdy (as long as you don't mind the bulkiness)! Granted, Lenovo might ruin the series in the future yet, after the whole rootkit scandal a few years ago.
So yes, on the one hand people will want things like Sketch and Logic Pro, and on the other they will want good trackpads and reliable hibernation.