Pular para o conteúdo
yserver: vale a pena usar este servidor X11 escrito em Rust?

yserver: vale a pena usar este servidor X11 escrito em Rust?

Análise completa do yserver, servidor X11 em Rust que suporta desktops modernos e elimina legados. Veja prós, contras e comparativo.

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:

Arch Linux

sudo pacman -S just gcc seatd libxshmfence libxkbcommon libinput shaderc systemd-libs fontconfig

Ubuntu

sudo apt install just gcc libseat-dev libxshmfence-dev libxkbcommon-dev libinput-dev glslc libudev-dev libfontconfig-dev

Alpine

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)

  1. Crie o arquivo /etc/lightdm/lightdm.conf.d/99-yserver.conf contendo:
    [Seat:*]
    xserver-command=/usr/local/bin/yserver
  2. 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.

Via github.com. Você pode conferir o post original em inglês:

yserver

Por · Última atualização: