# display-info
Cross-platform get display info for MacOS、Windows、Linux. Like [electron Display Object](https://www.electronjs.org/docs/latest/api/structures/display)
## Example
```rust
use display_info::DisplayInfo;
use std::time::Instant;
fn main() {
let start = Instant::now();
let display_infos = DisplayInfo::all().unwrap();
for display_info in display_infos {
println!("display_info {display_info:?}");
}
let display_info = DisplayInfo::from_point(100, 100).unwrap();
println!("display_info {display_info:?}");
println!("运行耗时: {:?}", start.elapsed());
}
```
## DisplayInfo struct
- `id` u32 - Unique identifier associated with the display.
- `name` String - The name of the display
- `friendly_name` String - The display friendly name,
- `raw_handle` CGDisplay/HMONITOR/Output - Native display raw handle
- `x` i32 - The display x coordinate.
- `y` i32 - The display y coordinate.
- `width` u32 - The display pixel width.
- `height` u32 - The display pixel height.
- `width_mm` i32 - The width of a display in millimeters. This value may be 0.
- `height_mm` i32 - The height of a display in millimeters. This value may be 0.
- `rotation` f32 - Can be 0, 90, 180, 270, represents screen rotation in clock-wise degrees.
- `scale_factor` f32 - Output device's pixel scale factor.
- `frequency` f32 - The display refresh rate.
- `is_primary` bool - Whether the screen is the main screen
- `is_builtin` bool - Whether the screen is builtin
## Linux requirements
On Linux, you need to install `libxcb`、`libxrandr`
Debian/Ubuntu:
```sh
apt-get install libxcb1 libxrandr2
```
Alpine:
```sh
apk add libxcb libxrandr
```
ArchLinux:
```sh
pacman -S libxcb libxrandr
```