darling
Run macOS software on Linux
TLDR
Run a builtin command
Run a specific program with arguments
Open a macOS shell
Shutdown the service
SYNOPSIS
darling [options] <subcommand> [arguments]
Subcommands:
shell [<command> [<args>...]]
run [<options>] <program> [<args>...]
path [-l] <macos-path>...
version
PARAMETERS
-v, --verbose
Increase output verbosity
-q, --quiet
Decrease output verbosity
--root=<PATH>
Use alternative Darling root filesystem
--env=<NAME>[=<VALUE>]
Set macOS environment variable
--preload=<LIB>
Preload specified DYLIB
--app[=<NAME>]
Treat argument as app bundle (for run)
--help
Display help and exit
--version
Display version and exit
DESCRIPTION
Darling is an open-source compatibility layer for running macOS and iOS software on Linux. Similar to Wine for Windows apps, it translates Mach-O binaries and Darwin system calls to native Linux equivalents. It supports command-line tools, libraries, and some GUI applications via ongoing Cocoa framework reimplementation.
Key features include a dyld (dynamic linker) emulator, Mach microkernel emulation on Linux primitives, and a pseudo-filesystem for macOS paths like /System. Users install macOS SDKs or binaries, then execute them seamlessly. While CLI tools like clang or otool work reliably, full App Store apps are experimental due to incomplete AppKit support. Ideal for developers testing cross-platform code or running macOS utilities without a Mac.
Requires a compatible Linux distro (x86_64), Darling installation via packages or source, and often manual dyld cache generation for performance.
CAVEATS
Experimental; many GUI apps crash due to incomplete frameworks. Requires x86_64 Linux, macOS SDKs/binaries, and dyld cache setup. No ARM support yet. Security risks from running untrusted macOS code.
SUBCOMMANDS
shell: Starts interactive Darwin shell.
run: Executes Mach-O binary or app bundle.
path: Converts macOS paths to Linux equivalents (-l lists all).
version: Prints Darling version.
EXAMPLES
darling shell
darling run /path/to/clang --version
darling path /usr/bin/env
HISTORY
Development began in 2019 by Lucas Nazario as a Wine-like layer for Darwin. First public release in 2021 with basic dyld and shell support. Active on GitHub with community contributions; version 1.0.x focuses on CLI stability, ongoing Cocoa work for v2.
SEE ALSO
wine(1), box64(1), qemu-x86_64(1)


