Pelo visto, nesse caso tem que ser exec_always
(que executa novamente depois de recarregar) e não exec
(que só executa durante a incialização).
(Honestamente, seria melhor vermos o script; poderíamos assim dizer com mais confiança se dá para rodar uma cópia depois da outra assim).
Particularmente eu só daria um killall swaybg && swaybg -i "$NEW_WALL" &
, em vez de recarregar toda a configuração do Sway.
Não só essas variáveis, tem muito mais no contexto de uma sessão gráfica. Muito mais prático fazer isso usando um loop do snooze
(AUR), que é feito especialmente para esse tipo de “script agendado”.
(ou até mesmo meter logo um systemd.timer
, já que as distribuições costumam configuram os DEs/WMs para enviar tudo para o systemd --user
).