O yserver é um servidor X11 moderno, desenvolvido do zero em Rust. Seu objetivo não é reproduzir o Xorg, mas oferecer um servidor prático que execute ambientes de área de trabalho, gerenciadores de janelas e aplicações atuais em Linux, descartando recursos legados como múltiplas telas, visuais não TrueColor, GLX indireto e a ABI do driver DDX.
Principais funcionalidades
- Suporte a extensões completas: BIG-REQUESTS, Composite, DAMAGE, DPMS, DRI3, GLX, Generic Event, MIT‑SCREENSAVER, MIT‑SHM, Present, RANDR, RENDER, SHAPE, SYNC, X‑Resource, XFIXES, XInput, XKEYBOARD, XTEST e GLX_EXT_texture_from_pixmap.
- Compatibilidade com desktops modernos: MATE, XFCE, Cinnamon e gerenciadores como FVWM3, e16 e wmaker foram testados com sucesso.
- Integração com compositores: o suporte ao TFP permite rodar o Compiz, com demonstração em vídeo disponível.
- Drivers suportados: AMD, Intel, Asahi (Apple Silicon) e Qualcomm. Não funciona com drivers proprietários da NVIDIA; o driver Nouveau ainda não foi testado de forma confiável.
Extensões e recursos avançados
O yserver implementa extensões essenciais para ambientes gráficos atuais, como DRI3 e GLX, garantindo aceleração 3D. A extensão RANDR permite redimensionamento dinâmico, enquanto Composite e RENDER possibilitam efeitos visuais avançados.
Desempenho e hardware testado
Foram realizados testes de ponta a ponta em diferentes plataformas:
- AMD: Ryzen 9 6900HX (RDNA2, RADV) e i9‑13900k + RX580 (Polaris/GCN4, RADV).
- Intel: i5‑7200U (Kaby Lake, ANV).
- NVIDIA: i5‑6500 com GTX 1050 (driver proprietário).
- Qualcomm: Snapdragon X1 (Adreno X1, Turnip).
- Apple Silicon: M1 (MBA) e M2 (MBP) rodando Asahi Linux (apple‑drm KMS + asahi GPU, Mesa AGX‑V).
- Virtualizado: virtio‑gpu dentro do virtme‑ng (passthrough Venus).
Instalação e dependências
O yserver requer a toolchain estável recente do Rust e as bibliotecas listadas abaixo. Os comandos de instalação variam conforme a distribuição:
sudo pacman -S just gcc seatd libxshmfence libxkbcommon libinput shaderc systemd-libs fontconfig
sudo apt install just gcc libseat-dev libxshmfence-dev libxkbcommon-dev libinput-dev glslc libudev-dev libfontconfig-dev
export RUSTFLAGS="-C target-feature=-crt-static"
apk add gcc musl-dev fontconfig-dev freetype-dev libxshmfence-dev libxkbcommon-dev libinput-dev libseat-dev shaderc
Execução como servidor independente (DRM/KMS)
O yserver pode utilizar o libseat para gerenciamento de assentos, ou operar diretamente em KMS atômico, exigindo acesso a /dev/dri/ e /dev/input/. Após compilar, instale o binário com:
just install # instala em /usr/local/bin/yserver (necessita sudo)
Integração com gerenciador de exibição (LightDM)
- Crie o arquivo
/etc/lightdm/lightdm.conf.d/99-yserver.confcontendo:[Seat:*] xserver-command=/usr/local/bin/yserver - Reinicie o LightDM:
sudo systemctl restart lightdm.
O greeter será carregado, permitindo login com o keyring desbloqueado via PAM.
Uso direto a partir de um TTY
just startx
Isso inicia o yserver e executa o ~/.xinitrc (ou o fallback /etc/X11/xinit/xinitrc). Alguns atalhos úteis:
- Ctrl + Alt + Backspace – encerra o servidor e retorna ao console.
- Ctrl + Alt + Enter – captura screenshot da framebuffer no diretório atual.
- Ctrl + Alt + D – exporta todos os drawables como arquivos PPM.
Testes de conformidade
O yserver passa por testes do X.Org X Test Suite (xts5) e do rendercheck para validar a cobertura do protocolo. Resultados atualizados podem ser consultados em docs/test-status.md.
Pontos positivos
- Código‑fonte em Rust oferece segurança de memória e manutenção mais simples.
- Elimina a maioria dos legados do Xorg, resultando em um servidor mais enxuto.
- Suporte amplo a extensões modernas, permitindo execução de ambientes de desktop completos.
- Boa performance em hardware AMD, Intel e Apple Silicon.
Pontos negativos
- Incompatibilidade total com drivers proprietários da NVIDIA; o driver Nouveau ainda não está estável.
- Ainda está em fase de desenvolvimento ativo; recursos avançados podem mudar.
- Documentação de alto nível está em
docs/high-level-design.md, mas pode ser insuficiente para iniciantes.
Comparativo rápido
| Característica | yserver | Xorg (versão padrão) |
|---|---|---|
| Linguagem | Rust (memória segura) | C |
| Legados removidos | Sim (multitela, visual não TrueColor, etc.) | Não |
| Suporte NVIDIA | Nenhum (proprietário) | Completo (proprietário + nouveau) |
| Extensões modernas | Todas listadas | Todas, porém com código legado |
| Complexidade de compilação | Moderada (dependências Rust) | Alta (múltiplos pacotes) |
Público-alvo
O yserver é indicado para desenvolvedores, entusiastas de Linux e distribuidores que buscam um servidor X11 leve, moderno e livre de código legado. Não é recomendado para usuários que dependem de hardware NVIDIA com drivers proprietários.
Veredito
O yserver demonstra que é possível substituir o Xorg por uma implementação enxuta e segura em Rust, atendendo a desktops modernos sem sacrificar funcionalidades essenciais. Para quem utiliza hardware AMD, Intel ou Apple Silicon e deseja experimentar um servidor X11 sem o peso dos antigos recursos, o yserver é uma opção promissora. Usuários de NVIDIA deverão permanecer com o Xorg até que haja suporte adequado.