Todos os projetos

Widgets

Widgets de vidro fosco para a área de trabalho do Windows, escritos em Rust. Projeto pessoal, desenvolvido com IA para acelerar a implementação.

Uso do Claude com 46% de uso diário e 31% semanal; no meio, o Clawd programando, de Sherlock com a lupa, de binóculo, com a prancheta, com ajudantes, com a ampulheta e ouvindo música
Uso do Claude · o Clawd faz o que o Claude Code está fazendo
Tempo em Florianópolis, 19 graus com chuva fraca caindo por cima do cartão e a previsão das próximas horas
Tempo · a chuva cai no próprio cartão
Tocando agora no Spotify: a música anda, troca para a próxima e o cartão muda de cor com a capa
Tocando agora · a cor acompanha a capa da música
Sistema: anéis e barras de CPU, memória e disco, com a CPU subindo e descendo
Sistema · CPU, memória e disco ao vivo
Pomodoro contando o foco, 13:28 para acabar, o terceiro de quatro
Pomodoro · contando o foco
GitHub: 812 contribuições no último ano, 5 dias seguidos e o mapa de contribuições
GitHub · contribuições e sequência de dias
tipo
Projeto pessoal · acelerado com IA
licença
Código aberto · MIT
plataforma
Windows
stack
Rust · Win32 · Direct2D
distribuição
Instalador e releases via GitHub Actions
tamanho
3,5 MB, um executável
testes
213 automáticos, rodando no CI a cada push
versões
10 publicadas no GitHub

A ideia

Ter na área de trabalho, presas ao papel de parede, as informações que eu olhava o dia inteiro: clima, uso do sistema, a música que está tocando, atividade no GitHub, um Pomodoro e o uso do Claude. Cada widget usa o próprio papel de parede desfocado como fundo.

O Clawd

O widget Uso do Claude mostra quanto da sessão de 5 horas e da semana eu já usei no Claude Code. Ao lado dos medidores fica o Clawd, o caranguejo do Claude Code, em pixel art. Ele faz o que o Claude Code está fazendo naquele momento.

Editando código, ele digita num notebook. Lendo e procurando no código, vira Sherlock, de chapéu, cachimbo e lupa. Pesquisando na web, olha longe com um binóculo; planejando, escreve numa prancheta. Num comando demorado segura uma ampulheta, cada subagente aparece como um Clawd pequeno trabalhando junto e, parado, ele põe o fone ou cochila. Em dezembro ganha gorro de Papai Noel e neve.

Um clique e ele pula para cima da barra de tarefas, ao lado do relógio, com um balão dizendo o que o Claude Code faz agora. Outro clique e ele volta para o widget.

O Clawd em cima da barra de tarefas, ao lado do relógio, programando, com o balão Editando clawd.rs
Na barra de tarefas · o balão diz o que o Claude Code está fazendo

Por quê: os números vêm do próprio Claude Code. Ao conectar, o widget vira a linha de status dele e recebe um aviso quando o Claude Code precisa de mim, então o Clawd mostra o estado real, sem adivinhar.

Decisões

  1. Rust e Direct2D, sem framework de interface

    A interface é desenhada direto com Direct2D sobre janelas Win32.

    Por quê: widgets ficam abertos o tempo todo. Um app que roda sempre precisa ser leve, e o resultado é um único executável de 3,5 MB, sem runtime de navegador por trás.

  2. O fundo vem do próprio papel de parede

    Em vez de depender de transparência da janela, cada widget usa uma versão desfocada do papel de parede como fundo.

    Por quê: o efeito de vidro fosco fica consistente e não depende de recursos de composição que variam entre versões do Windows.

  3. Todos os widgets testados em todos os estados

    Cada widget tem testes para cada estado em que pode estar.

    Por quê: widget de área de trabalho quebra nos cantos: sem rede, sem música tocando, API fora do ar. Esses estados precisam funcionar tanto quanto o caminho feliz.

  4. Instalador e releases automáticos

    O GitHub Actions gera o instalador e publica o release.

    Por quê: se instalar é difícil, ninguém usa. Publicar uma versão nova não depende de passos manuais na minha máquina.