Perl
防止 urxvt 視窗在子程序執行時關閉
有時在終端中工作時,例如在使用 Vim 時,我不小心關閉了視窗而沒有正確保存我的工作。
gnome-terminal
將在關閉除 shell 之外執行子程序的終端視窗之前顯示一個對話框。我想有一個類似的功能urxvt
;如果有子程序執行時視窗只是拒絕關閉就足夠了。是否有解決此問題的設置(或者可能是 Perl 外掛)?
和你有同樣的願望,所以我自己建立了一個擴展。我在編寫 Perl 程式碼方面不是很有經驗,但它非常簡單。我們檢查是否有與終端中執行的 shell 關聯的子程序。如果是這樣,鈴聲就會響起並且事件被消耗掉。請注意,urxvt 響鈴的行為取決於進一步的配置。
#!/usr/bin/perl sub on_wm_delete_window { my ($self, $event) = @_; my $CP = `ps --ppid $self->{shell_pid} -o pid= | wc -l`; chomp $CP; if ( $CP != 0 ) { $self->scr_bell; return 1; } else { return 0; } } sub on_child_start { my($self, $pid) = @_; $self->{shell_pid} = $pid; }
改編user1986653的答案:
只需將要安裝的腳本放置在
/usr/lib/urxvt/perl/
系統範圍內的可用性或~/.urxvt/ext/
使用者專用的可用性中。讓我們呼叫文件close-gracefully
並修改您的~/.Xresources
或~/.Xdefaults
URxvt.perl-ext-common: ...,close-gracefully
不要忘記
xrdb ~/[filename]
在每次文件修改後執行。有關 和 之間的區別的討論,~/.Xresources
請~/.Xdefaults
參見這個問題。