Skip to content

Releases: rafaelmaciels/Nexa

Nexa v0.1.1 — Correção Definitiva do Cursor, Drift e Suporte Multiplataforma

Choose a tag to compare

@rafaelmaciels rafaelmaciels released this 11 Sep 04:05

🚀 Nexa v0.1.1 — Correção Definitiva do Cursor, Drift e Suporte Multiplataforma

Esta versão introduz uma reformulação arquitetural profunda no subsistema de captura e injeção de periféricos, eliminando em sua causa raiz os problemas de deslocamento involuntário do cursor, congelamento da aplicação e invisibilidade do ponteiro no Linux.


🐛 Correções Críticas Implementadas

  1. Eliminação do Drift para a Direita (+1919px):
    • Substituição do tipo de evento ambíguo por MouseMoveAbsolute e MouseMoveRelative.
    • Coordenadas absolutas de tela geradas durante o uso local nunca mais são acidentalmente reinterpretadas como deltas relativos ao cruzar a borda.
  2. Sincronização Atômica de Recenteamento (Warp Centering):
    • Implementada a barreira atômica WARP_PENDING no hook de baixo nível do Windows (WH_MOUSE_LL).
    • O salto artificial da borda até o centro da tela (dx = +959) e qualquer movimento espúrio na transição foram completamente extintos.
  3. Visibilidade e Renderização do Cursor no Linux (/dev/uinput):
    • O driver virtual de entrada no Linux agora manipula o evento de entrada na tela com zeramento de borda e relatórios de sincronização imediatos (SYN_REPORT).
    • Garante que compositores Wayland (Gala no elementary OS 8.1, Mutter no GNOME) e X11 atribuam foco de superfície ao ponteiro e renderizem o sprite do cursor visivelmente no instante em que ele entra no monitor.
  4. Clamping Estrito e Retorno Fluido (Fim da Dependência do ESC):
    • Coordenadas virtuais agora são estritamente limitadas pelas dimensões da tela de destino.
    • Puxar o mouse para a esquerda na tela remota devolve o controle ao Windows instantaneamente no primeiro movimento natural, sem travamentos e sem necessidade de intervenção via ESC.
  5. Per-Monitor V2 DPI Awareness:
    • Suporte nativo ao contexto de DPI V2 do Windows, garantindo precisão 1:1 de pixel mesmo em monitores 2K/4K ou com escala de 125%/150%.

💻 Tutorial de Instalação e Execução no Windows (11 / 10)

Opção 1: Execução Portátil Rápida

  1. Baixe o arquivo nexa-windows-x64.zip anexado a esta release.
  2. Extraia o conteúdo para uma pasta de sua preferência (ex: C:\Nexa\).
  3. Abra o prompt de comando ou PowerShell na pasta extraída e execute:
    • Como Servidor (Transmissor - PC com mouse/teclado principal):
      .\nexa-daemon.exe --server
    • Como Cliente (Receptor - PC secundário):
      .\nexa-daemon.exe --client <IP-DO-SERVIDOR>:25800

Opção 2: Inicialização Automática com o Windows

  1. Na pasta extraída, clique com o botão direito em install-autostart.bat e selecione "Executar como Administrador".
  2. O Nexa será registrado no Agendador de Tarefas do Windows e iniciará silenciosamente em segundo plano a cada logon.

🐧 Tutorial de Instalação e Execução no Linux (elementary OS 8.1 / Ubuntu / Debian / Fedora)

1. Configurar Permissões do /dev/uinput (Sem necessidade de root contínuo)

No Linux, o Nexa utiliza o subsistema nativo do kernel (/dev/uinput) para emular o teclado e mouse sem exigir hacks de acessibilidade.

Execute no terminal:

# Adiciona seu usuário ao grupo 'input'
sudo usermod -aG input $USER

# Cria a regra udev para conceder acesso ao /dev/uinput
echo 'KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess", OPTIONS+="static_node=uinput", MODE="0666"' | sudo tee /etc/udev/rules.d/99-nexa-uinput.rules

# Recarrega as regras de hardware
sudo udevadm control --reload-rules
sudo udevadm trigger

(Reinicie a sessão do usuário ou o computador para aplicar as permissões do grupo).

2. Compilar e Executar no Linux

Com o Rust instalado (curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh):

# Clone o repositório
git clone https://github.com/rafaelmaciels/Nexa.git
cd Nexa

# Compile o binário otimizado
cargo build --release --bin nexa-daemon

# Execute no modo Cliente (Receptor):
./target/release/nexa-daemon --client <IP-DO-WINDOWS>:25800

⚙️ Conectando os Dispositivos com Segurança

  1. Ao iniciar a conexão entre os dois computadores, um código SAS PIN de 6 dígitos será exibido no terminal em ambos os lados.
  2. Verifique se o código é idêntico nas duas telas para confirmar que a conexão está protegida contra ataques man-in-the-middle (MITM) via criptografia Curve25519 e ChaCha20-Poly1305.
  3. Pronto! Mova o mouse até a borda direita da tela do Windows para controlar o Linux. Mova para a esquerda para retornar instantaneamente ao Windows.

Nexa v0.1.0

Choose a tag to compare

@github-actions github-actions released this 10 Sep 20:06

🚀 Nexa v0.1.0 — Atualização de Identidade Visual e Estabilidade

✨ Novidades & Identidade Visual

  • Identidade Visual Oficial: Inclusão de todos os 11 ativos da marca oficial Nexa em �ssets/brand/, com fundo transparente, proporções preservadas e margens matematicamente equilibradas.
  • Novos Ícones Multi-Resolução: Ícones do software de 16x16 px até 1024x1024 px, favicon .ico e .ico do Windows com mipmaps completos.
  • Variantes Oficiais de Logo: Versões para tema escuro, tema claro e monocromático em alta definição (994x308 px).

🐛 Correções Críticas (Mouse e Teclado)

  • Eliminação do Travamento ao Conectar / Transicionar:
    • Implementado warp centering dinâmico em segundo plano durante a captura remota, impedindo que o cursor físico do Windows colida com as quinas da tela ou trave o pipeline de entrada.
    • Correção do cálculo de limites de tela em ambientes com múltiplos monitores e coordenadas de origem negativas/offset.
    • Adicionada tolerância de borda instantânea (2px) para transições fluídas sem atraso.
    • Atalhos de Emergência: Pressione [ Esc ] ou [ Scroll Lock ] a qualquer momento para quebrar a captura e devolver o controle imediato ao desktop local.

📦 Pacotes de Distribuição

exa-windows-x64.zip: Executável Windows atualizado com as correções de estabilidade e script de autostart.

exa_0.1.0_amd64.deb: Pacote para Linux (elementary OS 8.1 / Ubuntu / Debian).