PyMonCtl
Cross-Platform toolkit to get info on and control monitors connected
Decision gist · record as of 2026-08-14
Yes, if you need cross-platform monitor control. The package is actively maintained, has no known vulnerabilities, and offers a unified API across Windows, Linux, and macOS. Install friction is low. Be aware that some methods depend on OS-specific hardware support (e.g., VCP MCCS on Windows) and may return None if unavailable; test on your target platforms before relying on brightness or contrast control.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Platform-specific system libraries required: Xlib/xrandr on Linux, VCP MCCS support on Windows for some features, pmset on macOS.
- Some methods return None if the underlying OS capability is unavailable.
- Low install friction with a pure-Python wheel.
License · maintenance · safety
BSD 3 (permissive) — BSD 3 is permissive and poses no significant restriction on use, modification, or distribution in most contexts.
last release 2024-04-22 (844 days) · last repo commit 2026-06-30 · 5 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 200,258 downloads/mo, #9,696 on PyPI
Alternatives
Verify before relying
pip install pymonctl
import pymonctl as pmc
monitors = pmc.getAllMonitors()
for mon in monitors:
print(mon.name, mon.size, mon.position)- Whether all advertised monitor control methods work reliably on all three platforms without additional system configuration.
- Real-world stability of the watchdog thread for long-running monitor change detection.
- Performance impact of the 0.5-second default watchdog interval on systems with many monitors or frequent changes.
What it is and what it does
PyMonCtl is a cross-platform Python library for querying and controlling connected monitors. It abstracts over Windows VCP MCCS, Linux Xlib/xrandr, and macOS pmset to provide a unified interface for reading monitor properties (size, position, frequency, color depth, DPI, scale, orientation, brightness, contrast) and changing them (repositioning, resizing, rotating, adjusting brightness). It also includes a watchdog thread that can track monitor plug/unplug events and property changes, notifying registered listeners.
The library is designed for developers building multi-monitor-aware applications—window managers, display configuration tools, or any software that needs to detect or control the display layout. Most methods work across all three platforms, though some features (like brightness control on Windows) require specific hardware support (VCP MCCS), and some behaviors differ by OS (e.g., Linux allows overlapping monitors while Windows does not).
Use it for
- Detect which monitor a window is on and query its properties for responsive UI layout.
- Automatically arrange multiple monitors into a known configuration on startup or when monitors are plugged in.
- Build a display settings utility that lets users change resolution, orientation, or brightness without OS dialogs.
- Monitor for hot-plug events in a multi-monitor setup and trigger reconfiguration callbacks.
- Query DPI and scale to adapt rendering or font sizes to the actual display.
- Set a monitor as primary or reposition displays programmatically in a headless or automated environment.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need cross-platform monitor control.
The package is actively maintained, has no known vulnerabilities, and offers a unified API across Windows, Linux, and macOS. Install friction is low. Be aware that some methods depend on OS-specific hardware support (e.g., VCP MCCS on Windows) and may return None if unavailable; test on your target platforms before relying on brightness or contrast control.
Install
pymonctl on PyPI
Before you install
Low install friction with a pure-Python wheel. Maintenance is active with a recent commit in June 2026. Runtime dependencies are platform-specific (pyobjc for macOS, pywin32 for Windows, python-xlib and ewmhlib for Linux), so actual install weight depends on your OS.
Platform-specific system libraries required: Xlib/xrandr on Linux, VCP MCCS support on Windows for some features, pmset on macOS. Some methods return None if the underlying OS capability is unavailable.
License in practice
BSD 3 is permissive and poses no significant restriction on use, modification, or distribution in most contexts.
Quickstart
pip install pymonctl
import pymonctl as pmc
monitors = pmc.getAllMonitors()
for mon in monitors:
print(mon.name, mon.size, mon.position)
Verify before relying
- Whether all advertised monitor control methods work reliably on all three platforms without additional system configuration.
- Real-world stability of the watchdog thread for long-running monitor change detection.
- Performance impact of the 0.5-second default watchdog interval on systems with many monitors or frequent changes.
Package facts
| License | BSD 3 permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 5 packagestyping-extensionspyobjcpython-xlibewmhlibpywin32 |
| Maintenance | Actively maintained 844 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 200,258 / month, #9,696 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaEnvironment :: MacOS XEnvironment :: Win32 (MS Windows)Environment :: X11 ApplicationsIntended Audience :: DevelopersLicense :: OSI Approved :: BSD LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.9 |
Evidence: PyMonCtl-0.92-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “monitor control python”
- PyMonCtlPyMonCtl provides cross-platform Python access to monitor information…
- pynputPynput lets you programmatically control and monitor mouse and…
- qemu.qmpA Python asyncio library for sending QMP (QEMU Monitor Protocol)…
Give your agent the search over MCP, or paste the wish link into any chat.
More Monitoring packages
Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.
Provides generated Python code for OpenTelemetry semantic conventions, enabling standardized attribute naming and constant definitions for instrumentation and telemetry collection.
Install it if you are using OpenTelemetry and want to follow semantic conventions correctly.
Provides the reference implementation of the OpenTelemetry API for collecting and exporting traces, metrics, and logs from Python applications.
Provides the abstract API and interfaces for OpenTelemetry instrumentation in Python, defining how to emit traces, metrics, and logs without tying code to a specific SDK implementation.
Exports OpenTelemetry observability data to an OpenTelemetry Collector using Protobuf-encoded messages over HTTP.
Install it if you are using OpenTelemetry in Python and need to send data to a Collector over HTTP.
Provides automatic instrumentation commands and programmatic APIs to inject distributed tracing into Python applications without code changes, detecting and instrumenting packages used by your program.
Install it if you need distributed tracing without code changes and have compatible instrumented packages in your environment.
See also PyWinBox · screeninfo · mss · pyglet · EWMHlib · mozsystemmonitor · pywizlight · xlib · PyMsgBox