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?
Odpowiedzi:
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ć).
źródło
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
hexchat
nadal jest responsywny, spróbuj:-e
Otwórz adres URL lub wykonaj polecenie w istniejącym HexChatBibliografia:
man hexchat
man wmctrl
źródło
Jeśli proces jest po prostu w tle, być może ta odpowiedź również tutaj pasuje:
Użyj,
fg
aby przywrócić proces na pierwszy plan.Zobacz pełną odpowiedź, aby uzyskać więcej instrukcji.
źródło
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.
źródło
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.
źródło