HDMI Monitor
Use your laptop as a monitor for another computer (a mini PC, Raspberry Pi, Jetson, console...) through a cheap USB HDMI capture card.
Plug the other computer's HDMI output into the capture card, plug the card into your laptop, and run hdmi-monitor. You get a low-latency, full-screen picture with sound.
Install
Linux (Ubuntu, Debian, Mint, Fedora, Arch...)
sudo apt install pipx libxcb-cursor0 # Fedora: sudo dnf install pipx xcb-util-cursor
pipx ensurepath # then open a new terminal
pipx install hdmi-monitor
hdmi-monitor --create-shortcut # optional: add it to your applications menu
Windows 10/11
Install Python 3.10 or newer first if you don't have it. Then, in PowerShell:
py -m pip install --user pipx
py -m pipx ensurepath # then open a new terminal
pipx install hdmi-monitor
hdmi-monitor --create-shortcut # optional: add it to the Start menu
If you already use uv, uv tool install hdmi-monitor works on both systems.
Update: pipx upgrade hdmi-monitor · Uninstall: hdmi-monitor --remove-shortcut, then pipx uninstall hdmi-monitor
Why not just use the Camera app?
- It finds the capture card automatically (skipping the built-in webcam) and uses its best mode, e.g. 1920x1080 @ 60 fps.
- It plays the HDMI audio through the laptop speakers.
- True borderless full screen. The mouse pointer hides when idle, and the screen won't sleep or blank.
- It remembers your source, resolution, audio, volume, and window options.
- It reconnects automatically when the capture card is unplugged and plugged back in.
- Only one copy runs at a time, because a capture card can only be read by one program. Opening it again brings the existing window to the front.
Controls
| Key / action | Does |
|---|---|
| F11 or double-click | Full screen on / off |
| Esc | Leave full screen |
| Right-click | All options (source, resolution, audio...) |
| M | Mute |
| Ctrl+T | Always on top |
| Ctrl+S | Save a screenshot to Pictures |
| F5 | Reconnect |
| Ctrl+H | Show / hide toolbar |
| Ctrl+Q | Exit |
Troubleshooting
- Black picture or "Could not open the capture device": close any other app using the card (Camera, OBS, Teams, Zoom, a browser tab).
- Linux:
Could not load the Qt platform plugin "xcb": installlibxcb-cursor0(Debian/Ubuntu) orxcb-util-cursor(Fedora). - Linux:
ImportError: lib....so: cannot open shared object file(only on very minimal installs): on Debian/Ubuntu runsudo apt install libgl1 libegl1 libglib2.0-0 libgssapi-krb5-2 libxkbcommon-x11-0 libpulse0. - Windows: install fails with a "Long Path" hint: use Python from python.org rather than the Microsoft Store, or enable long paths.
- Linux: no picture, or permission denied: make sure your user can access
/dev/video*(usually thevideogroup). - What did it detect? Run
hdmi-monitor --diagnose. After 6 s it writes the devices, mode, and frame rate tohdmi_monitor_diagnose.txtin your temp folder (/tmpon Linux,%TEMP%on Windows).
Alternatives
- OBS Studio: add a Video Capture Device, then right-click → Fullscreen Projector. Heavier, and audio needs extra setup.
- VLC: Open Capture Device. Set caching to about 0 ms, or the picture lags.
- Over the network (no capture card): NoMachine, VNC, RustDesk, or Sunshine/Moonlight. These also give you keyboard and mouse control, but the other computer must be booted and on the network.
A capture card sees everything, including BIOS and boot screens, and needs no software on the other computer. Expect about 50–100 ms of delay with typical MS2109-based cards.
For developers
pip install -e . # run from source: python -m hdmi_monitor
python -m build # build the PyPI wheel + sdist into dist/
Stand-alone installers that don't need Python, built from Windows:
powershell -ExecutionPolicy Bypass -File build.ps1builds the Windows setup.exe. It needs Inno Setup 6.wsl -d Ubuntu -u root -- sh linux/wsl_build.shbuilds the Linux.deband AppImage inside an Ubuntu 22.04 chroot in WSL.
Built with PySide6 / Qt Multimedia (FFmpeg backend). MIT licensed.
Metadata
Release files for hdmi-monitor 1.0.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 | Provenance | |
|---|---|---|---|---|
| hdmi_monitor-1.0.0.tar.gz | 22.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hdmi_monitor-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 48.6 kB
Release files / hdmi_monitor-1.0.0.tar.gz
| Download URL | hdmi_monitor-1.0.0.tar.gz |
|---|---|
| Size | 22.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b099190b6505456b4958366ebbef66aa31d1f027e88d51bbe6eccd3dac9fbd4e
|
|
BLAKE2b-256 checksum How to use checksums |
ba9671624afbd9984b59f53139350b11600d685af358e5f59a17344f7451c9b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.4
|
Release files / hdmi_monitor-1.0.0-py3-none-any.whl
| Download URL | hdmi_monitor-1.0.0-py3-none-any.whl |
|---|---|
| Size | 26.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9ed276be5177ead740008e03e811f299e637784e3d8ac61f5e34114049270cea
|
|
BLAKE2b-256 checksum How to use checksums |
7a0dcb8f01037c4dbbdd941cf299d459095d2130eb879cc5f1fd498832b820ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.4
|
Security for hdmi-monitor 1.0.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.