51 lines
1.1 KiB
Markdown
51 lines
1.1 KiB
Markdown
# screen_ds_once.c - 显示器信息单次查询程序
|
|
|
|
## 概述
|
|
screen_ds.c的简化版本,仅执行一次显示器信息查询并输出结果后退出。适用于需要快速获取当前显示器配置的场景。
|
|
|
|
## 与screen_ds.c的区别
|
|
| 特性 | screen_ds | screen_ds_once |
|
|
|------|-----------|----------------|
|
|
| 执行模式 | 持续监控 | 单次查询 |
|
|
| 事件监听 | 有 | 无 |
|
|
| 退出方式 | Ctrl+C | 自动退出 |
|
|
|
|
## 工作原理
|
|
|
|
1. 打开X显示连接
|
|
2. 查询RandR扩展是否可用
|
|
3. 获取所有已连接显示器信息
|
|
4. 输出到文件或标准输出
|
|
5. 释放资源并退出
|
|
|
|
## 数据结构
|
|
与screen_ds.c相同:
|
|
```c
|
|
typedef struct {
|
|
char* output_name;
|
|
int width, height;
|
|
int x, y;
|
|
int rotation;
|
|
} MonitorInfo;
|
|
```
|
|
|
|
## 输出格式
|
|
```
|
|
HDMI-1|1920x1080|0x0|N
|
|
```
|
|
|
|
## 关键函数
|
|
| 函数 | 功能 |
|
|
|------|------|
|
|
| `get_monitor_info()` | 获取显示器信息 |
|
|
| `output_monitor_info()` | 输出信息 |
|
|
| `rotation_to_char()` | 旋转方向编码转换 |
|
|
|
|
## 调用方式
|
|
```bash
|
|
./screen_ds_once [输出文件路径]
|
|
```
|
|
|
|
## 依赖
|
|
- X11 + Xrandr扩展
|