libmonitor =========== This crate aims to be a unified solution to interacting with display devices. It provides a `Monitor` class that can be used to set or read settings of a Monitor. ## Supported Operations: - Read/Set Contrast - Read/Set Brightness - Read/Set On Screen Display Language - Read/Set Monitor Input Source ## Lower Level Access `libmonitor` also enables lower level access to the monitor communication bus. Per default type safe abstractions are used, but custom messages can also be sent and received. ## Supported DDC/CI Operations - [x] Read Capabilities - [x] Set/Read VcpValue - [ ] Read Timing Report - [ ] Set/Read VcpTable ## OS Support - [x] Linux - [ ] Windows - [ ] MacOS ## Standards Display device communication has been standardized by VESA. The current public standards can be found here: [VESA Public Standards](https://app.box.com/s/vcocw3z73ta09txiskj7cnk6289j356b/folder/11133487793) Relevant for this Library: - *E-EDID*: Display Device Identification Data - *E-DDC*: I2C-Bus device definition's and communication - *DDCCI*: Display Command Interface for Display Setting Manipulation - *MCCS*: Display Features and Capabilities Definitions ## Previous Work This crate was build after finding previous solutions to be incomplete and fragmented. The following crates deserve an honorable mention for providing inspiration: - [mccs](https://crates.io/crates/mccs) - [ddc-hi](https://crates.io/crates/ddc-hi) - [ddc-i2c](https://crates.io/crates/ddc-i2c) - [ddc-macos](https://crates.io/crates/ddc-macos) - [ddc-winapi](https://crates.io/crates/ddc-winapi) - [edid](https://crates.io/crates/edid)