Infelizmente, não funciona assim. Muitos desses programas que realmente possuem um manipulador de sinal, não bloqueiam o sinal para mostrar uma caixa de diálogo de confirmação. O manuseio de sinal é geralmente mínimo ou ausente.
Você pode facilmente experimentá-lo sem ter que desligar. Basta enviar o SIGTERM para o seu processo Firefox ou LibreOffice:
$ pkill firefox
Normalmente, o Firefox pode perguntar se você realmente deseja fechá-lo. Além disso, normalmente demora um pouco para fechar, especialmente quando ele está sendo executado há muito tempo e usando mais de 1 GB de RAM - geralmente leva um minuto para o processo terminar após a última janela ter sido fechada. Nada disso acontece quando você envia SIGTERM, o processo é terminado instantaneamente.
No entanto, alguns ambientes de área de trabalho fecham todas as janelas abertas antes de serem encerradas. Ao contrário do SIGTERM, fechar uma janela programaticamente é como clicar no botão X dessa janela, ou Alt + F4 . Este também é o que o script na outra resposta faz - ele usa wmctrl para fechar todas as janelas abertas graciosamente.
Quando uma janela é fechada, o programa não está com pressa e pode fechar tudo dentro dessa janela, por exemplo, abas abertas e também pode mostrar uma janela de diálogo se houver trabalho não salvo. Depois que todas as janelas abertas de um aplicativo tiverem sido fechadas, o processo geralmente terminará logo depois disso.
Portanto, depende do seu ambiente de área de trabalho (supondo que você use o ambiente de área de trabalho para desligar e não sudo poweroff
). Por exemplo, o KDE deve esperar que as janelas abertas sejam fechadas antes de serem encerradas, enquanto o MATE não.
Linha inferior: feche todas as janelas abertas manualmente antes de desligar. Ou use um ambiente de área de trabalho que aguarde a conclusão de todas as janelas.