LogoPyloid
ApiPyloid

Monitor

The Monitor class provides functionality to manage and manipulate information about computer monitors.


Initialization

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

monitors = app.get_monitors()
monitor = monitors[0]

# Monitor objects are typically accessed through app.get_monitors()

Screen Capture

capture

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]  # Get first monitor

# Capture full screen
monitor.capture("screenshot.png")

# Capture specific area
monitor.capture("area.png", x=100, y=100, width=800, height=600)

Parameters

Prop

Type

Returns

Optional[str]Path of the saved image or None if capture fails.

Monitor Information

info

Returns information about the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

info = monitor.info()
print(info)

Returns

dictDictionary containing monitor information.
{
    'index': 0,
    'name': 'Primary Monitor',
    'manufacturer': 'Dell',
    'model': 'U2718Q',
    'serial_number': 'SN123456789',
    'x': 0,
    'y': 0,
    'width': 2560,
    'height': 1440,
    'is_primary': True,
    'geometry': {
        'x': 0,
        'y': 0,
        'width': 2560,
        'height': 1440,
    },
    'size': {
        'width': 2560,
        'height': 1440,
    },
    'available_geometry': {
        'x': 0,
        'y': 0,
        'width': 2560,
        'height': 1400,
    },
    'available_size': {
        'width': 2560,
        'height': 1400,
    },
    'virtual_geometry': {
        'x': 0,
        'y': 0,
        'width': 5120,
        'height': 1440,
    },
    'virtual_size': {
        'width': 5120,
        'height': 1440,
    },
    'available_virtual_geometry': {
        'x': 0,
        'y': 0,
        'width': 5120,
        'height': 1400,
    },
    'available_virtual_size': {
        'width': 5120,
        'height': 1400,
    },
    'physical_size': {
        'width': 600,
        'height': 340,
    },
    'depth': 24,
    'device_pixel_ratio': 1.0,
    'logical_dots_per_inch': 96.0,
    'logical_dots_per_inch_x': 96.0,
    'logical_dots_per_inch_y': 96.0,
    'orientation': 'Landscape',
    'physical_dots_per_inch': 109.0,
    'physical_dots_per_inch_x': 109.0,
    'physical_dots_per_inch_y': 109.0,
    'refresh_rate': 60.0,
}

is_primary

Checks if the monitor is the primary monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

is_primary = monitor.is_primary()
print(f"Is primary monitor: {is_primary}")

Returns

boolTrue if primary monitor, False otherwise.

name

Returns the name of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

name = monitor.name()
print(f"Monitor name: {name}")

Returns

strMonitor name.

manufacturer

Returns the manufacturer of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

manufacturer = monitor.manufacturer()
print(f"Manufacturer: {manufacturer}")

Returns

strMonitor manufacturer name.

model

Returns the model of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

model = monitor.model()
print(f"Model: {model}")

Returns

strMonitor model name.

serial_number

Returns the serial number of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

serial = monitor.serial_number()
print(f"Serial number: {serial}")

Returns

strMonitor serial number.

Geometry and Size

size

Returns the size of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

size = monitor.size()
print(f"Size: {size['width']}x{size['height']}")

Returns

dictDictionary with 'width' and 'height' keys.

geometry

Returns the geometry of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

geometry = monitor.geometry()
print(f"Position: ({geometry['x']}, {geometry['y']}) Size: {geometry['width']}x{geometry['height']}")

Returns

dictDictionary with 'x', 'y', 'width', 'height' keys.

available_geometry

Returns the available geometry of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

available_geometry = monitor.available_geometry()
print(f"Available area: {available_geometry}")

Returns

dictDictionary with 'x', 'y', 'width', 'height' keys.

available_size

Returns the available size of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

available_size = monitor.available_size()
print(f"Available size: {available_size}")

Returns

dictDictionary with 'width' and 'height' keys.

virtual_geometry

Returns the virtual geometry of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

virtual_geometry = monitor.virtual_geometry()
print(f"Virtual geometry: {virtual_geometry}")

Returns

dictDictionary with 'x', 'y', 'width', 'height' keys.

