Окно скрыто, но процесс запущен [закрыт]

13

Как я могу восстановить окна для данного pid? Было бы полезно в некоторых ситуациях, когда окно определенной программы исчезает (иногда случается со мной).

Например, каждый раз, когда я собираюсь закрыть hexchat, он показывает диалог для подтверждения. Если я нажму кнопку «Отмена», окно все равно исчезнет, ​​но процесс продолжится в фоновом режиме. (Я могу pgrep, это id).

Можно ли восстановить окно, если я знаю pid?

userEng15
источник
Вы поняли это? Это все еще иногда случается со мной - похоже, у них проблемы с исправлением этого.
Джейсон Клебан
Я точно не помню. Пришлось на некоторое время вернуться к окнам. Я думаю, что кто-то сказал мне в чате, что это было исправлено в ветке разработки в то время. Но если вы говорите, что это все еще происходит, то ошибка все еще там ... Извините, что не помогу.
userEng15
Я использую xdotool, может работать. «xdotool search -name hexchat» и «xdotool windowactivate theWindowId»
Зайн

Ответы:

3

К сожалению, нет - как правило, нет способа заставить приложение X Windows повторно подключиться к оконной системе, если оно теряет соединение и его окно разрушается. И окна обычно исчезают только в случае ошибки в самой программе - в этом случае процесс, вероятно, находится в зависшем состоянии, не зная его, ожидая ввода-вывода, который никогда не произойдет, потому что он не осознает, что его окно исчезло ,

Если приложение не имеет очень редкого дизайна и не позволяет отправлять ему специальный сигнал или сообщение для повторного подключения к X-серверу или перестройки нового окна, или если оно все еще присутствует на экране где-либо в виде значка или закрепленной иконки, и вы может взаимодействовать с ним таким образом, процесс программы должен быть просто убит, и вам придется перезапустить его.

Поведение закрытия его последнего окна без выхода из процесса обычно является ошибкой, о которой вы можете сообщить в апстрим о приложении.

(Примечание: есть редкие исключения, например, веб-браузеры, которые поддерживают запущенный процесс даже после закрытия их последнего окна - но в этих случаях повторный щелчок по значку браузера или повторный запуск из командной строки просто говорит уже запущенному процесс, чтобы открыть новое окно. Опять же, приложение должно быть специально написано для обработки временного отсутствия окон, если это работает.)

Брэндон Роудс
источник
3

Как объяснил Брэндон Роудс, если окно уничтожено / скрыто его родительским процессом, то нет способа восстановить / восстановить / показать его извне процесса или самого приложения.

Вы можете подтвердить это из диспетчера окон, попробуйте: wmctrl -l -pокно, относящееся к его PID, отсутствует.

Итак, возможно, что hexchatвсе еще отзывчив, попробуйте:

hexchat -e --command="gui show"

-e Открыть URL или выполнить команду в существующем HexChat

Ссылки:

user.dz
источник
1
Работал отлично.
Амар
1

Если процесс просто в фоновом режиме, возможно, этот ответ подходит и здесь:

Используйте, fgчтобы вернуть процесс на передний план.

Смотрите полный ответ для получения дополнительных инструкций.

j08lue
источник
1

Я не знаю hexchat, но, возможно, программа использует иконку в трее, которая позволяет вернуть главное окно. К сожалению, в Linux есть несколько лотков, и не все они работают вместе.

У меня была такая проблема с программой RadioTray, которая больше не появлялась после обновления до Xubuntu 14.04. Решением было его перенастройка (файл ~ / .local / share / radiotray / config.xml имел опцию 'gui_engine' с 3 возможными значениями 'appindicator', 'systray' и 'chooser').

Если это не помогает, попробуйте проверить параметры / предпочтения вашего приложения. Возможно, вы найдете опцию «Свернуть в трей». Отключите его и попробуйте снова закрыть окно.

Даниэль Алдер
источник
0

Вы можете попробовать Ctrl + Alt + Del, а затем завершить процесс. Надеюсь это поможет. Это то, что я делаю, когда программа в Ubuntu зависает или ведет себя смешно.

Джон Х
источник