我在虚拟机中运行 Linux,我想在 X 服务器分辨率发生变化时(通常是在虚拟机中进入/退出全屏模式时)运行一个脚本。我该怎么做?
答案1
我偶然发现了另一个解决方案,这是Unix & Linux Stack Exchange 上的类似问题。
这个问题的作者写了一个小工具,叫做事件绑定它与 X-Events 挂钩,因此无需一直轮询分辨率更改。这节省了资源并确保在分辨率更改后立即执行脚本。
答案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 } 完毕