À propos du projet

Omega fournit une approche robuste, typée et déclarative pour étendre l'environnement de bureau Omarchy en utilisant Rust. En traitant votre configuration comme un workspace Cargo standard, Omega permet aux développeurs d'écrire des widgets, des contrôles et des automatisations comme des crates Rust indépendants. Cette architecture assure que chaque plugin s'exécute dans son propre processus séparé, ce qui signifie qu'un crash dans un plugin ne fait pas tomber l'ensemble du shell, améliorant ainsi la stabilité du système. Le framework comble le fossé entre les plugins définis par l'utilisateur et l'état système sous-jacent. Omega supervise ces processus et courtine les intégrations système partagées, permettant à votre code Rust de se concentrer sur la description de ce qui devrait être affiché et sur la façon dont les interactions devraient se comporter. La configuration est hautement structurée : le répertoire `system/` définit la disposition du bureau et les automatisations, tandis que les crates individuels sous `units/` mettent en œuvre des plugins spécifiques. Ces plugins exposent des bibliothèques qui permettent à la déclaration système de référencer leurs paramètres et leurs surfaces via des types Rust forts, assurant la sécurité et la cohérence à temps de compilation. Une caractéristique clé d'Omega est sa capacité à gérer la configuration du shell elle-même. Une fois adoptée, une déclaration Rust devient la source de vérité pour l'ensemble du fichier `shell.json`. Cela permet une intégration transparente des widgets Omarchy natifs et des plugins Omega personnalisés dans une seule disposition. Le CLI `omega` facilite ce flux de travail avec des commandes comme `omega init` pour configurer le workspace, `omega new` pour créer des crates de plugins, et `omega build` pour compiler et activer les configurations. Les commandes avancées telles que `omega shell diff` et `omega shell apply` aident à gérer les conflits entre les modifications externes et la configuration générée, assurant que la nature déclarative de la configuration est maintenue. Les développeurs peuvent créer des interfaces utilisateur interactives à l'aide de vues déclaratives. Par exemple, un widget peut contenir des références typées à des états système (comme `Audio` ou `Volume`), et des commandes peuvent être définies pour modifier ces états. Omega dérive automatiquement les abonnements et les autorisations nécessaires à partir de ces définitions de type. Le framework prend également en charge le rechargement à chaud pendant le développement via `omega build --watch`, et fournit des outils pour inspecter l'état du démon, les journaux et la santé des plugins via la ligne de commande. Cela fait d'Omega un outil puissant pour les utilisateurs qui souhaitent un contrôle programmatique approfondi de leur environnement de bureau tout en tirant parti de la sécurité et des performances de Rust.