Okno jest ukryte, ale proces działa [zamknięty]

13

Jak mogę przywrócić okna dla danego pid? Przydałoby się to w niektórych sytuacjach, w których znika okno określonego programu (czasem mi się to zdarza).

Na przykład za każdym razem, gdy zmierzam do zamknięcia hexchat, wyświetla okno dialogowe potwierdzenia. Jeśli kliknę przycisk Anuluj, okno i tak zniknie, ale proces będzie kontynuowany w tle. (Mogę pgrep to jego identyfikator).

Czy można przywrócić okno, biorąc pod uwagę pid?

userEng15
źródło
Rozgryzłeś to? To wciąż zdarza mi się czasami - wygląda na to, że mają problem z naprawieniem tego.
Jason Kleban
Nie pamiętam dokładnie. Przez jakiś czas musiałem wracać do okien. Myślę, że ktoś powiedział mi na czacie, że zostało to naprawione w branży rozwoju w tym czasie. Ale jeśli powiesz, że nadal tak się dzieje, oznacza to, że błąd nadal występuje ... Przepraszam, że nie pomogłem.
userEng15
Używam xdotool, może działać. „xdotool search -name hexchat” i „xdotool windowactivate theWindowId”
zayn

Odpowiedzi:

3

Niestety nie - generalnie nie ma sposobu, aby aplikacja X Windows ponownie połączyła się z systemem okienkowym, jeśli utraci połączenie i okno zostanie zniszczone. Okna zazwyczaj znikają tylko wtedy, gdy w samym programie występuje błąd - w takim przypadku proces jest prawdopodobnie w stanie zawieszenia, nie wiedząc o tym, czekając na operacje we / wy, które nigdy nie wystąpią, ponieważ nie zdaje sobie sprawy, że okno zniknęło .

Chyba że aplikacja ma bardzo rzadką konstrukcję i pozwala wysłać specjalny sygnał lub wiadomość, aby ponownie połączyć się z serwerem X lub odbudować nowe okno, lub chyba, że ​​nadal jest gdzieś na ekranie jako ikona lub ikona zadokowana, a ty może z nim współdziałać w ten sposób, proces programu musi być po prostu zabity i trzeba go ponownie uruchomić.

Zachowanie polegające na zamknięciu ostatniego okna bez wychodzenia z procesu jest generalnie błędem, który można zgłosić wcześniej o aplikacji.

(Uwaga: istnieją rzadkie wyjątki, takie jak przeglądarki internetowe, które uruchamiają proces nawet po zamknięciu ostatniego okna - ale w takich przypadkach ponowne kliknięcie ikony przeglądarki lub ponowne uruchomienie jej z wiersza poleceń po prostu informuje już uruchomione proces otwierania nowego okna. Ponownie, aplikacja musi być specjalnie napisana, aby obsłużyć tymczasową bez okien, jeśli to ma zadziałać).

Brandon Rhodes
źródło
3

Jak wyjaśnił Brandon Rhodes, jeśli okno zostanie zniszczone / ukryte przez proces macierzysty, nie ma możliwości odzyskania / odtworzenia / pokazania go poza procesem lub samą aplikacją.

Możesz potwierdzić z menedżera okien, spróbuj:, wmctrl -l -pżadne okno związane z jego PID nie jest wymienione.

Tak więc możliwe, że hexchatnadal jest responsywny, spróbuj:

hexchat -e --command="gui show"

-e Otwórz adres URL lub wykonaj polecenie w istniejącym HexChat

Bibliografia:

user.dz
źródło
1
Działał idealnie.
amar
1

Jeśli proces jest po prostu w tle, być może ta odpowiedź również tutaj pasuje:

Użyj, fgaby przywrócić proces na pierwszy plan.

Zobacz pełną odpowiedź, aby uzyskać więcej instrukcji.

j08lue
źródło
1

Nie znam hexchat, ale być może program używa ikony na pasku zadań, co umożliwia odzyskanie głównego okna. Niestety na Linuksie istnieje wiele implementacji zasobników i nie wszystkie z nich działają razem.

Miałem taki problem z programem RadioTray, który nie pojawił się już po aktualizacji do Xubuntu 14.04. Rozwiązaniem była ponowna konfiguracja (plik ~ / .local / share / radiotray / config.xml miał opcję „gui_engine” z 3 możliwymi wartościami „appindicator”, „systray” i „chooser”).

Jeśli to nie pomoże, spróbuj sprawdzić opcje / preferencje aplikacji. Być może znajdziesz opcję „Minimalizuj do zasobnika”. Wyłącz i spróbuj ponownie zamknąć okno.

Daniel Alder
źródło
0

Możesz spróbować Ctrl + Alt + Del, a następnie zakończyć proces. Mam nadzieję że to pomoże. To właśnie robię, gdy program w Ubuntu zawiesza się lub wydaje mi się zabawny.

John H.
źródło