← Portfólio

Software & automação · estudo de caso

Easy Shutdown

Um utilitário leve para Windows 11 que controla o ciclo de energia do PC: sete ações imediatas, tarefas agendadas que sobrevivem a reinícios, aviso final na tela e atalhos globais seguros.

TipoProduto próprio
PapelProduto, interface, backend em Rust e distribuição
PeríodoOut/2026 · versão 0.2.0 publicada
EstadoEm desenvolvimento
TecnologiasRust · Tauri 2 · React 18 · TypeScript · Tailwind CSS · Zustand · Win32 API · Vitest

O projeto em poucas palavras

O Easy Shutdown é um aplicativo de desktop para Windows 11 que reúne, num só lugar, tudo o que se faz com a energia do computador: desligar, reiniciar, suspender, hibernar, bloquear, encerrar a sessão e apagar a tela. Dá para agir na hora, agendar para depois, deixar por conta da inatividade ou usar um atalho de teclado, sem caixas de diálogo improvisadas nem comandos no terminal.

Ele é leve, tem interface no estilo do Windows 11, com tema claro e escuro, e roda na bandeja do sistema. Os instaladores (.msi e .exe) estão na página de releases; a versão publicada é a 0.2.0.

Tela inicial do Easy Shutdown com a próxima tarefa agendada em destaque e os cartões das sete ações de energia
A tela inicial: a próxima tarefa no topo e as sete ações a um clique. As telas desta página são a interface real do aplicativo, exibida com dados de demonstração.Ampliar imagem ↗

O ponto de partida

Quem deixa o computador baixando um arquivo, renderizando um vídeo ou rodando um backup costuma querer a mesma coisa: que ele desligue sozinho quando terminar. O Windows até permite, mas por caminhos espalhados: o menu Iniciar, o comando shutdown no terminal, o Agendador de Tarefas. Nenhum mostra, num só lugar, o que está programado e quanto falta.

Os riscos também são reais. Um desligamento agendado pode ser engolido pela suspensão automática do PC, pode pegar a pessoa de surpresa ao voltar de uma pausa ou ser travado por um programa pedindo "salvar?". E atalhos globais mal escolhidos podem disparar a ação por engano.

O desafio era criar algo simples de usar e previsível: que faça o que foi pedido, no horário certo, e que nunca desligue o PC por acidente.

O que o aplicativo faz

Sete ações, com confirmação clara

Cada ação tem um cartão com uma descrição curta e um botão de ajuda que explica as diferenças entre opções parecidas, como suspender e hibernar. Com a confirmação ligada, um diálogo explica o que vai acontecer e oferece o modo forçado, que fecha programas sem perguntar, deixando o risco de perder trabalho não salvo bem visível.

Diálogo de confirmação para desligar o PC, com a opção de forçar o fechamento dos programas
Confirmação antes de agir, com o modo forçado explicado.Ampliar imagem ↗

Tarefas agendadas

É possível ter várias tarefas ao mesmo tempo, cada uma com a sua ação:

  • Daqui a algumas horas ou minutos;

  • Data e hora específicas;

  • Repetir todos os dias, nos dias úteis ou em dias escolhidos;

  • Inatividade: após N minutos sem teclado ou mouse.

O formulário mostra uma prévia em linguagem natural ("Vai executar hoje às 14h") antes de salvar. As tarefas ficam gravadas em disco e continuam valendo depois de fechar o app ou reiniciar o PC; as recorrentes podem ser pausadas ou ter só a próxima ocorrência pulada.

Tela de tarefas agendadas com o formulário de nova tarefa e a lista de tarefas únicas, semanais e por inatividade
Tarefas únicas, semanais e por inatividade na mesma lista.Ampliar imagem ↗

Aviso final na tela

Nos últimos segundos antes de uma tarefa executar, aparece uma contagem regressiva com Cancelar, Adiar 10 min e Executar agora. Diferente de uma notificação, o aviso não fica escondido pelo modo "Não incomodar" do Windows. Há ainda um lembrete antes do horário e, para tarefas por inatividade, basta mexer o mouse para cancelar.

Aviso em tela com contagem regressiva de 47 segundos para desligar e os botões Cancelar, Adiar 10 min e Executar agora
O aviso final, com tempo para salvar o trabalho ou adiar.Ampliar imagem ↗

