Jak wydłużyć czas oczekiwania na nieodpowiadające programy?

24

Zainstalowałem Ubuntu GNOME i stwierdziłem, że otrzymuję dużo PROGRAMU, który nie odpowiada na wiadomości.

Muszę albo „wymusić” zamknięcie programu, albo „poczekać” trochę dłużej.

Zauważyłem, że za każdym razem, gdy czekam na program, program w końcu kontynuuje bez problemów.

Myślę więc, że może istnieć konfiguracja „limitu czasu” dla programów, które będą uważane za niereagujące, i chcę je zwiększyć.

malhobayyeb
źródło
Ten sam problem tutaj. Często pracuję nad katalogiem sieciowym, a moja wiadomość w większości przyszła tuż przed zapisaniem pliku. Więc muszę po prostu kliknąć czekanie. Poszukuję rozwiązania z powłoką gnome.
Willi
Mam również do czynienia z tym samym problemem, jednak zorientowałem się, na czym dokładnie polega problem. Chcesz współpracować przy rozwiązywaniu tego problemu? tuxdna.in/blog/2014/07/15/…
tuxdna
Wniosek o funkcję złożyłem
Nathaniel M. Beaver

Odpowiedzi:

14

Nie można go skonfigurować, ponieważ wartość limitu czasu jest zdefiniowana jako stała wartość w źródle mutterów. gnome-shell odnosi się do biblioteki mutterów. Znalazłem wartość limitu czasu w źródle mutter, mutter-3.10.4 / src / core / display.c.

...
#define PING_TIMEOUT_DELAY 5000

I jest używany przez poniższą funkcję o nazwie meta_display_ping_window

ping_data->ping_timeout_id = g_timeout_add (PING_TIMEOUT_DELAY, meta_display_ping_timeout, ping_data);

Jest wywoływany z funkcji, gdy okno jest aktywowane:

window_activate(mutter-3.10.4/src/core/window.c) -> meta_window_check_alive(mutter-3.10.4/src/core/delete.c) -> meta_display_ping_window(mutter-3.10.4/src/core/display.c)

Jak widać powyżej, limit czasu wynosi 5 sekund.

Możesz modyfikować wartość tylko dla siebie, ponieważ mamuś jest projektem open source.

A wartość limitu czasu jest określana innym przypadkiem, gdy okno jest zamknięte. Przepływ usuwania okna jest jak

meta_window_delete(mutter-3.10.4/src/core/delete.c) -> meta_window_check_alive(mutter-3.10.4/src/core/delete.c) -> meta_display_ping_window(mutter-3.10.4/src/core/display.c)

Myślę jednak, że musisz zmodyfikować źródło opóźnionego okna. Albo myślę, że możesz o tym porozmawiać z twórcami / opiekunami mutterów.

Możesz przygotować środowisko kompilacji i uzyskać źródło za pomocą następujących poleceń.

$ sudo apt-get build-dep mutter
$ sudo apt-get source mutter

Aby go zbudować, patrz

https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html https://wiki.debian.org/BuildingTutorial

xiaodongjie
źródło
-1

Nie wiem, czy udzielenie odpowiedzi na to stare pytanie ma jakiś sens, ale może dla kogoś będzie to pomocne.

Próbowałem zbudować bibliotekę mutterów ze źródła, ale poddałem się, ponieważ ta biblioteka zależy od wielu innych bibliotek, a te biblioteki również zależą od innych bibliotek.

Potrzebowałem sposobu, aby zamknąć to okno dialogowe, jeśli się pojawi, ale nie byłem w stanie zamknąć go w aplikacji do wina . Więc napisałem mały skrypt w bash, który zabije to okno, jeśli się pojawi.

#!/bin/bash 

while [  true ]; do
    VAL=$(ps -fA | grep "class mutter-dialog" | grep -cv grep)

    if [ $VAL -eq 1 ]
    then
            ID=$(ps -fA | grep "class mutter-dialog" | grep -v grep | awk '{print $2}')
            sleep 5
            echo killing $ID
            kill $ID
            exit 0
    fi

    sleep 10
done
Tomek
źródło