darling README

The project's README from github.com/darlinghq/darling. As one markdown file: README.md.

Darling logo


Darling Latest Release License Donate

Website • Community Discord • Bug Tracker

Introduction

Darling is a runtime environment that allows running macOS applications on Linux without a virtual machine. It consists of a Mach-O binary loader and a userspace kernel server (darlingserver) that implements macOS's Mach IPC, POSIX, and Darwin syscall interfaces on top of Linux — along with reimplementations of Apple's frameworks, such as Foundation, AppKit (based on Cocotron), CoreAudio, and CoreFoundation.

Darling's low-level components (XNU, libSystem, Security) are based on Apple's open-source releases. Higher-level frameworks are being actively reimplemented, with many CLI tools already functional. GUI application support is in active development, backed by an AppKit implementation and an initial Metal backend powered by Vulkan translation.

The code of Darling is licensed under GNU GPL 3.0. Individual submodules may be licensed differently, as indicated within each of them.

Install

Official packages for some distributions are available under releases.

Community Packages

[!CAUTION] These packages are neither maintained nor vetted by the Darling team.
Use them at your own risk.

For a list of community packages, see the Community Packages section in the Darling documentation.

Build Instructions

For build instructions, visit Darling Docs.

Usage

Prefixes

Darling has support for DPREFIXes, which are very similar to WINEPREFIXes. They are virtual “chroot” environments with a macOS-like filesystem structure, where you can install software safely. The default DPREFIX location is ~/.darling, but this can be changed by exporting an identically named environment variable. A prefix is automatically created and initialized on first use.

Please note that we use overlayfs for creating prefixes, and so we cannot support putting prefix on a filesystem like NFS or eCryptfs. In particular, the default prefix location won't work if you have an encrypted home directory.

Hello world

Let's start with a Hello world:

$ darling shell echo Hello world
Hello world

Congratulations, you have printed Hello world through Darling's OS X system call emulation and runtime libraries.

Installing software

Working with .pkg files

You can install .pkg packages with the installer tool available inside shell. It is a somewhat limited cousin of OS X's installer:

$ darling shell
Darling [~]$ installer -pkg mc-4.8.7-0.pkg -target /

Darling does not support installing .mpkg files yet

The Midnight Commander package from the above example is available for download.

You can uninstall and list packages with the uninstaller command.

Working with DMG images

DMG images can be attached and detached from inside darling shell with hdiutil. This is how you can install Xcode along with its toolchain and SDKs (note that Xcode itself doesn't run yet):

Darling [~]$ hdiutil attach Xcode_7.2.dmg
/Volumes/Xcode_7.2
Darling [~]$ cp -r /Volumes/Xcode_7.2/Xcode.app /Applications
Darling [~]$ export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
Darling [~]$ echo 'void main() { puts("Hello world"); }' > helloworld.c
Darling [~]$ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang helloworld.c -o helloworld
Darling [~]$ ./helloworld
Hello world

Congratulations, you have just compiled and run your own Hello world application with Apple's toolchain.

Working with XIP archives

Xcode is now distributed in .xip files. These can be installed using unxip:

cd /Applications
unxip Xcode_11.3.xip

darling (darlinghq/darling)

emulation
Searching Database…

13.5K ·GitHub
What is this?Darling is a runtime environment that lets you run macOS applications on Linux, without needing a virtual machine.
Is this like Wine but for macOS apps?Yes, conceptually it is similar to Wine: it provides a Mach-O binary loader and a userspace kernel server (darlingserver) implementing macOS's Mach IPC, POSIX, and Darwin syscalls on top of Linux, plus reimplementations of Apple frameworks like Foundation, AppKit, CoreAudio, and CoreFoundation.
How do I install and start using it?Official packages for some distributions are available under releases; otherwise you build it yourself following the instructions on Darling Docs. Once installed, a DPREFIX (a virtual chroot environment similar to WINEPREFIXes) is automatically created on first use, defaulting to ~/.darling.
Do I need a macOS filesystem or encrypted home directory to worry about?Darling uses overlayfs to create its prefixes, so it cannot support putting the prefix on filesystems like NFS or eCryptfs, and the default prefix location won't work if your home directory is encrypted.
Can I run GUI macOS apps, or just command-line tools?GUI application support is still in active development with an AppKit implementation and an early Metal-over-Vulkan backend; many CLI tools already work, but higher-level frameworks are still being reimplemented.
What platform does this run on?Darling runs on Linux and emulates the Darwin/macOS environment on top of it.
Can I install Xcode inside Darling?Yes, you can attach Xcode's DMG image and install it along with its toolchain and SDKs using hdiutil, though Xcode's own GUI doesn't run yet — you can still compile and run programs with its toolchain.
How do I install .pkg or .xip software inside Darling?Use the installer tool inside the Darling shell for .pkg packages (mpkg is not yet supported) and the uninstaller command to remove them; .xip archives, like the ones Xcode now ships in, can be extracted with unxip.
What are similar projects?Madeira, NotProton, highball, darwin-vm, LuLu, swift, CocoaPods, visidata
Creator
darlinghq
Size
40.2 MB
Stars
13.5K
Age
13y
Commits · 90 Days