Jak wykonać polecenie, gdy zmienia się rozdzielczość ekranu w systemie Linux

1

Używam Linuksa na maszynie wirtualnej i chcę uruchamiać skrypt za każdym razem, gdy zmienia się rozdzielczość serwera X (zwykle od wejścia / wyjścia z trybu pełnoekranowego na maszynie wirtualnej). Jak mogę to zrobić?

Nieznany
źródło

Odpowiedzi:

1

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

Ryan Babchishin
źródło
Czy to odpowiedź na Twoje pytanie? Potrzebujesz więcej informacji?
Ryan Babchishin