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.