O Domicile transforma o Wayland num desktop Linux customizável com HTML, CSS e JavaScript. Descubra como criar interfaces únicas com Chromium e Rust.
O ecossistema Linux sempre foi um terreno fértil para experimentações ousadas. A mais recente delas chama-se Domicile, um compositor Wayland que utiliza o Chromium como mecanismo de renderização para permitir que os desenvolvedores web criem desktops personalizados usando HTML, CSS e JavaScript/TypeScript.
A proposta é simples na essência, mas radical na execução: e se as janelas nativas do Wayland pudessem ser tratadas como elementos DOM, estilizadas com CSS e organizadas com a mesma liberdade que temos ao construir uma página web?
O que é o Domicile e por que ele importa?
O Domicile é um Wayland Compositor que usa uma versão modificada do Chromium como renderizador. Em vez de desenhar as janelas com APIs gráficas tradicionais, o compositor insere as superfícies Wayland diretamente na árvore de camadas do Chromium, sem capturas de tela ou cópias para canvas.
Cada janela nativa torna-se um elemento <app> no DOM, e todo o "chrome" do sistema — painéis, lançadores, decorações, sobreposições — é conteúdo web comum.
Isso significa que um desenvolvedor pode aplicar transform: rotate(17deg), border-radius, opacity ou qualquer outra propriedade CSS diretamente a uma janela do Kitty ou de um navegador, como se fosse uma <div>.
O lema do projeto no GitHub é revelador: "Wayland windows as DOM elements. Chromium is the compositor. May God have mercy on our souls.".
A importância disso reside na acessibilidade da customização. Historicamente, personalizar profundamente um desktop Linux exigia conhecimento de linguagens de baixo nível, APIs gráficas complexas ou configurações específicas de cada compositor.
Com o Domicile, qualquer pessoa familiarizada com desenvolvimento web pode criar um shell completo — ou seja, a camada de interface que gerencia janelas, barras e áreas de trabalho.

Como funciona a arquitetura técnica
A arquitetura do Domicile é engenhosa e merece atenção. O projeto é dividido em duas camadas principais: o motor (engine) e o shell.
O motor é o Chromium modificado. Ele recebe as superfícies Wayland dos clientes nativos e as incorpora à árvore de renderização do navegador.
Cada superfície torna-se um elemento DOM real, com todas as propriedades e eventos associados. O shell é um módulo JavaScript que o desenvolvedor escreve para organizar esses elementos. Um shell mínimo pode ser algo como:
const Shell = () => ( <main> <app app-id="kitty" /> <webview src="https://example.com" /> </main> );
Nesse exemplo, uma janela nativa do Kitty e uma página web são irmãs na mesma árvore DOM. O desenvolvedor posiciona os elementos; o Domicile cuida do resto — incluindo o redirecionamento de entrada, o foco e a composição final.
Para quem não quer começar do zero, o projeto oferece o Manganese, um shell de referência completo que implementa um desktop com tiles, workspaces, barra transparente com bandeja, relógio, volume, brilho e carga da bateria.
O Manganese é construído com React e Panda CSS, e cada janela Wayland nele é um elemento <app> que aceita CSS comum. O gerenciamento de janelas é inspirado no Sway: a árvore de layout, os comandos de teclado e o comportamento de workspaces seguem o mesmo modelo.
Produto Recomendado
Você já percebeu que a maioria das pessoas só conversa com o ChatGPT... enquanto uma minoria está criando agentes de IA que executam tarefas, tomam decisões e geram receita sozinhos?
O livro "Construindo Aplicações com Agentes de IA: Projeto e Implementação de Sistemas Multiagentes" é o seu mapa prático — do zero à arquitetura profissional.
✅ Projeto e implementação passo a passo
✅ Sistemas multiagentes que colaboram entre si
✅ Aplicações reais para negócios e automação
✅ Linguagem acessível, com rigor técnico
💡 Não é teoria. É engenharia aplicada.
Eu ganho uma comissão quando você faz uma compra.
Manganese: o gerenciador de janelas que une Sway e web
O Manganese não é apenas uma demonstração; é a prova de conceito que valida todo o modelo. Ele implementa o layout em árvore do Sway, com tiles, janelas flutuantes e workspaces que podem ser movidos entre monitores.
A barra superior, construída como uma árvore React, exibe informações do sistema e permite alternar entre áreas de trabalho.
Um detalhe interessante é que o Manganese foi projetado para ser executado tanto como um shell Domicile completo quanto em um navegador comum, para fins de estilização.
Quando aberto fora do Domicile, o próprio shell descreve a janela e simula o ambiente, permitindo que desenvolvedores trabalhem no CSS sem precisar reiniciar o compositor a cada alteração.
A estrutura de workspaces segue fielmente o modelo do Sway: um workspace é exibido em uma tela por vez, e a tela que contém o foco do teclado é a única que preenche sua workspace na barra. Isso mantém a consistência para usuários vindos do Sway e facilita a transição.
Desenvolvimento assistido por IA
Um aspecto que gerou curiosidade na comunidade foi a revelação de que o Domicile foi desenvolvido em conjunto com o Claude Code, uma ferramenta de IA para programação.
O autor do projeto, utilizou a IA como assistente no desenvolvimento do compositor e do shell de referência. Isso não diminui o mérito técnico da empreitada; pelo contrário, evidencia como ferramentas de IA podem acelerar a prototipagem de sistemas complexos e de baixo nível.
Para os desenvolvedores que desejam aprender com o código, o repositório no GitHub está disponível sob a licença MIT, com ressalvas para os patches do motor Chromium, que mantêm as licenças originais. Há pacotes para Debian, Ubuntu, Fedora, openSUSE e Arch, além de instruções para execução via Nix.
Considerações e perspectivas
É natural que a abordagem do Domicile divida opiniões. Usar um navegador como compositor de desktop traz vantagens óbvias — familiaridade para desenvolvedores web, ecossistema de ferramentas CSS, facilidade de prototipagem —, mas também levanta questões sobre desempenho, consumo de memória e segurança.
O Chromium é um componente pesado, e embora o projeto tenha modificado o motor para integrar superfícies Wayland de forma eficiente, ainda não há dados públicos de benchmark que comparem o Domicile a compositores tradicionais como Sway ou KWin.
Por outro lado, a proposta de democratizar a customização é inegavelmente atraente. Se um desenvolvedor front-end pode criar um shell de desktop completo com as mesmas habilidades que usa para construir sites, o número de pessoas capazes de contribuir para o ecossistema de desktops Linux cresce exponencialmente.
O Domicile não pretende substituir o GNOME ou o KDE; ele se posiciona como uma alternativa para quem quer experimentar e criar interfaces verdadeiramente únicas.
Checklist para experimentar o Domicile
Se você ficou curioso e quer testar o Domicile, aqui está um checklist prático:
□ Verifique se sua distribuição é compatível (Debian, Ubuntu, Fedora, openSUSE ou Arch).
□ Acesse o site oficial em domicile-desktop.com e leia a documentação de arquitetura.
□ Clone o repositório no GitHub (cprussin/domicile) para explorar o código e os exemplos.
□ Instale o Manganese para uma experiência de desktop completa com tiles e workspaces.
□ Ou comece com o minimal-shell para entender a estrutura básica de um shell Domicile.
□ Escreva seu próprio shell em JavaScript/TypeScript e aplique CSS às janelas.
□ Participe da comunidade reportando problemas ou contribuindo com melhorias.

Nenhum comentário:
Postar um comentário