Darling – Run macOS software on Linux
darlinghq.org
darlinghq.org
With that in mind, some recent versions of Adobe software like Photoshop have worked fine in Wine for a while now.
So sorry, no
I use Natron a lot for retouching but few people will know about or consider this because it is aimed at film compositing.
But if one wanted to create something better than PS on Linux, looking at professional compositing apps (Nuke, Fusion, etc.) and their OSS clones like Natron would probably be a good starting point.
While it is absolutely true that you can do professional work with this you have a very steep learning curve, bad UX and feature overload.
The latter is really a core reason for the bad UX: developers love to add features. Every feature you add becomes another module or another slider.
Every slider or widget you add creates an extra dimension for the parameter vector an artist has to explore to get the result they want.
Less is more. This is contraintuitive for developers. As a developer I would say it is because of the warm, wholesome feeling that adding another feature gives you when you do. :)
Choosing what to leave out or how to combine stuff into fewer widgets is one of the hardest parts of software product development.
And this is the missing piece in so much OSS software.
Just for example, the Phase One (DT-like commercial app) HDR module (which just allows HDR compression of shadows & highlights) has two sliders that cover 95% of use cases.
DT has seven sliders & one dropdown in it's Shadows & Highlights module. Yes, they probably cover the other 5% but a what price?
That's why professional creative software still has an edge and that's why the prospect of being able to run macOS graphical software on Linux is very exciting to me.
I just found this documentation from Godot: https://docs.godotengine.org/en/stable/development/compiling...
Actually, there's an xcode example in the doc as well: https://wiki.darlinghq.org/what_to_try
I mention all this because even with that nearly 18 years of experience, I am really straining to think of a single non-GUI application for macOS that wasn't a Unix command line port. There are some Apple-provided system utility commands, and, fine, but probably of pretty marginal use in this context.
I think it's a great project, don't get me wrong, and I wish I had the system-programming chops to help. But it still seems to mostly be a proof of concept. I hope it keeps growing!
I'd actually like to know what non-Xcode command line apps you (or anyone else reading this!) is using that explicitly target macOS and nothing else - I've used Macs for only about five years and primarily for dev work, so maybe there's a treasure trove of cool stuff I'm missing.
There's osascript for executing Applescript code, plutil for working with plists, and diskutil for making DMGs. Those are just off the top of my head, there's probably others too.
I'd consider diskutil and plutil vaguely part of the "Xcode toolchain" (as in, using them (especially from outside macOS) is largely geared towards app development). That's certainly a huge use case for Darling - I actually think it would be interesting if they explicitly (but maybe not very loudly?) aimed for giving people access to iOS/macOS development without Mac hardware, rather than trying to be a general-purpose emulation layer.
Off topic, but does anyone know of any good IINA alternatives for Linux? I have not found anything that beats it in terms of polish.
VLC is nice, but IINA does one thing really well, and is based on MPV, with all of its powerful configuration options and nice keybinds.
SMplayer is the one that I use on both Windows and Linux, though it's starting to show its age.
That's exactly how I would describe the default mpv UI :)
https://mpv.io/ or plenty of other options here https://github.com/mpv-player/mpv/wiki/Applications-using-mp...
But then again, Linux has /proc and a boatload of common APIs beyond kernel calls.
In a more general sense, though, this is why BSD systems generally try to avoid bloat in the core utilities. It's not about the code size - it never was - but rather the overhead on maintainers and users.
Is there such a list?
Frankly, those are about the last pieces of desktop software that prevent me to switch to Linux.
So sorry, no
> Does it support GUI apps?
> Almost! This took us a lot of time and effort, but we finally have basic experimental support for running simple graphical applications. It requires some special setup for now though, so do not expect it to work out of the box just yet. We're working on this; stay tuned!
PureDarwin isn't even Linux.
This seems like it's a big deal.
If I can run iTerm2 on Linux… snap. Um, I would seriously consider switching entirely over to Linux.
My killer apps that make it hard for me to switch:
- iTerm2 (must-have)
- OmniGraffle (really nice, but not critical I guess)
- Little Snitch (I understand there are alternatives, but LS is so nice!)
- MoneyWell (budgeting—haven't found anything better)
If anyone has any experience running those apps under Linux, please let me know.
I bet it works internally by exposing a separate network device that filters traffic much like Wireshark, and the low-level abstractions for doing something like that are very OS-specific.
https://gnunn1.github.io/tilix-web/
Then you can also enjoy:
- running containers natively without a clunky VM
- KVM virtualization - say goodbye to virtualbox
- middle-click paste - sounds odd but is really intuitive
- infinite desktop customization
- level up your linux skills - nothing does this faster than running linux as your daily driver
- no longer at the mercy of one company potentially removing x86 for ARM because it benefits them not you https://www.theverge.com/2020/3/27/21196611/arm-macbook-desk...
- being permitted to choose your own hardware. And even (heaven forfend) repair it.
Everything else listed on iterm's site seem fairly trivial to do with tilix and other linux emulators in general.
In any event, lots of this stuff is better implemented in the shell itself (zsh and so on) much more portable that way.
Both iTerm2 and tilix are great on the desktop. Terminals are just a solved problem these days. Hell even Windows is catching up with their new terminal app (not to mention WSL(2)).
* You can set a color for each tab, so you instantaneously target the good ones
* You have an history replay
* Picture integration. Useful to visualize data from sql query in my psql shell
* And some others I forgot.
I hope that more and more, there will be linux's native alternatives when I'll switch the day after the hypothetical death of my late 2011 macbook
I hear things about kitty but it’s not an Ubuntu package so ️
Tilix is very much like iTerm2. Simple to use too.
Is this something Apple is likely to try and break constantly with software updates?
I think there's been a notable upsurge in interest though, so I expect good things to happen with it this year.
Of course, it might be possible to re-use macOS' frameworks, but Apple would probably sue anyone who tries to offer that into oblivion.
BTW. I think this is a great project, but there are some people who seem to be rooting for using this for running Creative Suite on Linux. That won't happen anytime soon, if ever. Wine is your best shot.
https://wiki.darlinghq.org/documentation:system_call_emulati...
Their Linux kernel module does seem to be XNU based, but it feels like poor design / a rushed job to run it as a Linux kernel module instead of isolating it in userspace.
You see, people think XNU is just another kernel, but it's very different from Linux or the Windows kernel. The only reason why we need a kernel module is Mach IPC. But this IPC is so critical and omni-present that a user-space process cannot even do a sleep() without using it. Even event loops in every GUI application use Mach IPC on the lowest level.
There is no way of implementing the full semantics of this IPC mechanism without a help from the kernel. For example, Mach IPC involves making direct memory copies between processes.
So even if we decided to take the "wineserver" approach, which would set us back by several years, the result would be super slow and not very compatible.
Also the userspace on macOS is quite different from other operating systems, which is why it's all taking us so long. MacOS is a bloated system with a huge number of layers sitting between the UI toolkit and the windowing server.
Imagine creating Wine from scratch. How much functionality would you need to implement to provide the correct behavior for a super-simple native GUI application? Probably just USER32, GDI32 and KERNEL32 would do. On MacOS, this is AppKit, QuartzCore, Foundation, CoreFoundation, libobjc and libSystem (which includes huge components such as libdispatch and emulating complex APIs such as kqueue).
FYI: The reason why we don't emulate raw syscalls is because this is not possible from kernel modules, unless you resort to techniques that could easily destabilize the whole system.
> How much functionality would you need to implement to provide the correct behavior for a super-simple native GUI application? Probably just USER32, GDI32 and KERNEL32 would do. On MacOS, this is AppKit, QuartzCore, Foundation, CoreFoundation, libobjc and libSystem (which includes huge components such as libdispatch and emulating complex APIs such as kqueue).
I don't think "number of APIs" is the reasonable benchmark for how difficult it might be to get a GUI application up and running. It's totally possible that macOS might more eagerly split out functionality into different systems while Windows combines that same functionality into relatively few. I don't know how true that is, but it'd be interesting to compare based on the depth of those libraries rather than just the quantity.
And from what I understand about Wine, all three of those Windows libraries are incredibly complex and convoluted, and even to this day have gaps in their Wine equivalents. Assuming macOS' greater quantity of necessary libraries add up to the same degree of API surface to be reimplemented, what y'all are doing is impressive, to say the least (and sure, Wine's more usable right now, but Wine also had a decade or two of a head start).
I'm sorry, what? How?