xpra

Converta qualquer aplicação nativa de Linux, para Web, com o xpra: open source e também funciona para Windows e macOS!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

Depois de publicar a respeito do DWService e do recente WeTTY, eu me perguntei: Como cria uma aplicação legada como Web App? Ou seja, é possível converter ou apontar uma interface como o LibreOffice ou o Blender,aplicações comuns, para que executem diretamente via Web Browser no mesmo sistema ou acessíveis remotamente?

A resposta é um sonoro sim e não é tão complicado quanto se pensa!

2. Xpra

A aplicação da vez é o Xpra, uma pequena API feita sob Xorg, então Wayland ta fora da brincadeira aqui. Aberto, gratuito e livre, também tem versões para Windows e macOS.

Essencialmente permite transmitir a janela ou display localmente ou pela rede, tanto por SSH quanto inclusive via Web Server!

Porém no macOS e no Windows não funcionará o modo seamless, que é a transmissão de uma janela específica. Essa tarefa no Windows é papel do RDP que é mantido por uma licença proprietária e paga do protocolo de transmissão de telas da Microsoft. – Provavelmente não implementaram pra evitar processos. – macOS idem!

Portanto apenas o Linux pode transmitir aplicações e janelas, ou o desktop inteiro. Fica a seu critério!

3. Instalação

Por mais que eu recomende o repositório padrão, a versão dos Ubuntu’s ta muito velha e é no 4.0+ que ele brilha de verdade. Para isso, use (Ubuntu 22.04):

$ sudo apt install -y wget
$ wget -q https://xpra.org/gpg.asc -O- | apt-key add -
$ echo "deb https://xpra.org/ jammy main" >> /etc/apt/sources.list.d/xpra.list
$ sudo apt update

E finalmente:

$ sudo apt install xpra

Todos os plugins extras estarão em conjunto desse pacote.

Em sistemas como ArchLinux, ele já está na versão mais nova mas requer alguns comandos diferentes:

$ sudo pacman -S xpra xorg-server-xvfb

E pelo YAY, nos repositórios AUR instale o pacote:

$ yay -S xpra-html5

Sem eles o Xpra não inicia!

4. Funcionamento

O funcionamento é relativamente simples: Use o XPra pra iniciar uma aplicação. Por padrão ele gera um framebuffer virtual aonde ele vai dispor da saída gráfica, desviando ela para SSH ou outros protocolos mas nosso foco será na parte Web dele. E para isso, requer algumas configurações.

4.1 Configuração

A maior parte das configurações reside nos parâmetros no momento da execução. O padrão é:

$ xpra start –html=on –bind-tcp=0.0.0.0:9876,auth=password:value=sua_senha –daemon=no –xvfb=”/usr/bin/Xvfb +extension Composite -screen 0 1360×768x24+32 -nolisten tcp -noreset” –pulseaudio=yes –encoding=h264 –notifications=no –bell=no :100 –start=libreoffice

É um belo comando. Ou seja:

Ele vai iniciar o Xpra, habilitar o serviço web e preparar o socket TCP na porta 9876, definir uma senha para o acesso Web, iniciar sem modo daemon, iniciar um framebuffer virtual customizado em 1360×768, com áudio ativo, encoding h264, sem notificações e sem “efeito sonoro” do próprio xpra, no display virtual 100 e aplicação que vai ser aberta é o LibreOffice.

Todos os campos destacados acima podem ser alterados conforme a necessidade.

Ao executar o exemplo acima, iniciamos um navegador de internet e colocamos o endereço http://localhost:9876 e temos uma tela pedindo senha:

E a tela principal após fazer login:

Observações:

  • Você pode executar aplicações com audio, abrir o Youtube por exemplo em um navegador dentro do navegador… E até rodar alguns games sob WINE ou Proton, que sejam mais leves!

  • Quando uma aplicação é aberta pelo xpra, ela “desaparece” do sistema local! Se tentar abrir novamente, por exemplo o LibreOffice, haverá uma segunda janela lá na tela virtual via web. Encerre o servidor Web para usar localmente.

6. Problemas Comuns

Caso apresente erros quanto a “module ‘PIL.Image’ has no attribute ‘ANTIALIAS'”, isso é um problema com o Python3.11. Para contornar, configure o PIP e instale a versão anterior do Pillow:

Debian-based:

$ sudo apt install python-pip

ArchLinux:

 $ sudo pacman -S python-pip

Na hora de instalar o Pillow, use o comando em sistemas baseados em Debian:

$ pip install Pillow==9.5.0

Se for ArchLinux precisa forçar (por sua conta e risco, mas aqui no EndeavourOS não deu nada demais!):

$ pip install Pillow==9.5.0 --break-system-packages

6.1 Desempenho

A latência é absolutamente sensível e vários fatores podem prejudicar a execução da aplicação se for pela rede.

  • Teste se a aplicação apresenta bom desempenho localhost! Algumas aplicações como o Blender são naturalmente mal otimizadas, este por ser uma interface essencialmente Python, e portanto vão ter delays na execução remota.
    Outros como o LibreOffice vão executar bem, enquanto que alguns como o GIMP rodarão mais ou menos.
    O Populous da GOG.com que testei acima executou bem; porém o GTA San Andreas executou com um péssimo frame rate.
  • EVITE conexões WiFi. Mesmo que seja 5 Ghz, dependendo da aplicação o bitrate será absurdo; em alguns testes batia os 30 mb/s!

  • Alguns problemas de latência estão no encoding, que pode ser alterado; e também em outros aspectos como a compressão da imagem antes de ser enviada – o que onera recursos da máquina servidora. – A documentação será sua amiga aqui por listar as opções disponíveis e como usá-las para refinar a experiência!

6.2 Dicas

  • Caso deseje iniciar várias aplicações pelo xpra, no mesmo computador, cada uma poderá ficar com seu acesso próprio. Lembre-se de mudar a porta, e também o Display! Assim o Linux vai gerar um novo servidor Xorg exclusivo para a nova aplicação aberta, de preferências números altos como :100, :101, etc.
  • Há meios de iniciar várias aplicações dentro do mesmo servidor xpra mas não abordei aqui neste tutorial, por requerer ajustes na interface gráfica, o que pode gerar complicações no uso local da máquina e prejudicar o desempenho localhost. É mais recomendado para servidores dedicados que não terão interações humanas.
  • Neste tutorial o foco foi abrir como Localhost, mas de forma prática é pouco usual. Uma vez aberto via Web localhost, você pode acessar a aplicação estando na mesma rede em outro aparelho, bastando escolher o IP da máquina que gerou a aplicação via xpra e colocar a porta na frente! Exemplo: http://192.168.0.1:9876

7. Conclusão

O conceito de ter aplicações Web está longe de ser novo e provavelmente é uma tendência que não deve cair em desuso tão cedo. Afinal os navegadores atualmente são verdadeiros “sistemas operacionais” – cof cof Chromebooks – tamanha praticidade que é ter uma aplicação Web. E aqui trouxe uma forma bem amigável de ter isso em casa com um bom software gratuito e livre que é o xpra!

#UrbanCompassPony

Deixe um comentário