Skip to main content

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)

Source distribution for screenman 0.1.4
File Size Uploaded
screenman-0.1.4.tar.gz 20.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for screenman 0.1.4
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page