子プロセスの実行中にurxvtウィンドウが閉じないようにする

子プロセスの実行中にurxvtウィンドウが閉じないようにする

場合によっては、Vimを使用するなど、端末で作業しているときに作業内容を正しく保存せずに誤ってウィンドウを閉じることがあります。

gnome-terminalシェルの外部で実行されている子プロセスがある端末ウィンドウを閉じる前に、ダイアログボックスが表示されます。私は同様の機能を期待していましたurxvt。子プロセスが実行されている限り、ウィンドウを閉じることを拒否するだけで十分です。

この問題を解決する設定(またはPerlプラグイン)はありますか?

ベストアンサー1

あなたと同じ欲求を持っていたので、私は直接拡張を構築しました。私はPerlコードを書く経験があまりありませんが、とても簡単です。端末で実行されているシェルに関連付けられているサブプロセスがあることを確認してください。その場合、ベルが鳴り、イベントが消滅します。 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を参照してください。質問

おすすめ記事