screenman
A Python tool to manage and configure multi-monitor setups using EDID information, allowing users to apply predefined screen layouts with ease.
Setup
$ screenman --help
Usage: screenman [OPTIONS]
Console script for screenman.
Options:
--log-level TEXT Set the logging level (e.g., DEBUG, INFO, WARNING, ERROR,
CRITICAL)
--log-file TEXT Set the log file path.
--print-info Print the connected screens and the corresponding
layout.If no layout is defined, the default layout 'auto'
is used.
--rescan-pci Rescan PCI bus before applying layout. Useful for
dock/display detection issues after resume.
--mirror Mirror the internal (eDP) display to the external display.
--mirror-off Revert mirroring and apply the normal layout.
--help Show this message and exit.
When wanting to setup a new screen layout, you can use the --print-info flag to get the connected screens information. This information can be used to create a new screen layout.
$ screenman --print-info
<HDMI-2, UID: DL51145435704, primary: True, modes: 13, conn: True, rot: normal, enabled: True, res: (1920, 1080)>
Layout: auto
From that we can create our toml configuration file with the following content:
# the hierarchy of the configuration file is as follows:
# layouts.<layout_name>.<screen_uid>
[layouts.single_baetylus.DL51145435704]
primary = true
mode = [1920, 1080]
position = [0, 0]
rotation = "normal"
A more advanced screenman.toml configuration file can be found in the examples directory.
Mirroring
For presentations or other scenarios where you want to mirror your internal (eDP) display to an external screen:
# Start mirroring — scales the internal display to match the external resolution
screenman --mirror
# Revert to your normal layout
screenman --mirror-off
Usage
I have screenman --log-file ~/.local/logs/screenman.log --log-level DEBUG mapped to a keybinding.
If you can't install screenman with your package manager, you can also run it with uv:
uv tool run screenman --help
Configuration
The configuration file can be stored in one of the following paths:
- Current working directory
- Home directory
- User configuration directory (roaming)
- User configuration directory for "screenman" (non-roaming)
- Site configuration directory
Installation
Dependencies
Install edid-decode.
pip release version
pip install screenman
pip live version
pip install git+https://github.com/Jimmy2027/screenman.git
portage
screenman is available via Jimmy's overlay.
Either enable the repo or copy the ebuild to your local overlay.
Then run:
emerge -av screenman
Release files for screenman 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| screenman-0.1.4.tar.gz | 20.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| screenman-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.0 kB
Release files / screenman-0.1.4.tar.gz
| Download URL | screenman-0.1.4.tar.gz |
|---|---|
| Size | 20.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b008cc9449510d9c214eb02cff5da4d61467835917226b31383a26b299ed27b6
|
|
BLAKE2b-256 checksum How to use checksums |
fdfaab29a364f4101e0d9a0a5b5a620d7706a8814b81b61214d26b3a17eaa5ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 23, 2026.
Transparency logRelease files / screenman-0.1.4-py3-none-any.whl
| Download URL | screenman-0.1.4-py3-none-any.whl |
|---|---|
| Size | 12.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ac6879989f13bb91e7ac26a06d20785f3809a675ee899e824a3009c0b7e9d767
|
|
BLAKE2b-256 checksum How to use checksums |
94b461f658d33ecd8967b56afc241350aec1d0f09ab7578a0134d1c18775ba84
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 23, 2026.
Transparency log