Закрыть подсказку для urxvt

276
fredefox

Могу ли я получить urxvt для запроса перед закрытием терминала, когда на переднем плане запущен процесс?

Это поведение по умолчанию, например, для gnome-терминала.

Я использую i3, который использует протокол WM_DELETE для обработки этого, если это актуально.

4

2 ответа на вопрос

2
fredefox

Скрипт Perl добился цели. Я закончил с этим:

#!/usr/bin/perl  sub on_wm_delete_window { my ($self, $event) = @_; my $CP = `ps --ppid $self-> -o pid= | wc -l`; chomp $CP; if ( $CP != 0 ) { return system("zenity --question --title 'Close window' --text 'Subprocess is running. Really close?'") } else { return 0; } }  sub on_child_start { my($self, $pid) = @_; $self-> = $pid; } 

Который делает то, что я хочу. (Это модификация этого ответа ) Если запущен подпроцесс, пользователю предлагается подтвердить, что он хочет закрыть окно.

Требуется zenityдля быстрого.

Это была моя ссылка, которая указала вам на этот пост? harrymc 5 лет назад 0
Да, я нашел решение. fredefox 5 лет назад 0
0
harrymc

Эта проблема, похоже, решена в Unix Stack Exchange в окне «
Запретить закрытие окна urxvt» при запуске дочернего процесса .

Ниже я приведу два ответа из вышеприведенного поста. Возможны два случая.

При использовании расширения с вкладками

Решение можно найти в статье
об WordPress urxvt. Комментирование одной строки в расширении tabbedex может предотвратить случайное закрытие окон URxvt :

Найдите следующий код в вашем файле расширения tabbedex. Файл, вероятно, находится где-то рядом /usr/local/lib/urxvt/perl/tabbedex, или эквивалент в вашей системе.

Это фрагмент кода Perl для поиска:

sub on_wm_delete_window { my ($self) = @_; $_->destroy for @{ $self-> }; 1; } 

Все, что вам нужно сделать, это закомментировать одну строку, как показано ниже.

sub on_wm_delete_window { my ($self) = @_; # $_->destroy for @{ $self-> }; 1; } 

Когда не используется расширение с вкладками

Используйте следующий скрипт, чье имя файла скажем так close-prevent:

#!/usr/bin/perl  sub on_wm_delete_window { return 1; } 

Поместите сценарий /usr/lib/urxvt/perl/для общесистемной доступности или только ~/.urxvt/ext/для пользователей и измените ~/.Xdefaults:

URxvt.perl-ext-common: ...,close-prevent 

Запускать xrdb ~/.Xdefaultsпосле каждой модификации.

Окно терминала uxrvt теперь не будет закрываться при использовании Alt+ F4или кнопки закрытия.
Команда exitили Ctrl+ D все еще будет работать.

Похожие вопросы