Skip to content

Latest commit

 

History

History
128 lines (90 loc) · 4.36 KB

File metadata and controls

128 lines (90 loc) · 4.36 KB

fiRDP

A lightweight RDP client for Linux and macOS, built on FreeRDP and SDL3.

GPU-accelerated rendering via SDL3 (Metal on macOS, GPU-accelerated on Linux), hardware video decoding (VAAPI/FFmpeg on Linux, VideoToolbox on macOS), and system keyring integration for password storage.

Pre-built binaries

Download the latest build from the releases page.

Asset Platform
fiRDP-trixie-x86_64 Linux x86_64 (Debian Trixie)
fiRDP-trixie-arm64 Linux arm64 (Debian Trixie)
fiRDP-flatpak-x86_64.flatpak Linux (Flatpak bundle, x86_64)
fiRDP-flatpak-arm64.flatpak Linux (Flatpak bundle, arm64)
fiRDP-macos-arm64.zip macOS (Apple Silicon)

On macOS, unzip and run open fiRDP.app -- <file.rdp>.

Linux native binary (Debian Trixie)

The native binary is built on Debian 13 (Trixie). Install the runtime dependencies:

sudo apt install libsdl3-0 libcups2t64 libusb-1.0-0 libsecret-1-0 \
  libavcodec61 libavutil59 libswscale8 libswresample5

Then make it executable and run ./fiRDP-trixie-x86_64 <file.rdp>.

For other distros, use the Flatpak bundle instead - it includes all dependencies.

Flatpak (any Linux distro)

flatpak install fiRDP-flatpak-x86_64.flatpak
flatpak run me.stanis.apps.rdp <file.rdp>

Building

Requirements: clang, lld, cmake, SDL3, and FreeRDP's build dependencies (openssl, ffmpeg, libusb, cups, jansson). On Linux: libsecret. On macOS: Xcode command line tools.

sudo port install clang-18 SDL3 cmake openssl libusb jansson ffmpeg8
git submodule update --init --recursive
cmake -B build -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=Release
cmake --build build --target fiRDP -j$(nproc 2>/dev/null || sysctl -n hw.ncpu)

On macOS, the build produces build/fiRDP.app. Run it with:

open build/fiRDP.app -- <file.rdp>
# or directly:
./build/fiRDP.app/Contents/MacOS/fiRDP [options] <file.rdp>

Usage

fiRDP [options] <file.rdp | rdp://...> [-- "key:type:value" ...]

Options:
  -c, --connect            Connect immediately (skip confirmation)
  -q, --quiet              Suppress connection info output
  -v, --verbose            Verbose logging (DEBUG). Repeat (-vv) for TRACE
      --password-stdin     Read password from stdin; skip the keyring entirely
  -g, --grab-keyboard      Grab keyboard (requires Accessibility on macOS)
  -s, --native-scale       Override desktop scale factor with local display scale
      --native-resolution  Use display's native panel resolution (macOS only)
  -d, --display <n>        Use display index n (0-indexed)
      --no-wayland         Force X11 backend instead of Wayland (Linux only, not recommended)
      --prefer-h264        Hint server to prefer H.264
      --low-latency        Send QoE feedback and suspend per-frame acks
      --resolution <res>   Remote desktop resolution: 1080p, 1440p, 2160p, 2k, 4k, 8k, or a height in pixels
      --takeover           Connect to the admin/console session (xfreerdp /admin)
      --no-key-repeat      Drop local key-repeat events; let the server autorepeat
  -h, --help               Show this help

Settings are loaded from the .rdp file. Passwords are retrieved from the system keyring (libsecret on Linux, Keychain on macOS) and stored after successful connections.

RDP parameter overrides

Any RDP setting can be overridden on the command line after --, using the standard .rdp file format (key:type:value):

fiRDP -c my.rdp -- "use redirection server name:i:0" "negotiate security layer:i:1"

RDP URLs

Instead of an .rdp file, you can pass an rdp:// URL with URL-encoded parameters:

fiRDP 'rdp://full%20address=s:mypc:3389&username=s:admin&audiomode=i:2&disable%20themes=i:1'

Keyboard Shortcuts

Shortcut Action
Shift+F11 Toggle fullscreen
Shift+F12 Disconnect

Configuration

Config file: ~/.config/freerdp/sdl-freerdp.json (created on first run).

The host_keys option specifies key combinations kept for the host OS instead of forwarded to the remote session:

{
    "SDL_KeyModMask": ["KMOD_NONE"],
    "host_keys": ["Super+Q", "Super+Tab", "Alt+F4"]
}

Modifiers: Ctrl, Alt, Shift, Super (aliases: Win, Cmd, Gui). Key names use SDL naming (e.g. Q, Tab, F4).

License

GPLv3 or later. Includes code from FreeRDP (Apache 2.0).