Odpowiedzi:
Napisz ten kod
#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";
}
Skompiluj to
g++ test.c -o test -lX11
Uruchom
rbabchis@haze:~$ ./test
width 1920 height 1080
rbabchis@haze:~$
Będziesz musiał zmodyfikować go stamtąd lub zawinąć w inny język programowania / skryptów, aby nadal sprawdzać i wykonywać skrypt po zmianie rozdzielczości. To powinno być łatwe.
Ten skrypt służy do ciągłego sprawdzania zmian i wykonywania zewnętrznego skryptu (./external_script)
#! / bin / bash rozdzielczość = $ (./ test) chociaż prawda; zrobić { newResolution = $ (./ test) if ["$ newResolution"! = "$ resolution"]; następnie { echo „Zmiana rozdzielczości: $ newResolution” rozdzielczość = $ newResolution ./external_script } fi spać 1 } gotowy
Opublikowałem inne rozwiązanie, które było wynikiem podobnego pytania na temat wymiany stosów Unix i Linux .
Autor pytania napisał małe narzędzie o nazwie xeventbind, które włącza się w X-Events i nie musi przez cały czas sprawdzać zmian rozdzielczości. Oszczędza to zasoby i zapewnia wykonanie skryptu zaraz po zmianie rozdzielczości.
Kod źródłowy i dokumentacja xeventbind można znaleźć na GitHub.