virtual_size

Returns the virtual size of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

virtual_size = monitor.virtual_size()
print(f"Virtual size: {virtual_size}")

Returns

dictDictionary with 'width' and 'height' keys.

available_virtual_geometry

Returns the available virtual geometry of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

available_virtual_geometry = monitor.available_virtual_geometry()
print(f"Available virtual geometry: {available_virtual_geometry}")

Returns

dictDictionary with 'x', 'y', 'width', 'height' keys.

available_virtual_size

Returns the available virtual size of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

available_virtual_size = monitor.available_virtual_size()
print(f"Available virtual size: {available_virtual_size}")

Returns

dictDictionary with 'width' and 'height' keys.

physical_size

Returns the physical size of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

physical_size = monitor.physical_size()
print(f"Physical size: {physical_size['width']}x{physical_size['height']} mm")

Returns

dictDictionary with 'width' and 'height' keys (in millimeters).

DPI and Display Properties

depth

Returns the depth of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

depth = monitor.depth()
print(f"Color depth: {depth} bits")

Returns

intColor depth of the monitor.

device_pixel_ratio

Returns the device pixel ratio of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

ratio = monitor.device_pixel_ratio()
print(f"Device pixel ratio: {ratio}")

Returns

floatDevice pixel ratio.

logical_dots_per_inch

Returns the logical dots per inch (DPI) of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

dpi = monitor.logical_dots_per_inch()
print(f"Logical DPI: {dpi}")

Returns

floatLogical DPI.

logical_dots_per_inch_x

Returns the logical dots per inch (DPI) along the X axis of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

dpi_x = monitor.logical_dots_per_inch_x()
print(f"Horizontal logical DPI: {dpi_x}")

Returns

floatHorizontal logical DPI.

logical_dots_per_inch_y

Returns the logical dots per inch (DPI) along the Y axis of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

dpi_y = monitor.logical_dots_per_inch_y()
print(f"Vertical logical DPI: {dpi_y}")

Returns

floatVertical logical DPI.

physical_dots_per_inch

Returns the physical dots per inch (DPI) of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

physical_dpi = monitor.physical_dots_per_inch()
print(f"Physical DPI: {physical_dpi}")

Returns

floatPhysical DPI.

physical_dots_per_inch_x

Returns the physical dots per inch (DPI) along the X axis of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

physical_dpi_x = monitor.physical_dots_per_inch_x()
print(f"Horizontal physical DPI: {physical_dpi_x}")

Returns

floatHorizontal physical DPI.

physical_dots_per_inch_y

Returns the physical dots per inch (DPI) along the Y axis of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

physical_dpi_y = monitor.physical_dots_per_inch_y()
print(f"Vertical physical DPI: {physical_dpi_y}")

Returns

floatVertical physical DPI.

orientation

Returns the orientation of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

orientation = monitor.orientation()
print(f"Orientation: {orientation}")

Returns

strMonitor orientation ('Portrait', 'Landscape', etc.).

refresh_rate

Returns the refresh rate of the monitor.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

refresh_rate = monitor.refresh_rate()
print(f"Refresh rate: {refresh_rate} Hz")

Returns

floatMonitor refresh rate (Hz).

Event Callbacks

geometry_changed

Registers a callback for the event that occurs when the geometry of the monitor changes.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

def on_geometry_changed():
    print("Monitor geometry changed!")

monitor.geometry_changed(on_geometry_changed)

Parameters

Prop

Type

Returns

None

orientation_changed

Registers a callback for the event that occurs when the orientation of the monitor changes.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

def on_orientation_changed():
    print("Monitor orientation changed!")

monitor.orientation_changed(on_orientation_changed)

Parameters

Prop

Type

Returns

None

refresh_rate_changed

Registers a callback for the event that occurs when the refresh rate of the monitor changes.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
monitors = app.get_monitors()
monitor = monitors[0]

def on_refresh_rate_changed():
    print("Monitor refresh rate changed!")

monitor.refresh_rate_changed(on_refresh_rate_changed)

Parameters

Prop

Type

Returns

None