Você pode fazer isso com o lirc e com o seu blaster, mas pelo que isso soa não vai resolver o seu problema. Parece que o seu gerenciador de tela não aparece se não encontrar um monitor, porque o projetor está desligado. Portanto, mesmo que inicialize e execute o seu script ligando o projetor, ainda é depois que o gerenciador de exibição já falhou.
O que eu poderia pensar é um script simples através do cron, rodando a cada minuto, que apenas verifica se o gerenciador de exibição falhou, e tenta reiniciá-lo. Isso deve trazer o projetor de volta, se ele foi ligado a qualquer momento após a inicialização da máquina, no máximo, levando um minuto.
Para fazer isso, faça um script como
#!/bin/bash
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export SHELL="/bin/bash"
if [ $(systemctl status lightdm | grep Active: | awk -F ' ' '{print $2}') == "failed" ]; then
service lightdm restart
fi
salve-o, como diz lightdm-restart.sh
, e torne-o executável
chmod +x lightdm-restart.sh
Em seguida, abra o crontab de raízes com
sudo crontab -e
E adicione o seguinte na parte inferior
# try to restart lightdm every minute if it failed
* * * * * /path/to/lightdm-restart.sh