Como executar um comando quando a resolução da tela muda no Linux

1

Estou executando o Linux em uma VM e quero executar um script sempre que a resolução do servidor X mudar (geralmente de entrar / sair do modo de tela cheia na VM). Como posso fazer isso?

    
por Unknownloner 09.10.2015 / 04:41

2 respostas

1

Escreva este código

#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";
}

Compile

g++ test.c -o test -lX11

Execute

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

Você terá que modificá-lo de lá, ou envolvê-lo em outra linguagem de programação / script para continuar verificando e executando seu script em uma alteração de resolução. Isso deve ser fácil.

Use este script para verificar continuamente as alterações e executar um script externo (./external_script)

#!/bin/bash

resolution=$(./test)

while true; do {
        newResolution=$(./test)
        if [ "$newResolution" != "$resolution" ]; then {
                echo "Resolution change: $newResolution"
                resolution=$newResolution
                ./external_script
        } fi

        sleep 1
} done

    
por 09.10.2015 / 05:05
0

Eu stubled em outra solução que foi o resultado de uma pergunta semelhante no Unix & Stack Exchange do Linux .

O autor da pergunta escreveu uma pequena ferramenta chamada xeventbind que se conecta aos X-Events e, portanto, não precisa pesquisar uma alteração de resolução o tempo todo. Isso economiza recursos e garante que o script seja executado logo após a alteração da resolução.

O código fonte e a documentação do xeventbind podem ser encontrados no GitHub.

    
por 28.07.2017 / 11:44