Tive o mesmo desejo que você, então eu mesmo construí uma extensão. Eu não sou muito experiente em escrever código Perl, mas é bastante simples. Verificamos se há processos filhos associados ao shell em execução no terminal. Se assim for o sino é tocado e o evento consumido. Esteja ciente de que o comportamento do urxvt de tocar a campainha depende de outras configurações.
#!/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;
}
Adaptando a resposta de user1986653:
Basta colocar os scripts que você deseja instalar em /usr/lib/urxvt/perl/
para disponibilidade em todo o sistema ou em ~/.urxvt/ext/
para disponibilidade somente do usuário. Vamos chamar o arquivo close-gracefully
e modificar seu ~/.Xresources
ou ~/.Xdefaults
URxvt.perl-ext-common: ...,close-gracefully
Não se esqueça de executar xrdb ~/[filename]
após cada modificação de arquivo. Para uma discussão sobre a diferença entre ~/.Xresources
e ~/.Xdefaults
, consulte esta pergunta .