freerdp-tk
A small launcher window for the FreeRDP remote desktop clients. It runs on Linux, Windows and macOS and needs nothing beyond Python and its built-in Tkinter.
- Saved connections: a list you can filter. Double-click one to connect, or select several and connect them all at once.
- Picks a client for you: it finds the FreeRDP clients on your
PATHand in local build trees. "(auto)" prefers the SDL client, then X11, Wayland and Windows. - Form instead of flags: display, graphics codec (including AV1), clipboard, sound, microphone, drive sharing, log level, plus a box for extra arguments.
- Live command preview: shows the exact command line, with the password hidden, and copies it for you.
- Session log: runs several sessions at once and shows each client's output.
Install
uv tool install freerdp-tk # or: pipx install freerdp-tk
freerdp-tk
You also need a FreeRDP client, for example:
| Platform | Client |
|---|---|
| Debian / Ubuntu | sudo apt install freerdp3-sdl (or freerdp3-x11) |
| Fedora | sudo dnf install freerdp |
| macOS | brew install freerdp |
| Windows | a FreeRDP build containing sdl-freerdp.exe or wfreerdp.exe, on your PATH |
On Linux, a system Python may need its Tk package (sudo apt install python3-tk). The Pythons that uv installs already include Tk.
Passwords
- Passwords are never written to disk. They are asked for once and kept in memory until the window closes.
- With FreeRDP 3, all arguments are passed to the client through standard input (
/args-from:stdin). The password therefore never appears in the process list (ps, Task Manager). - FreeRDP 2 has no such option, so the password goes on the command line, and the log warns you about it.
Where things are kept
| What | Where |
|---|---|
| Saved connections | ~/.config/freerdp-tk/profiles.json (Linux), ~/Library/Application Support/freerdp-tk/ (macOS), %APPDATA%\freerdp-tk\ (Windows) |
| Extra FreeRDP source trees to search for built clients | FREERDP_TK_TREES, separated like PATH. ~/projects/FreeRDP is always searched. |
Limitation
The client runs without a terminal, so it cannot ask questions while connecting, such as whether to trust a new certificate. Pick a certificate policy (tofu, ignore or deny) on the Connection tab instead. The default, tofu, trusts a server's certificate the first time you connect.
Development
uv run --with-editable . python -m freerdp_tk # run from the checkout
uv build # build the sdist and wheel into dist/
Releasing to PyPI
Releases are published by GitHub Actions through trusted publishing, so no API token is needed. The version is taken from the git tag.
One-time setup:
- On PyPI, open Your projects → Publishing → Add a new pending publisher and enter: project
freerdp-tk, ownercongzhangzh, repositoryfreerdp-tk, workflowrelease.yml, environmentpypi. - On GitHub, create an environment named
pypi(Settings → Environments).
Each release after that:
git tag v0.1.0
git push origin v0.1.0
The workflow builds the package, checks that it installs on Linux, Windows and macOS, and then uploads it to PyPI.
License
Apache-2.0, the same license as FreeRDP.
Metadata
Release files for freerdp-tk 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| freerdp_tk-0.1.0.tar.gz | 13.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| freerdp_tk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.8 kB
Release files / freerdp_tk-0.1.0.tar.gz
| Download URL | freerdp_tk-0.1.0.tar.gz |
|---|---|
| Size | 13.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c6c3eee26941ad60309092ec6f7471d67341ccab0fb61ff6397df9429c6b7302
|
|
BLAKE2b-256 checksum How to use checksums |
6d3f8a9f84742fbd2f410c4a4bd9c7cbf0c8477bae5c90a8d5aebfb9b709f92d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency logRelease files / freerdp_tk-0.1.0-py3-none-any.whl
| Download URL | freerdp_tk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f0f369255e085bebb242d46e1278a7eb6edc2f3556e705092212a58ba6e19be0
|
|
BLAKE2b-256 checksum How to use checksums |
407389dec15af37f6aa67507ede9ae71239a5777f7d70790dbccff445cfa9cf3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.
Transparency log