Atalhos globais seguros

Os atalhos funcionam mesmo com o app na bandeja e mostram, para cada um, se o Windows aceitou o registro ou se a combinação já é usada por outro programa. Nenhum atalho vem ligado de fábrica, e há um opcional para cancelar a próxima tarefa.

Tela de atalhos globais com o estado de cada combinação e um aviso de conflito em uma delas
Cada atalho informa se foi aceito ou se há conflito.Ampliar imagem ↗

Bandeja e ajustes

A bandeja do sistema oferece as ações rápidas, "Agendar desligamento" (de 15 minutos a 3 horas), adiar ou cancelar a próxima tarefa e manter o PC acordado. Nos ajustes ficam o início com o Windows, o tema, o tempo do aviso final e o lembrete padrão.

Tela de ajustes no tema claro, com início com o Windows, tema, confirmação, aviso antes de executar e lembrete padrão
Ajustes, aqui no tema claro.Ampliar imagem ↗

Decisões de engenharia

Um frontend web, um backend nativo

O aplicativo usa Tauri 2: a interface é React 18 com TypeScript, Tailwind CSS e Zustand, rodando na WebView2 do Windows; o backend é em Rust e conversa com a interface por comandos e eventos. Um motor de tarefas avalia todas as agendas a cada segundo, emite a contagem para a tela, dispara lembretes e executa a ação.

Ações pela API do Windows, sem console

As ações chamam diretamente a Win32 API (como ExitWindowsEx, SetSuspendState e LockWorkStation), sem abrir o shutdown.exe nem um console escondido. Isso evita janelas piscando e problemas de idioma do sistema.

Prevenir o desligamento por engano

  • Salvar antes de executar: o estado da tarefa é gravado antes da ação, para um desligamento não se repetir quando o PC liga de novo.

  • Ocorrências perdidas: se o PC estava suspenso no horário, um atraso pequeno recebe um período de graça com aviso; um atraso grande marca a ocorrência como perdida, em vez de desligar a máquina de surpresa.

  • Manter acordado: enquanto houver tarefa única pendente, o app impede a suspensão automática que engoliria o desligamento.

  • AltGr: combinações Ctrl+Alt+letra são recusadas, porque o Windows trata o AltGr como Ctrl+Alt e digitar "/" ou "ä" poderia disparar a ação.

  • Gravação atômica: configurações, tarefas e histórico são salvos num arquivo temporário e renomeados, com cópia de segurança se o arquivo corromper.

Permissões mínimas e dados locais

A WebView só pode minimizar, fechar e arrastar a janela; todo o resto passa por comandos do backend. Tudo fica no computador, sem nuvem nem telemetria.

O que fiz

Concebi o produto e desenvolvi todas as partes: a interface em React, o backend em Rust com o motor de tarefas e as chamadas ao Windows, os atalhos globais, a bandeja do sistema, a migração de configurações da versão anterior (que tinha outro nome) e a documentação. Também configurei a integração contínua, que roda num servidor Windows os testes, a checagem de qualidade do Rust (Clippy) e a geração dos instaladores.

Onde está hoje

A versão 0.2.0, de 26/10/2026, está publicada com instaladores .msi e .exe, e a integração contínua do commit mais recente passou. O repositório tem testes do frontend, que rodei e passaram (15 testes), e testes em Rust para a lógica pura de cálculo de horários, validação de atalhos e configurações.

Quanto aos limites: o app é só para Windows (no Windows 10 funciona, sem o efeito Mica), a licença é proprietária e o desligamento sem forçar ainda pode ser barrado por um programa pedindo para salvar, o que a interface avisa na hora de agendar.

O que guiou as decisões

Num utilitário que desliga o computador, a confiança vem da previsibilidade. Por isso as decisões foram menos sobre recursos e mais sobre cenários de falha: o que acontece se o PC estiver suspenso, se o app fechar, se o atalho conflitar ou se alguém voltar de uma pausa no meio da contagem.

Dar visibilidade ao que está programado, com a próxima tarefa sempre no topo e um aviso na tela que não depende de notificação, tornou o app mais seguro de usar do que os comandos de terminal que ele substitui.

Uma ideia em movimento?

Vamos transformar a próxima pergunta em algo que funciona.

Conversar sobre um projeto ↗