DexOnLinux
DexOnLinux streams Samsung DeX to a Linux desktop and lets you control it with your mouse and keyboard through scrcpy.
The package is available on PyPI:
pip install dexonlinux
Requirements
DexOnLinux needs:
- Python 3.9 or newer
- Miraclecast (
miracle-wifid,miracle-sinkctl) - scrcpy
- adb
- a Wi-Fi adapter with P2P support
- sudo access, because the CLI temporarily stops NetworkManager and wpa_supplicant while the DeX session is running
The project is currently tested on Ubuntu 24.04.
Installation
Ubuntu 24.04
The helper script installs the system dependencies used by DexOnLinux and installs the dexonlinux package from PyPI. It uses uv when available and falls back to pip.
Do not run the script with sudo; it will ask for sudo only when system packages need to be installed.
git clone https://github.com/gabdevele/DexOnLinux.git
cd DexOnLinux
chmod +x ./scripts/install.sh
./scripts/install.sh
source .venv/bin/activate
dexonlinux
Other Linux distributions
Install Miraclecast and scrcpy using your distribution packages or their upstream instructions:
Then install DexOnLinux from PyPI:
python3 -m venv .venv
source .venv/bin/activate
pip install dexonlinux
dexonlinux
If you use uv:
uv venv
uv pip install dexonlinux
source .venv/bin/activate
dexonlinux
Usage
Run:
dexonlinux
Useful options (these are not required, DexOnLinux works with no arguments):
dexonlinux --help
dexonlinux --interface wlan0 --device R5CN1234567
dexonlinux --fullscreen
dexonlinux --display-id 2
dexonlinux --debug --log-file dexonlinux.log
dexonlinux --no-banner --no-color
DexOnLinux checks dependencies, Wi-Fi P2P support, sudo, and adb before disabling network services. Unless --yes is passed, it asks for confirmation before stopping NetworkManager and wpa_supplicant.
On exit, Ctrl+C, or startup failure, DexOnLinux attempts to stop the Miraclecast processes it started and restore network services.
How it works
DexOnLinux uses:
- Miraclecast for the Wi-Fi Direct sink
- scrcpy for display and input control
- adb to select the Android device
- miracle-sinkctl output to detect DeX connection, disconnection, and stream resolution
Development setup
If you want to contribute or run the latest code, clone the repository and install the dependencies with uv:
git clone https://github.com/gabdevele/DexOnLinux.git
cd DexOnLinux
uv sync --group dev --locked
uv run dexonlinux --help
Bugs and feature requests
Please report any bugs or feature requests on the GitHub issue tracker.
Metadata
Release files for dexonlinux 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dexonlinux-1.0.2.tar.gz | 556.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dexonlinux-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / dexonlinux-1.0.2.tar.gz
| Download URL | dexonlinux-1.0.2.tar.gz |
|---|---|
| Size | 556.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3ac475150d37229e10a6105bb932e5e6ff53000481fcff73cefb0a5dc06fbbd6
|
|
BLAKE2b-256 checksum How to use checksums |
5603cb4f6e62cf70d203d24463e025cb324498dd9026e745176b8970dfb3d07e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 7, 2026.
Transparency logRelease files / dexonlinux-1.0.2-py3-none-any.whl
| Download URL | dexonlinux-1.0.2-py3-none-any.whl |
|---|---|
| Size | 555.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7628e9976ce9555096eef6f154623cb5df15f372c9a6ea4e5d19674a299b8767
|
|
BLAKE2b-256 checksum How to use checksums |
a838c5cec0c30c90af99a58cd70ce347899829a07079ff690e4d2a9e100b375a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jun 7, 2026.
Transparency log