Acho que uma opção seria introduzir mais dois temporizadores (e serviços) que seriam disparados uma vez por dia somente nas horas de comutação (9:00 e 16:00) e esses serviços removeriam quaisquer substituições e reativariam temporizadores conforme necessário para remover uma configuração manual e retornar a um automático.
Mas eu realmente acho que você está super engenharia isso até certo ponto ... Embora seja louvável que você esteja conseguindo implementar tudo isso sem um único script de shell e você está fazendo um grande uso dos recursos do systemd, como o especificações de calendário muito flexíveis de unidades temporizadas e a conveniência de substituir arquivos, acho que a codificação do estado do sistema (escuro vs. brilhante, manual vs. automático) no systemd realmente não simplifica sua solução geral.
Como exercício, tente imaginar se suas combinações eram muito maiores. Por exemplo, e se você não tivesse apenas dois esquemas de cores por dia, mas três? Ou se você tivesse quatro esquemas de cores "brilhantes" diferentes, um para cada estação? Ou se você quiser ajustar os horários do switch com base nas horas do nascer / pôr do sol?
Parece-me que ter um único timer + systemd para alternar o esquema de cores seria mais apropriado, fazendo com que esse serviço invocasse um script (shell, python, etc.) que selecionasse o esquema de cores, levando em conta a hora atual, mas também gerenciar substituições existentes (usando arquivos de estado em algum lugar em / run, talvez.)
Esse sistema seria mais simples e muito mais extensível do que você pode construir apenas com unidades systemd.