No âmbito do projeto Phoenix, foi feita uma tentativa de criar do zero um novo servidor X, que não utiliza os recursos do X.org Server e se destina a criar uma alternativa moderna que expande o protocolo X11 e oferece funcionalidades de compatibilidade com Wayland. Na fase atual de desenvolvimento, o Phoenix ainda não está pronto para uso diário, mas já permite organizar o trabalho com aplicações simples que usam GLX, EGL ou Vulkan para a saída gráfica, ao executar o Phoenix sobre um servidor X existente. O código é escrito na linguagem Zig e é distribuído sob a licença GPLv3.
No Phoenix, não se pretende implementar toda a funcionalidade do protocolo X11 disponível no X.org Server, nem suportar hardware desatualizado. Por exemplo, em vez de oferecer suporte completo aos elementos do protocolo X11 para trabalhar com fontes, planejam-se adicionar apenas operações básicas necessárias para aplicações reais. Em vez de suportar os drivers de vídeo clássicos do X.Org, a saída gráfica utiliza o Linux DRM (Direct Rendering Manager) e o Mesa GBM (Generic Buffer Management).
Supõe-se que a redução de funcionalidade não afetará a capacidade de rodar aplicações comuns, mesmo aquelas que utilizam GTK2. Essa abordagem permitirá simplificar significativamente a implementação, mantendo a compatibilidade com programas lançados nos últimos 20 anos, além de garantir o funcionamento em hardware com no máximo 15-20 anos de idade.
Neste contexto, no protocolo X11 planejam-se adicionar novas extensões que considerem as tendências modernas, como suporte a HDR, suporte correto para configurações de múltiplos monitores (buffers de quadro separados para cada monitor), possibilidade de especificar DPI em relação aos monitores, ajuste dinâmico da taxa de atualização do monitor (VRR) e prevenção de tearing na saída. No Phoenix, também foi alterado o comportamento no processamento de strings — por padrão, utiliza-se UTF-8, enquanto ISO Latin-1 é aplicado apenas quando essa codificação é explicitamente especificada.
Para aumentar a segurança do aplicativo no Phoenix, por padrão, eles são isolados uns dos outros e podem interagir e acessar janelas ou eventos de entrada de terceiros apenas após uma confirmação explícita de autoridade através de um diálogo especial ou fornecimento de permissões na inicialização. Para manter a compatibilidade com clientes X11 mais antigos, em vez de gerar erros em caso de falta de permissões, dados vazios serão transmitidos. Com combinações globais de teclas funcionando apenas ao manter a tecla modificadora ou fornecendo permissões individuais.
Para iniciar aplicativos que suportam apenas Wayland, planeja-se implementar suporte interno para este protocolo ou utilizar camadas externas, como 12to11.
Fonte: opennet.ru
