Skip to main content
The macOS client (MacFreeRDP) is a native Cocoa application built with AppKit. It wraps the FreeRDP library in an Objective-C frontend that includes a graphical connection dialog, certificate handling, and password entry.

Source layout

File / DirectoryDescription
client/Mac/cli/CLI entry point (main.m) and AppDelegate
client/Mac/MRDPView.mCore RDP rendering view (NSView subclass)
client/Mac/mf_client.mFreeRDP client context implementation
client/Mac/Keyboard.mmacOS keyboard event translation
client/Mac/Clipboard.mClipboard redirection
client/Mac/CertificateDialog.mCertificate acceptance/rejection dialog
client/Mac/PasswordDialog.mCredential entry dialog
client/Mac/MRDPCursor.mRemote cursor rendering

Building from source

1

Install dependencies

Xcode and its command-line tools are required. OpenSSL (or the system-provided LibreSSL) must be present.
xcode-select --install
brew install openssl cmake ninja
2

Configure with CMake

git clone https://github.com/FreeRDP/FreeRDP.git
cd FreeRDP
cmake -B build -G Ninja \
  -DWITH_CLIENT_MAC=ON \
  -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) \
  -DCMAKE_BUILD_TYPE=Release
3

Build

cmake --build build --target MacFreeRDP
The application bundle is created at build/client/Mac/MacFreeRDP.app.
4

Run

open build/client/Mac/MacFreeRDP.app
Or launch from Finder.

Graphical usage

On launch, the application shows a connection manager. Click + to create a new connection and fill in:
FieldDescription
ServerHostname or IP address (:port suffix for non-default ports)
UsernameLogin name (optionally prefixed with DOMAIN\\)
PasswordStored in the macOS Keychain
DomainWindows domain
ResolutionPreset sizes or custom width × height
Colour depth16 or 32 bpp
Full screenToggle fullscreen mode
CertificateTrust-on-first-use, ignore, or deny
Double-click an existing connection to edit it, or single-click and press Connect to start a session.

Command-line usage

The macOS client also exposes a CLI entry point that accepts the standard FreeRDP option syntax:
# Basic connection
/Applications/MacFreeRDP.app/Contents/MacOS/MacFreeRDP /v:rdp.example.com /u:alice /p:secret

# Fullscreen with NLA
/Applications/MacFreeRDP.app/Contents/MacOS/MacFreeRDP \
  /v:rdp.example.com /u:CORP\\alice /p:secret /f /sec:nla

# Print all options
/Applications/MacFreeRDP.app/Contents/MacOS/MacFreeRDP /?
For the full option reference see the xfreerdp options page — all options are shared.

Supported features

FeatureSupported
Clipboard redirectionYes
Audio outputYes (CoreAudio backend)
Drive / file redirectionYes
Printer redirectionYes
Smartcard redirectionYes
RemoteAppYes
MultimonitorYes
Dynamic resolutionYes
GFX pipeline (RDP8)Yes
RemoteFXYes
Touch inputNo

Keyboard shortcuts

ShortcutAction
Ctrl+Alt+ReturnToggle fullscreen
Ctrl+Alt+MMinimise window
Ctrl+Alt+DDisconnect and quit

Certificate handling

When the server presents a certificate that cannot be validated, the macOS client shows CertificateDialog.xib — a native Cocoa sheet — offering three choices:
  • Accept (trust-on-first-use, stores fingerprint)
  • Accept once (allow for this session only)
  • Reject (abort connection)
This behaviour can be overridden from the command line:
# Automatically accept any certificate (insecure)
.../MacFreeRDP /v:host /cert:ignore

# Reject any certificate that fails validation
.../MacFreeRDP /v:host /cert:deny