Linux 中屏幕分辨率改变时如何执行命令

Linux 中屏幕分辨率改变时如何执行命令

我在虚拟机中运行 Linux,我想在 X 服务器分辨率发生变化时(通常是在虚拟机中进入/退出全屏模式时)运行一个脚本。我该怎么做?

答案1

我偶然发现了另一个解决方案,这是Unix & Linux Stack Exchange 上的类似问题

这个问题的作者写了一个小工具,叫做事件绑定它与 X-Events 挂钩,因此无需一直轮询分辨率更改。这节省了资源并确保在分辨率更改后立即执行脚本。

xeventbind 的源代码和文档可以在 GitHub 上找到。

答案2

编写此代码

#include <iostream>
#include <X11/Xlib.h>

Display* disp = XOpenDisplay(NULL);
Screen*  scrn = DefaultScreenOfDisplay(disp);
int height = scrn->height;
int width  = scrn->width;

int main() {
    std::cout << "width " << width << " height " << height << "\n";
}

编译

g++ test.c -o test -lX11

运行

rbabchis@haze:~$ ./test
width 1920 height 1080
rbabchis@haze:~$ 

您必须从那里进行修改,或将其包装到另一种编程/脚本语言中,以便在分辨率更改时继续检查并执行脚本。这应该很容易。

使用此脚本不断检查更改并执行外部脚本(./external_script)

/bin/bash #!/bin/bash

分辨率=$(./测试)

while true; 执行 {
        新分辨率=$(./测试)
        如果 [ “$newResolution” != “$resolution” ]; 然后 {
                echo "分辨率更改:$newResolution"
                分辨率=$新分辨率
                ./外部脚本
        } 菲

        睡眠 1
} 完毕

相关内容