Sobre o projeto

Omega fornece uma abordagem robusta, tipada e declarativa para estender o ambiente de desktop Omarchy usando Rust. Ao tratar sua configuração como um workspace padrão do Cargo, Omega permite que os desenvolvedores escrevam widgets, controles e automações como crates independentes do Rust. Essa arquitetura garante que cada plugin seja executado em seu próprio processo separado, o que significa que uma falha em um plugin não derruba todo o shell, melhorando assim a estabilidade do sistema. O framework faz a ponte entre os plugins definidos pelo usuário e o estado subjacente do sistema. Omega supervisiona esses processos e intermedia integrações compartilhadas do sistema, permitindo que seu código Rust se concentre em descrever o que deve ser exibido e como as interações devem se comportar. A configuração é altamente estruturada: o diretório `system/` define o layout do desktop e as automações, enquanto os crates individuais em `units/` implementam plugins específicos. Esses plugins expõem bibliotecas que permitem que a declaração do sistema faça referência às suas configurações e superfícies por meio de tipos fortes do Rust, garantindo segurança e consistência em tempo de compilação. Um recurso chave do Omega é sua capacidade de gerenciar a própria configuração do shell. Uma vez adotado, uma declaração em Rust se torna a fonte de verdade para todo o arquivo `shell.json`. Isso permite uma integração perfeita de widgets nativos do Omarchy e plugins personalizados do Omega em um único layout. A CLI `omega` facilita esse fluxo de trabalho com comandos como `omega init` para configurar o workspace, `omega new` para criar scaffolds de crates de plugins e `omega build` para compilar e ativar configurações. Comandos avançados como `omega shell diff` e `omega shell apply` ajudam a gerenciar conflitos entre edições externas e a configuração gerada, garantindo que a natureza declarativa da configuração seja mantida. Os desenvolvedores podem criar interfaces de usuário interativas usando views declarativas. Por exemplo, um widget pode conter referências tipadas a estados do sistema (como `Audio` ou `Volume`), e comandos podem ser definidos para modificar esses estados. Omega deriva automaticamente as assinaturas e permissões necessárias dessas definições de tipo. O framework também suporta hot-reloading durante o desenvolvimento via `omega build --watch` e fornece ferramentas para inspecionar o status do daemon, logs e saúde dos plugins por meio da linha de comando. Isso faz de Omega uma ferramenta poderosa para usuários que desejam um controle profundo e programático sobre seu ambiente de desktop, aproveitando a segurança e o desempenho do Rust.