Как я могу восстановить окна для данного pid? Было бы полезно в некоторых ситуациях, когда окно определенной программы исчезает (иногда случается со мной).
Например, каждый раз, когда я собираюсь закрыть hexchat, он показывает диалог для подтверждения. Если я нажму кнопку «Отмена», окно все равно исчезнет, но процесс продолжится в фоновом режиме. (Я могу pgrep, это id).
Можно ли восстановить окно, если я знаю pid?
Ответы:
К сожалению, нет - как правило, нет способа заставить приложение X Windows повторно подключиться к оконной системе, если оно теряет соединение и его окно разрушается. И окна обычно исчезают только в случае ошибки в самой программе - в этом случае процесс, вероятно, находится в зависшем состоянии, не зная его, ожидая ввода-вывода, который никогда не произойдет, потому что он не осознает, что его окно исчезло ,
Если приложение не имеет очень редкого дизайна и не позволяет отправлять ему специальный сигнал или сообщение для повторного подключения к X-серверу или перестройки нового окна, или если оно все еще присутствует на экране где-либо в виде значка или закрепленной иконки, и вы может взаимодействовать с ним таким образом, процесс программы должен быть просто убит, и вам придется перезапустить его.
Поведение закрытия его последнего окна без выхода из процесса обычно является ошибкой, о которой вы можете сообщить в апстрим о приложении.
(Примечание: есть редкие исключения, например, веб-браузеры, которые поддерживают запущенный процесс даже после закрытия их последнего окна - но в этих случаях повторный щелчок по значку браузера или повторный запуск из командной строки просто говорит уже запущенному процесс, чтобы открыть новое окно. Опять же, приложение должно быть специально написано для обработки временного отсутствия окон, если это работает.)
источник
Как объяснил Брэндон Роудс, если окно уничтожено / скрыто его родительским процессом, то нет способа восстановить / восстановить / показать его извне процесса или самого приложения.
Вы можете подтвердить это из диспетчера окон, попробуйте:
wmctrl -l -p
окно, относящееся к его PID, отсутствует.Итак, возможно, что
hexchat
все еще отзывчив, попробуйте:-e
Открыть URL или выполнить команду в существующем HexChatСсылки:
man hexchat
man wmctrl
источник
Если процесс просто в фоновом режиме, возможно, этот ответ подходит и здесь:
Используйте,
fg
чтобы вернуть процесс на передний план.Смотрите полный ответ для получения дополнительных инструкций.
источник
Я не знаю hexchat, но, возможно, программа использует иконку в трее, которая позволяет вернуть главное окно. К сожалению, в Linux есть несколько лотков, и не все они работают вместе.
У меня была такая проблема с программой RadioTray, которая больше не появлялась после обновления до Xubuntu 14.04. Решением было его перенастройка (файл ~ / .local / share / radiotray / config.xml имел опцию 'gui_engine' с 3 возможными значениями 'appindicator', 'systray' и 'chooser').
Если это не помогает, попробуйте проверить параметры / предпочтения вашего приложения. Возможно, вы найдете опцию «Свернуть в трей». Отключите его и попробуйте снова закрыть окно.
источник
Вы можете попробовать Ctrl + Alt + Del, а затем завершить процесс. Надеюсь это поможет. Это то, что я делаю, когда программа в Ubuntu зависает или ведет себя смешно.
источник