Voltar às atualizações
New releaseAug 3, 2026

nmlinux v1.7.11

Toolkit de rede unificado para Linux — Python 3 + PySide6

Compartilhar

NMLinux · v1.7.11

Version Python License: GPL-2.0 Platform Languages Donate Bitcoin

Um kit de ferramentas de rede unificado para Linux e macOS — inspecione, conecte, diagnostique.

NMLinux é uma interface gráfica única e unificada que reúne 29 módulos de rede em uma janela: monitoramento de interfaces, Wi-Fi, DNS, terminal SSH, visualizador de firewall, mapa de topologia, traceroute e muito mais. Construído do zero em Python e PySide6 (Qt 6), com 8 idiomas de interface e nenhuma dependência externa além das ferramentas padrão do sistema.

[!NOTE] O NMLinux não está relacionado ao daemon do sistema Linux /usr/bin/NetworkManager (NetworkManager da Red Hat/GNOME). O NMLinux é um projeto independente, construído do zero em Python e PySide6.

Construído com Claude Code (Anthropic) e a contribuição de seu autor.


Processo de desenvolvimento

O NMLinux é construído com assistência de IA — especificamente Claude Code — e isso não está escondido em lugar nenhum deste repositório. Quase todo projeto de software sério hoje usa IA em algum lugar do seu fluxo de trabalho, diga isso ou não. Portanto, "a IA esteve envolvida?" não é a pergunta interessante. A pergunta interessante é: algo detecta quando a IA comete um erro?

Eis o que faz isso, se você preferir verificar em vez de confiar na minha palavra:

  • 162 testespytest tests/ -v. Lógica pura mais um punhado de testes reais de widgets Qt (menus, tabelas), sem mocks que escondam as partes interessantes.
  • docs/Decisions-Techniques.md — todas as decisões técnicas não óbvias, as alternativas rejeitadas e os bugs (incluindo os introduzidos por IA) encontrados e corrigidos, com a justificativa registrada.
  • docs/Architecture.md e docs/Carte-des-Modules.md — a estrutura real do código, mantida em sincronia com o que é entregue.
  • Uma verificação de consistência i18n executada antes de cada lançamento para detectar chaves de tradução ausentes nos 8 idiomas suportados.

Nada disso existe porque não se pode confiar na IA. Existe porque nada deveria ser lançado sem um processo que o verifique — inclusive código escrito à mão. Julgue o resultado e como ele é verificado, não a ferramenta que ajudou a escrevê-lo.

Encontrou um bug mesmo assim? Isso é útil, não vergonhoso — abra uma issue.


Comunidade

As discussões do GitHub estão abertas — compartilhe feedback, relate ideias, faça perguntas ou apenas diga olá. O autor tem mais de 30 anos em infraestrutura e operações, e criou esta ferramenta porque software bom, gratuito e simples também deveria existir para Linux.


Capturas de tela

Capturas de tela do Linux da v1.2.7 — capturas de tela do macOS da v1.3.5. O aplicativo agora tem 29 módulos e 8 idiomas de interface (FR/EN/ES/DE/IT/PT/JA/ZH).

Linux (KDE)

PainelTopologia
PainelTopologia
TracerouteWi-Fi
TracerouteWi-Fi

macOS

PainelTraceroute
Painel do macOSTraceroute do macOS

Histórico de alterações

v1.7.11 — 2026-08-03

  • Empacotamento Flatpak (KDE Linux): um manifesto de build local em packaging/flatpak/ tem como alvo o KDE Linux e outras distribuições somente Flatpak. As ferramentas CLI do host que o nmlinux invoca (nmcli, pkexec, mount.cifs, ssh, nmap, …) são integradas via shims flatpak-spawn --host no PATH, em vez de cada uma ser isolada separadamente; o PySide6 vem do io.qt.PySide.BaseApp do Flathub, em vez do wheel do PyPI. Não publicado no Flathub — um único pacote .flatpak é gerado com packaging/flatpak/build-bundle.sh e anexado a cada lançamento, da mesma forma que o AppImage já é.

v1.7.10 — 2026-08-03

  • Terminal SSH — correção: corrigida uma condição de corrida em que o PTY podia iniciar com o tamanho errado (padrão 24×80) se o tamanho real do widget do terminal ainda não fosse conhecido quando a sessão iniciava, descartando silenciosamente a solicitação de redimensionamento. Isso dessincronizava aplicativos remotos em tela cheia (por exemplo, Claude Code CLI, htop, vim) do tamanho real da janela, causando texto obsoleto/residual na parte inferior da tela que só era limpo conforme nova saída passava. Reportado pelo usuário; reproduzido com uma sessão interativa real.

v1.7.9 — 2026-08-02

  • Terminal SSH — copiar/colar: selecione texto com o mouse (clique e arraste, destacado), copie com Ctrl+Shift+C ou pelo menu do botão direito; cole com Ctrl+Shift+V (já existente). Copiar era anteriormente impossível — não havia seleção de texto alguma.
  • Terminal SSH — múltiplas sessões simultâneas: a página SSH agora abre cada conexão em sua própria aba, em vez de uma única sessão compartilhada. Reconectar a uma conexão salva — até a mesma duas vezes — costumava encerrar a sessão ativa sem abrir um substituto funcional; agora cada ação de conectar abre uma nova aba independente.

v1.7.8 — 2026-07-14

  • Teste de velocidade — nova aba LAN (iperf3): além do teste de velocidade de internet já existente, uma nova aba executa testes iperf3 somente cliente contra uma lista pública de servidores incluída (26 países) ou um servidor personalizado salvo (por exemplo, um servidor interno da organização). Suporta TCP/UDP, IPv4/IPv6/automático e direção reversa (download), com jitter/perda exibidos para testes UDP. Sugerido pela issue #6.
  • Nova dependência opcional: iperf3 — instale para habilitar a aba LAN; caso contrário, a aba mostra um aviso e permanece desabilitada.

v1.7.6 — 2026-07-05

  • Inventário de Ativos — atualização via botão direito: clique com o botão direito em uma ou mais linhas já escaneadas (seleção múltipla suportada) e escolha "Atualizar selecionados" para reescaneá-las no lugar, em vez de executar novamente uma varredura completa de rede.
  • Inventário de Ativos — feedback de falha de autenticação SSH: um login SSH rejeitado agora mostra "Falha na autenticação SSH" em vez de falhar silenciosamente, sem perder o hostname/SO de base detectados pelo Nmap — confirmado contra um NAS Synology real, onde o Auto Block do DSM rejeitou uma senha correta depois que outras configurações de credenciais foram tentadas primeiro.

v1.7.5 — 2026-07-04

  • Monitor de ping — diretório de alvos salvos: um novo painel à esquerda permite salvar alvos de ping (nome, host, intervalo) em uma lista persistente, para que os hosts monitorados sobrevivam a uma reinicialização do aplicativo em vez de precisarem ser digitados novamente. Um botão ★ em cada linha monitorada ativamente salva esse host no diretório a qualquer momento da sessão — sem necessidade de planejar com antecedência antes de o aplicativo fechar inesperadamente.
  • Monitor de ping — "Iniciar monitoramento": selecione um alvo salvo e comece a monitorá-lo com um clique, reutilizando o intervalo salvo.

v1.7.4 — 2026-07-04

  • Inventário de Ativos — corrigidos resultados de varredura inconsistentes: a verificação de atividade enviava um único ping com timeout de 1 segundo e sem repetição, o que podia descartar um dispositivo real sob a carga concorrente do próprio scanner (até 40 hosts sondados ao mesmo tempo) ou quando um host Wi-Fi ficava brevemente adormecido entre beacons — confirmado ao vivo contra uma sub-rede real que retornava contagens de dispositivos diferentes em execuções repetidas do mesmo intervalo. A verificação agora repete o ping antes de recorrer à sondagem de porta TCP.
  • Inventário de Ativos — novo botão "Atualizar vazios": após uma varredura, reescaneie apenas os IPs que não retornaram dados, em vez de todo o intervalo novamente; hosts recém-encontrados são mesclados aos resultados existentes.

v1.7.3 — 2026-07-03

  • SMB — montar compartilhamentos pelo menu do botão direito: clique com o botão direito em um compartilhamento na aba SMB e escolha Montar/Desmontar para montá-lo em um caminho local estável (~/mnt/<host>_<share>), utilizável pelo terminal e por qualquer outro aplicativo — não é uma visão de navegação temporária. Somente durante a sessão (sem persistência via fstab/systemd), credenciais reutilizadas dos campos existentes de usuário/senha. O Linux usa pkexec mount -t cifs com um arquivo de credenciais de permissões restritas (nunca exposto via ps); o macOS usa mount_smbfs diretamente. Tenta automaticamente novamente com um dialeto SMB mais antigo (vers=2.0) quando um servidor rejeita a negociação padrão (comum em NAS mais antigos) — ambas as tentativas ocorrem sob um único prompt de autenticação por meio de um processo auxiliar dedicado.
  • Nova dependência opcional: cifs-utils (Linux) para montagem SMB; integrado ao macOS.

v1.7.2 — 2026-07-03

  • Instalação no macOS — corrigidos dois bugs de bootstrap encontrados em um Mac limpo: bootstrap_macos.sh não força mais NONINTERACTIVE=1 no instalador do Homebrew, que abortava imediatamente em qualquer conta de administrador nova em vez de pedir a senha do sudo; o one-liner documentado agora baixa o script primeiro, em vez de canalizá-lo diretamente para bash, pois etapas interativas aninhadas (instalador do Xcode CLT, próprio prompt de sudo do Homebrew) podiam interferir no fluxo de entrada do script externo quando canalizado.
  • Menu universal de botão direito — SMB adicionado: SmbNfsPage era a única página alvo ausente do sistema de botão direito entre módulos lançado na v1.7.0; clicar com o botão direito em um host e escolher SMB agora preenche o campo do host e inicia a varredura imediatamente, em negrito no menu quando a porta 445 é detectada como aberta.
  • i18n — strings restantes do Painel traduzidas: o rótulo de latência do gateway, o título do cartão TLS Watchlist e sua linha de status ainda estavam codificados em francês; agora traduzidos nos 8 idiomas de interface.

v1.7.1 — 2026-07-02

  • macOS 26 (Tahoe) — correções de SSID Wi-Fi: mudou de system_profiler (retorna <redacted> sem os Serviços de Localização) para CoreWLAN como fonte de dados principal; o aplicativo agora solicita permissão de Serviços de Localização no primeiro início; a página Wi-Fi mostra todas as redes com nomes reais após a concessão.
  • macOS — Gerenciador de Conexões: o SSID conectado agora é lido via CoreWLAN, com system_profiler para o modo de segurança.
  • macOS — SMB: mensagem clara de "autenticação necessária" quando o NAS exige credenciais; corrigido aviso espúrio do smb.conf vindo do smbclient do Homebrew.
  • macOS — Corrigida possível falha ao sair após o primeiro diálogo de permissão dos Serviços de Localização.

v1.7.0 — 2026-07-02

  • Menu de contexto universal de botão direito em todas as tabelas que contêm IPs ou hostnames — navegue diretamente entre módulos sem copiar e colar: clique com o botão direito em qualquer host descoberto e escolha Ping, Escanear portas, Whois, DNS, Traceroute, MTR, SSH, RDP, VNC, Ver na Topologia ou Adicionar ao Inventário. Os itens de menu SSH/RDP/VNC aparecem em negrito quando a porta correspondente é detectada como aberta. Os rótulos são totalmente traduzidos nos 8 idiomas de interface.
  • Páginas de origem (emitem ações de botão direito): Scanner de IP, Nmap, Ping, Scanner de portas, Traceroute, MTR, Topologia (botão direito no nó)
  • Páginas de destino (recebem o host e pré-preenchem): Whois (set_target + consulta automática), DNS (set_target somente pré-preenchimento), Ping (set_target + início automático), Traceroute (set_target + início automático), MTR (set_target + início automático), Scanner de portas (set_target + foco), SSH / RDP / VNC (set_target abre formulário de nova conexão pré-preenchido), Topologia (load_hosts injeta nós da varredura Scanner de IP/Nmap sem reescanear — gateway detectado automaticamente, arestas desenhadas, nó de origem destacado em vermelho), Inventário de Ativos (prefill_hosts inicia varredura de credenciais diretamente nos hosts descobertos, pula a fase de descoberta ICMP)
  • Painel — gráfico de ping do gateway: sparkline de latência ao vivo atualizado a cada 2 segundos; com código de cores (verde <20 ms / laranja 20–100 ms / vermelho >100 ms / timeout vermelho)
  • Painel — resumo da TLS Watchlist: o cartão de status no Painel reflete automaticamente o estado da TLS Watchlist (OK / expirando / alerta) sem nova consulta
  • Painel — redimensionamento do mapa geográfico: o mapa-múndi agora se expande horizontalmente quando a janela é redimensionada

v1.6.4 — 2026-06-28

  • macOS: a barra de menu agora mostra NMLinux em vez de Python — causa raiz: após exec() para Python, NSBundle.mainBundle() resolve para o bundle Python.framework (CFBundleName = "Python") que o Qt lê durante a construção do QApplication; corrigido aplicando patch no infoDictionary() do bundle e renomeando os itens de menu nativos via AppKit antes de o menu do aplicativo ser criado.

v1.6.3 — 2026-06-28

  • macOS: primeira tentativa de corrigir a barra de menu usando NSProcessInfo.setProcessName_ via pyobjc-framework-Cocoa (substituída pela v1.6.4).

v1.6.2 — 2026-06-28

  • macOS: substituiu o script de inicialização bash por um stub C compilado em install_macos_app.sh para que o macOS associe corretamente o bundle .app ao processo em execução; adicionou setprogname e a substituição de sys.argv[0] como fallbacks.

v1.6.1 — 2026-06-25

  • Terminal SSH — corrigido eco remoto: teclas digitadas no terminal SSH embutido eram enviadas ao shell remoto, mas nunca ecoadas de volta (o teclado parecia "morto" após o login). O nmlinux forçava o eco do PTY local a ficar desligado, e o ssh propagava esse "sem eco" ao pty remoto por meio de seus modos de terminal (pty-req), fazendo com que o shell remoto parasse de ecoar a entrada. Reproduzido em uma VM Ubuntu 26.04 limpa (o OpenSSH recente aplica esses modos fielmente). O terminal agora mantém o PTY em modo normal e deixa o ssh gerenciar o eco, como em emuladores de terminal reais.

v1.6.0 — 2026-06-24

  • Inventário de Ativos — WinRM Windows (completo): detecção de host via sondagem de porta TCP quando o ICMP é bloqueado pelo Firewall do Windows; o PowerShell agora usa caminho absoluto completo + EncodedCommand (base64) para impedir que o cmd.exe interprete pipes |; cadeia completa de fallback sem direitos de administrador: SO via ver, CPU via registro, RAM via systeminfo, disco via wmicfsutil (sensível a locale, EN vírgula / FR espaço) → dir /-C.
  • Inventário de Ativos — SSH multi-credenciais: suporte a múltiplos conjuntos de credenciais SSH; disco do macOS corrigido (/System/Volumes/Data), fallback de CPU Apple Silicon (hw.model), Synology (/volume1), Unraid (/mnt/user).
  • Correções de bugs: erros do WinRM agora exibidos na tabela em vez de fallback silencioso; detecção de host WinRM/SNMP não é mais bloqueada pela presença de credenciais SSH; timeout do pywinrm corrigido.

v1.5.3 — 2026-06-24

  • macOS .app — detecção de ferramentas Homebrew: sshpass, nmap e snmpget instalados via Homebrew agora são encontrados e chamados usando seu caminho absoluto; bundles .app no macOS não herdam o PATH do Homebrew (/opt/homebrew/bin, /usr/local/bin), então ferramentas instaladas anteriormente eram silenciosamente ignoradas.
  • Caminho de atualização no macOS: executar git pull && bash packaging/install_macos_app.sh a partir da raiz do repositório agora é o método de atualização documentado; o script gerencia seu próprio venv (~/.local/share/nmlinux/venv) e não requer pip ou pipx a nível de sistema.

v1.5.2 — 2026-06-24

  • Inventário de Ativos — novo módulo (29º); escaneia um intervalo CIDR e coleta SO, CPU, RAM, disco e uptime de cada host via SSH, WinRM, SNMP ou Nmap; suporta múltiplos conjuntos de credenciais por protocolo (tenta cada um em ordem); política de retenção zero: credenciais nunca gravadas em disco, limpas da memória após a varredura; exporta resultados como JSON, CSV ou Markdown; mapa geo animado adicionado à seção de Geolocalização de IP do Painel.
  • Correções na coleta SSH: corrigido erro de aspas no comando awk do disco; free -h substituído por free compatível com BusyBox; o caminho de código do macOS agora usa sw_vers para o nome do SO, fallback hw.model para CPU Apple Silicon, /System/Volumes/Data para o volume de dados do usuário APFS; volumes Synology/Unraid (/volume1, /mnt/user) detectados antes da raiz; padrão de falso sucesso df | tail -1 || … corrigido com guardas test -d; saída do lsb_release removida das aspas circundantes; suporte a múltiplos conjuntos de credenciais SSH/WinRM (tenta cada um em ordem por host).

v1.5.0 — 2026-06-17

  • Servidor de Transferência de Arquivos — novo módulo para iniciar/parar um servidor TFTP ou HTTP leve diretamente do aplicativo; caso de uso clássico: backup e restauração de configurações de roteadores, switches ou impressoras; apenas um servidor ativo por vez (TFTP ou HTTP), porta e diretório raiz configuráveis, IPs locais exibidos como botões de copiar para a área de transferência; HTTP inclui listagem de diretório (navegável a partir de qualquer navegador na LAN), GET (download) e POST/PUT (upload); TFTP suporta GET e PUT (bidirecional), a porta 69 exige root — o aplicativo mostra um botão "Iniciar como root (pkexec)" em erro de permissão; tabela de log de transferência ao vivo (timestamp, nome do arquivo, IP do cliente, direção ↑/↓, tamanho); proteção contra travessia de diretórios; 8 idiomas de interface; nova dependência: tftpy.

v1.4.3 — 2026-06-14

  • Correções na TLS Watchlist: certificados autoassinados e não confiáveis agora são exibidos corretamente como "⚠ Certificado inválido / não confiável" (laranja) em vez de verde; a captura de exceções SSL foi ampliada para cobrir todas as subclasses de ssl.SSLError; as entradas agora mostram "… (verificando)" enquanto a verificação em segundo plano é executada e "— (inalcançável)" quando o host não pode ser alcançado.

v1.4.2 — 2026-06-14

  • TLS Watchlist — lista persistente de hostnames para monitorar a expiração de certificados; adicione hosts com + Watch (usa host/porta atuais) ou manualmente no painel; a verificação em segundo plano é executada automaticamente 2 segundos após o início; a entrada "TLS Inspector" na barra lateral mostra um ponto colorido: vermelho se algum certificado expirou, laranja se algum certificado expira em até 30 dias; botão de reverificação no painel; a lista mostra o status por entrada (✓ / ⚠ / EXPIRED) com código de cores.

v1.4.1 — 2026-06-14

  • macOS — Scanner de IP: corrigidas a consulta de endereço MAC, fabricante e interface no macOS; _arp_entry() agora chama arp -n <ip> no macOS e analisa seu formato de saída (? (IP) at AA:BB:CC on en0) em vez de ler /proc/net/arp (apenas Linux); todas as quatro colunas do scanner agora são preenchidas corretamente no macOS.
  • Ajuda do VNC: adicionada uma nota nos 8 idiomas esclarecendo que o Linux não tem servidor VNC por padrão e listando opções comuns para instalar (x11vnc, tigervnc-server, wayvnc).

v1.4.0 — 2026-06-14

  • macOS — Scanner de IP: substituído getent (apenas Linux) pelo socket.gethostbyaddr() do Python para resolução reversa de DNS multiplataforma; a consulta de hostname agora funciona nativamente no macOS sem nenhuma ferramenta extra.
  • macOS — Navegador SMB: mudou de smbclient (exige samba do Homebrew) para smbutil view (ferramenta integrada do macOS); a listagem de compartilhamentos SMB agora funciona no macOS sem nenhuma instalação.
  • macOS — Navegador NFS: showmount é integrado no macOS, mas não suporta --no-headers; a flag foi removida no macOS e a linha de cabeçalho é ignorada no parser; a listagem de exportações NFS agora funciona nativamente.
  • macOS — RDP: quando xfreerdp não é encontrado, usa como fallback o esquema de URL open rdp://; abre o Microsoft Remote Desktop (App Store) se instalado, com host, porta, usuário e domínio pré-preenchidos.
  • macOS — VNC: quando vncviewer não é encontrado, usa como fallback o esquema de URL open vnc://; abre o Compartilhamento de Tela do macOS (integrado, zero instalação necessária).

v1.3.9 — 2026-06-13

  • Encaminhamento de agente SSH — nova caixa de seleção "Agent forwarding" no formulário de conexão SSH; adiciona -A ao comando ssh; permite saltar entre servidores sem copiar sua chave privada (PC → A → B); exige um agente SSH ativo (SSH_AUTH_SOCK); ajuda contextual atualizada nos 8 idiomas.

v1.3.8 — 2026-06-13- Paleta de Comandos (Ctrl+P) — navegação instantânea por teclado para qualquer um dos 27 módulos; pesquisa difusa por nome e palavras-chave (por exemplo, "firewall", "tls", "ssh key", "scan"); setas para cima/baixo + Enter ou clique único para navegar; abre com Ctrl+P de qualquer lugar do aplicativo

  • Gerenciador de Exportação — exporta um instantâneo completo da rede (interfaces, rotas, resolvedores DNS) em Arquivo → Exportar Relatório de Rede… em JSON, Markdown, texto simples ou PDF (opcional: pip install reportlab)
  • Botões de exportação por módulo — botões Exportar adicionados às páginas Interfaces, DNS, Firewall, Conexões SSH e Gerenciador de Conexões; cada página exporta seus dados atuais no formato escolhido, com atualização em tempo real da extensão do nome do arquivo quando o filtro de formato é alterado

v1.3.6 — 2026-06-12

  • Topologia — ícones de dispositivos — cada nó agora exibe um ícone SVG Lucide correspondente ao tipo de dispositivo (roteador/wifi, computador/notebook, impressora, NAS/servidor, smartphone, switch de rede, Raspberry Pi) em vez de um círculo genérico; 5 novos ícones SVG incluídos (printer, server, smartphone, cpu, laptop)
  • Topologia — detecção mDNS — o tipo de dispositivo é detectado via avahi-browse (opcional, executa em paralelo com a varredura nmap); identifica impressoras (_ipp._tcp, PDL Printer), celulares e TVs Android (_googlecast._tcp, _androidtvremote2._tcp), Macs da Apple (am=Mac16,x modelo no TXT do AirPlay), dispositivos NAS (Synology relata model=Xserve), desktops KDE Connect; recorre à OUI do fornecedor MAC e heurísticas de hostname quando avahi não está disponível
  • Topologia — painel de detalhes mostra a classe de dispositivo detectada (Impressora, Smartphone, NAS…) em vez do rótulo genérico "Host"; i18n em todos os 8 idiomas

v1.3.5 — 2026-06-06

  • Compatibilidade com macOS — todos os 9 módulos de rede agora funcionam no macOS sem quebrar o comportamento no Linux; cada módulo detecta a plataforma na inicialização (_IS_MACOS) e ramifica para comandos nativos do macOS: route -n get default, ifconfig, scutil --dns, networksetup, system_profiler SPAirPortDataType, pfctl, netstat -ib; a elevação de privilégios usa osascript + with administrator privileges em vez de pkexec; a fonte monoespaçada usa Menlo em vez de Monospace
  • Módulos com caminhos duplos Linux/macOS: Painel, Interfaces, Wi-Fi, Topologia, Largura de Banda, Firewall (pf.conf + pfctl), Gerenciador de Conexões, Arquivo Hosts, MTR
  • Módulos inalterados (ferramentas idênticas em ambas as plataformas): DNS, Nmap Scan, SNMP, Whois

v1.3.2 — 2026-06-06

  • i18n estendido para 8 idiomas — adicionados Italiano, Português, 日本語 (japonês) e 中文 (chinês simplificado); toda a interface (todos os 27 módulos, ~720 chaves de tradução) agora está disponível em FR / EN / ES / DE / IT / PT / JA / ZH; um aviso de reinicialização aparece após alterar o idioma em Configurações
  • Ajuda contextual em 8 idiomas — o painel de selo ? (descrição, exemplos de uso e comandos CLI equivalentes) agora cobre todos os 8 idiomas para cada módulo; anteriormente, JA e ZH recorriam ao inglês
  • Correção de bug — dicas de navegação de SMB/NFS e Arquivo Hosts estavam sendo exibidas em francês independentemente do idioma selecionado; as chaves ausentes nav_hint_smb_nfs e nav_hint_hosts foram adicionadas a todos os 7 blocos de idiomas não franceses

v1.3.1 — 2026-06-05

  • Gerenciador de Chaves SSH — lista todos os pares de chaves em ~/.ssh/ (arquivo, tipo, bits, comentário, impressão digital SHA256); gera chaves Ed25519 ou RSA 4096 com frase secreta opcional (detecção de incompatibilidade, nome automático de arquivo por tipo); copia a chave pública para a área de transferência; implanta em um servidor remoto via ssh-copy-id em um terminal embutido com suporte a stdin para prompts de senha; exclui pares de chaves com confirmação; cria ~/.ssh/ automaticamente se estiver ausente; i18n: fr / en / es / de

v1.3.0 — 2026-06-03

  • Inspetor TLS / SSL — inspeciona o certificado de qualquer servidor: CN do assunto, SANs, emissor, datas de validade (codificadas por cores: verde / laranja < 30 dias / vermelho expirado), número de série, protocolo TLS, conjunto de cifras e cadeia de certificados (via openssl s_client); funciona para certificados válidos, expirados e autoassinados; mensagens de erro amigáveis para hosts inalcançáveis
  • Navegador SMB / NFS — lista compartilhamentos e exportações de qualquer servidor; aba SMB: smbclient -L com credenciais opcionais, mostra nome / tipo / comentário do compartilhamento; aba NFS: showmount -e, mostra o caminho da exportação e a lista de acesso; detecta ferramentas ausentes com instruções de instalação específicas por distribuição
  • Editor do Arquivo Hosts — visualiza e edita /etc/hosts; tabela com alternância ativar/desativar, adicionar/editar/excluir entradas via diálogo; filtrar por IP ou hostname; salva via pkexec cp (diálogo de autenticação polkit)
  • install.sh — novo script para Debian / Ubuntu / Linux Mint: cria um venv em ~/.local/share/nmlinux/venv, instala dependências do sistema via apt, cria lançador e entrada .desktop (corrige o erro PEP 668 externally-managed-environment)

v1.2.9 — 2026-05-30

  • VNC — novo módulo para gerenciar perfis de conexão VNC; grupos/subgrupos como SSH e RDP; inicia vncviewer (TigerVNC); compatível com macOS ARD (autenticação DH30 tratada nativamente pelo vncviewer); a senha nunca é armazenada; detecta vncviewer ausente com instruções de instalação específicas por distribuição
  • Sobre — Ferramentas e serviços — nova seção listando todas as ferramentas de terceiros e APIs das quais o aplicativo depende
  • i18n da barra lateral — todas as 23 dicas de navegação agora estão traduzidas para FR/EN/ES/DE (eram codificadas em francês); rótulos corrigidos: Topologia, Conexões, Sub-rede

v1.2.8 — 2026-05-30

  • Área de Trabalho Remota (RDP) — novo módulo para gerenciar perfis de conexão RDP do Windows; grupos/subgrupos como SSH; inicia xfreerdp como um processo externo; a senha é solicitada no momento da conexão e nunca é armazenada; campos: host, porta, usuário, domínio, resolução, tela cheia; detecta xfreerdp ausente com instruções de instalação específicas por distribuição (Arch / Debian / Fedora)

v1.2.7 — 2026-05-26

  • Ícones Lucide incluídos — 21 ícones SVG do Lucide (MIT) agora estão incluídos em assets/icons/; renderizados em tempo de execução via QSvgRenderer; coloridos #60a5fa; o aplicativo não requer mais nenhum tema de ícones do sistema (Breeze, Adwaita, Papirus…)

v1.2.6 — 2026-05-24

  • Compatibilidade GNOME / Adwaita — corrigidos os ícones em desktops não KDE: main.py agora detecta automaticamente o tema de ícones GTK via gsettings e o aplica ao Qt; cadeias de fallback estendidas para Wi-Fi, Traceroute, Teste de Velocidade, Interfaces, Scanner de Portas, Firewall, MTR; themed_icon() agora valida se um pixmap real existe antes de aceitar um ícone de tema
  • Compatibilidade NixOS / KDE — corrigidos todos os ícones no NixOS: Breeze 6.x inclui apenas ícones SVGZ; o wrapper Nix agora adiciona qt6.qtsvg a QT_PLUGIN_PATH para que o Qt possa renderizar ícones SVG; themed_icon() tenta os tamanhos 22/24/16/32/48 (o Breeze usa 22 px, não 24); o tema é forçado para breeze quando o conjunto de ícones incluído na Nix é detectado; também verifica /etc/xdg/kdeglobals para configuração KDE em todo o sistema

v1.2.5 — 2026-05-23

  • MTR — Meu Traceroute embutido: executa mtr --report, analisa a saída de texto, exibe uma tabela em tempo real com Perda %, RTT Última/Média/Melhor/Pior/Jitter por salto, codificado por cores conforme a gravidade da perda; modo contínuo; exportação CSV + TXT
  • Teste de Velocidade — teste de velocidade sem dependências via curl + Cloudflare (speed.cloudflare.com): download (25 MB), upload (10 MB), ping para 1.1.1.1; até 5 execuções persistidas em JSON; gráfico de linhas histórico (Download/Upload)
  • Visualizador de Firewall — visualizador somente leitura de conjunto de regras: analisa /etc/nftables.conf e /etc/iptables/*.rules sem root; conjunto de regras ao vivo via pkexec nft list ruleset; colunas: Tabela / Cadeia / Regra / Porta / Ação / Comentário; ações codificadas por cores; filtro ao vivo
  • Dicas na barra lateral — cada item de navegação agora mostra um selo ? sutil; passar o mouse exibe uma dica descrevendo o que o módulo faz; separador vertical adicionado entre a barra lateral e a área de conteúdo
  • i18n — todos os novos módulos traduzidos em francês, inglês e espanhol

v1.2.0 — 2026-05-22

  • Adaptação de tema — suporte completo a alternância claro/escuro em tempo de execução em todas as páginas; novo core/theme.py com is_dark(), color_ok(), color_err(); widgets de pintura personalizados (_Graph, _MapWidget) leem a paleta no momento da pintura; todas as cores Catppuccin Mocha codificadas foram substituídas por papéis semânticos da paleta Qt
  • Máscara de sub-rede — as páginas Painel, Interfaces e Conexões agora exibem a máscara de sub-rede em formato decimal pontilhado (por exemplo, 255.255.255.0) derivada do prefixo CIDR
  • Monitor de Largura de Banda — botão explícito Iniciar/Parar substitui o início automático não confiável ao carregar a página
  • Exportar CSV/TXT — as páginas Nmap e Traceroute agora oferecem botões Exportar CSV e Exportar TXT (aparecem após a conclusão da varredura/rastreamento)
  • i18n — novas chaves de tradução para todos os recursos acima (fr/en/es/de)

v1.1.1 — 2026-05-16

  • Terminal SSH — reescrita completa com pyte (emulador VT100/xterm) + renderizador QPainter; buffer de rolagem de 2000 linhas, cursor piscante, suporte a 256 cores
  • Traceroute Visual — mapa-múndi (Natural Earth 110m), geolocalização ao vivo por salto (ip-api.com), zoom/pan interativos, parser duplo (traceroute / fallback tracepath)
  • Monitor de Largura de Banda — throughput em tempo real por interface, gráfico deslizante de 60s, velocidades ao vivo, totais e picos da sessão
  • Wake on LAN — pacote mágico em Python puro (broadcast UDP), livro de hosts persistente (JSON)
  • Scanner de IP — resolução de hostname via getent/avahi/nmblookup; endereço MAC, fornecedor (IEEE OUI com 39K entradas), colunas de interface; exportação CSV/TXT atualizada
  • i18n — tradução completa fr/en/es/de para todas as novas páginas

v1.0.0 — 2026-05-14

Primeira versão pública — 13 módulos: Painel, Interfaces, Wi-Fi, Calculadora de Sub-rede, Consulta de DNS, Monitor de Ping, Scanner de IP, Scanner de Portas, Nmap, Whois, SNMP, SNTP/NTP, SSH.


Recursos

MóduloDescrição
PainelInformações da máquina local, gateway, IP público, geolocalização, resolvedores DNS
Gerenciador de ConexõesPerfis do NetworkManager via nmcli: listar, filtrar, conectar/desconectar/editar/excluir
InterfacesTabela de interfaces de rede com detalhes por interface (ip + nmcli)
Wi-FiRedes disponíveis, barras de sinal, segurança, rede conectada em destaque
Calculadora de Sub-redeRede/broadcast/intervalo de hosts a partir do CIDR, tabela de hosts com até 4096 entradas
Consulta de DNSConsulta baseada em dig para A, AAAA, MX, TXT, NS, CNAME, PTR, SOA, ANY
Monitor de PingPing contínuo para vários hosts, estatísticas de RTT, perda de pacotes %
Scanner de IPVarredura de ping por CIDR/intervalo, 50 threads, hostname (DNS/mDNS/NetBIOS), endereço MAC, fornecedor (OUI), interface, exportação CSV + TXT
Scanner de PortasVarredura TCP connect, 200 threads, predefinições de serviços, exportação CSV + TXT
Nmap7 modos de varredura, análise de saída XML, tabela Host/Porta/Protocolo/Estado/Serviço, exportação CSV + TXT
WhoisSaída whois bruta em fonte monoespaçada
SNMPsnmpwalk/snmpget, v1/v2c, 10 predefinições de OID, tabela de resultados
SNTP / NTPCliente UDP RFC 4330 em Python puro, offset/atraso/stratum/referência
SSHTerminal PTY embutido (pyte/VT100), conexões salvas (JSON), autenticação por chave, buffer de rolagem
Área de Trabalho RemotaPerfis de conexão RDP (grupos/subgrupos); inicia xfreerdp; a senha nunca é armazenada
VNCPerfis de conexão VNC (grupos/subgrupos); inicia vncviewer (TigerVNC); compatível com macOS ARD; a senha nunca é armazenada
Gerenciador de Chaves SSHLista pares de chaves em ~/.ssh/ (tipo, bits, impressão digital); gera Ed25519/RSA 4096; copia a chave pública; implanta no servidor via ssh-copy-id; exclui pares com confirmação
Inspetor TLSDetalhes do certificado: CN, SANs, emissor, validade + contagem regressiva de expiração, serial, protocolo, cifra, cadeia; Watchlist com monitor de expiração em segundo plano e ponto colorido na barra lateral
SMB / NFSLista compartilhamentos SMB (smbclient) e exportações NFS (showmount) de qualquer servidor ou NAS; credenciais opcionais para SMB
Arquivo HostsVisualiza/edita /etc/hosts: adicionar, excluir, alternar entradas; filtrar; salvar via pkexec
Traceroute VisualRota salto a salto em um mapa-múndi, geolocalização ao vivo (ip-api.com), zoom e pan, exportação CSV + TXT
MTRMeu Traceroute embutido: perda %, RTT Última/Média/Melhor/Pior/Jitter por salto, codificado por cores, exportação CSV + TXT
Visualizador de FirewallConjunto de regras nftables + iptables/ip6tables somente leitura (sem root); ao vivo via pkexec; filtrar por tabela/cadeia/ação
Teste de VelocidadeDownload/upload/ping via Cloudflare; nenhuma ferramenta externa além de curl; gráfico de histórico (últimas 5 execuções)
Largura de BandaThroughput em tempo real por interface: gráfico deslizante de 60s, velocidades ao vivo, totais da sessão, pico
Wake on LANPacote mágico em Python puro (broadcast UDP), livro de hosts persistente, nenhuma ferramenta externa necessária
Mapa de TopologiaAutodetecta dispositivos da LAN via nmap -sn; grafo interativo com nós arrastáveis, zoom/pan, painel de detalhes
ConfiguraçõesSeleção de idioma (FR / EN / ES / DE / IT / PT / JA / ZH), persistida; reinicialização necessária após a alteração
Paleta de ComandosSobreposição Ctrl+P: pesquisa difusa em todos os 29 módulos por nome ou palavra-chave
Transferência de ArquivosServidor TFTP ou HTTP sob demanda; porta e diretório raiz configuráveis; IPs locais como botões de cópia; tabela de log ao vivo (nome do arquivo, IP do cliente, direção ↑/↓, tamanho); listagem de diretório HTTP + GET/POST/PUT; TFTP GET + PUT; a porta 69 solicita pkexec
ExportarArquivo → Exportar Relatório de Rede (JSON/Markdown/Texto/PDF); exportação por módulo em Interfaces, DNS, Firewall, SSH, Conexões

Requisitos

Ferramentas do sistema

Linux — a maioria já está presente em uma instalação padrão:```bash

Arch / EndeavourOS

sudo pacman -S iproute2 networkmanager bind-tools nmap whois net-snmp iputils mtr curl

Debian / Ubuntu

sudo apt install iproute2 network-manager dnsutils nmap whois snmp mtr-tiny curl

Fedora

sudo dnf install iproute NetworkManager bind-utils nmap whois net-snmp-utils mtr curl

**macOS** — instale via [Homebrew](https://brew.sh):```bash
# Required
brew install nmap mtr curl

# Optional — enable additional modules
brew install whois          # WHOIS page
brew install net-snmp       # SNMP page (snmpwalk / snmpget)
brew install samba          # SMB scan with credentials (smbclient)

O macOS inclui ping, dig, traceroute, netstat, ifconfig, smbutil e route nativamente. networksetup e scutil são ferramentas integradas do macOS, sem necessidade de instalação. A consulta do fornecedor OUI no IP Scanner também não requer instalação — a base de dados manuf do Wireshark é transferida automaticamente em segundo plano na primeira utilização e guardada em cache localmente.

Ferramentas opcionais

FerramentaRecursoLinuxmacOS
xfreerdp / xfreerdp3Área de Trabalho Remota (RDP)Arch: freerdp · Ubuntu ≤24.04: freerdp2-x11 · Ubuntu 26.04+: freerdp3-x11opcional — recorre ao Microsoft Remote Desktop (open rdp://)
vncviewerVNCArch: tigervnc · Debian: tigervnc-vieweropcional — recorre à Partilha de Ecrã do macOS (open vnc://, integrado)
nm-connection-editorEditar ligações a partir do Gestor de LigaçõesArch: nm-connection-editor— (abre as Preferências do Sistema em vez disso)
tracerouteAlternativa ao Traceroute (o tracepath é utilizado por predefinição)Arch: tracerouteintegrado
mount.cifs (cifs-utils)Montar partilhas SMB a partir do menu de contextoArch/Debian: cifs-utilsintegrado (mount_smbfs)
iperf3Teste de Velocidade — separador LANArch: iperf3 · Debian/Ubuntu: iperf3brew install iperf3

Python

  • Python 3.11+
  • PySide6 6.6+
  • ptyprocess 0.7+
  • pyte 0.8+ (pip install pyte ou sudo pacman -S python-pyte)
  • tftpy 0.8+ (pip install tftpy ou sudo pacman -S python-tftpy) — módulo de Transferência de Ficheiros

Instalação

Opção 1 — Arch Linux / Manjaro / EndeavourOS (AUR)```bash

yay -S nmlinux

Todas as dependências (PySide6, ptyprocess, pyte, nmcli, …) são tratadas automaticamente.

### Opção 2 — NixOS / Nix

Execute diretamente com o `flake.nix` incluído — não é necessária instalação em todo o sistema:```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
nix run .

Ou entre em um shell de desenvolvimento:```bash nix develop python3 -m nmlinux.main

Todas as dependências Python (PySide6, ptyprocess, pyte, tftpy) e ferramentas de sistema (nmcli, nmap, freerdp, vncviewer, mtr, avahi-browse…) são fornecidas automaticamente pelo wrapper Nix.

### Opção 4 — AppImage (qualquer distribuição Linux, sem instalação)

Baixe `NMLinux-x.y.z-x86_64.AppImage` do [último lançamento](https://github.com/thongor77/nmlinux/releases/latest):```bash
chmod +x NMLinux-*.AppImage
./NMLinux-*.AppImage

Nenhuma instalação necessária — Python, Qt e todos os módulos NMLinux estão empacotados em um único arquivo.
Funciona em qualquer Linux x86_64 com glibc 2.17+ (Ubuntu 16.04+, Fedora 26+, Arch, Mint, etc.).

As ferramentas de rede do sistema (nmap, whois, mtr…) não estão incluídas — instale-as pelo seu gerenciador de pacotes para que os módulos correspondentes funcionem. Veja Requisitos abaixo.

Opção 5 — macOS

Forma mais rápida — bootstrap de uma linha. Funciona em um Mac completamente limpo: instala Xcode Command Line Tools, Homebrew, todas as ferramentas do sistema e, em seguida, o próprio NMLinux. Seguro para executar novamente (atualiza em vez de reinstalar):```bash curl -fsSL https://raw.githubusercontent.com/thongor77/nmlinux/main/packaging/bootstrap_macos.sh -o /tmp/bootstrap_macos.sh && bash /tmp/bootstrap_macos.sh

Instale em todo o sistema (`/Applications`) em vez de `~/Applications`:```bash
curl -fsSL https://raw.githubusercontent.com/thongor77/nmlinux/main/packaging/bootstrap_macos.sh -o /tmp/bootstrap_macos.sh && bash /tmp/bootstrap_macos.sh --system

Não é necessária conta de desenvolvedor Apple nem notarização paga — é o mesmo install_macos_app.sh de código aberto nos bastidores, apenas baixado e executado para você. O script é bash simples e legível; fique à vontade para abrir /tmp/bootstrap_macos.sh e lê-lo antes de executar, ou confira-o diretamente aqui: packaging/bootstrap_macos.sh.

Baixar e depois executar (em vez de canalizar diretamente para bash) é intencional: em um Mac recém-configurado, o script aciona etapas interativas aninhadas (instalador das Ferramentas de Linha de Comando do Xcode, o próprio instalador do Homebrew pedindo sua senha de sudo) que leem do terminal — canalizar o script diretamente para bash pode fazer essas solicitações aninhadas interferirem no fluxo de entrada do próprio script e interrompê-lo no meio do caminho. Executar a partir de um arquivo baixado evita isso completamente.

Instalação manual — se você preferir executar cada etapa você mesmo, ou já tem o Homebrew:```bash

1. Install Homebrew system tools (see Requirements above)

brew install nmap mtr curl

2. Clone and install

git clone https://github.com/thongor77/nmlinux.git cd nmlinux bash packaging/install_macos_app.sh

Para atualizar: `git pull && bash packaging/install_macos_app.sh`  
Para desinstalar: `bash packaging/uninstall_macos.sh`  
Para instalar em todo o sistema (`/Applications`): `bash packaging/install_macos_app.sh --system`

O script instala os seguintes pacotes Python no venv automaticamente:
- `PySide6`, `ptyprocess`, `pyte`, `tftpy`
- `pyobjc-framework-Cocoa` — barra de menus do macOS, diálogos nativos
- `pyobjc-framework-CoreWLAN` — digitalização de SSID Wi-Fi
- `pyobjc-framework-CoreLocation` — permissão dos Serviços de Localização para nomes de Wi-Fi

**Wi-Fi no macOS 26 (Tahoe):** na primeira execução, o macOS solicitará a permissão dos Serviços de Localização — conceda-a para exibir os nomes das redes Wi-Fi. A permissão aparece em *Ajustes do Sistema › Privacidade e Segurança › Serviços de Localização*.

> A maioria dos módulos funciona no macOS sem modificação. O RDP usa `open rdp://` como fallback (Microsoft Remote Desktop), o VNC usa `open vnc://` como fallback (Compartilhamento de Tela integrado). O Connection Manager tem funcionalidade reduzida no macOS (`nmcli` não disponível).

### Opção 6 — Debian / Ubuntu / Linux Mint (script de instalação)

> **Nota para usuários de Linux Mint / Ubuntu:** o `pip install` é bloqueado em todo o sistema no Python 3.12+ (PEP 668 — `externally-managed-environment`). Use o script de instalação fornecido — ele cria um ambiente virtual automaticamente e instala uma entrada `.desktop`.```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
bash install.sh

O script irá:

  • Instalar dependências do sistema via apt (libgl1, python3-venv, freerdp, tigervnc…)
  • Criar um ambiente virtual em ~/.local/share/nmlinux/venv
  • Instalar o NMLinux e suas dependências Python dentro do venv
  • Criar um lançador em ~/.local/bin/nmlinux
  • Adicionar uma entrada .desktop para que o NMLinux apareça no menu de aplicativos

Após a instalação, execute nmlinux a partir de um terminal ou inicie-o pelo menu de aplicativos.

Opção 7 — Wheel (todas as distros / macOS)

Baixe o .whl da última versão e instale-o:```bash

Arch / Fedora / macOS — no pip restrictions

pip install nmlinux-1.5.3-py3-none-any.whl

Debian / Ubuntu / Mint — install system libs first, then use pipx

Ubuntu ≤24.04:

sudo apt install libgl1 libglib2.0-0 libdbus-1-3 freerdp2-x11 tigervnc-viewer

Ubuntu 26.04+:

sudo apt install libgl1 libglib2.0-0 libdbus-1-3 freerdp3-x11 tigervnc-viewer

pipx install nmlinux-1.5.3-py3-none-any.whl

> **Nota para Ubuntu 26.04+:** o `pipx` requer que as bibliotecas do sistema (libGL, etc.) sejam instaladas primeiro — os comandos acima dão conta delas. Se `pipx install` falhar devido a um erro de compilação do PySide6, use a **Opção 4** (script de instalação) em vez disso, que lida com tudo automaticamente.

### Opção 8 — A partir do código-fonte (Arch / Fedora / macOS)```bash
git clone https://github.com/thongor77/nmlinux.git
cd nmlinux
pip install PySide6 ptyprocess pyte tftpy
python3 -m nmlinux.main

Opção 9 — Entrada de área de trabalho (KDE / GNOME / etc.)

Copie o arquivo .desktop para fazer o NMLinux aparecer no seu lançador de aplicativos:```bash cp data/nmlinux.desktop ~/.local/share/applications/ update-desktop-database ~/.local/share/applications/

Em seguida, edite o caminho `Exec=` no arquivo, se necessário.

---

## Execução```bash
./nmlinux.sh
# or, after pip install:
nmlinux
# or directly:
python3 -m nmlinux.main

Estrutura do projeto```

nmlinux/ core/ i18n.py — Translation system (8 languages: fr/en/es/de/it/pt/ja/zh), tr(key) function icons.py — themed_icon(): 21 bundled Lucide SVG icons via QSvgRenderer theme.py — is_dark(), color_ok(), color_err(): runtime light/dark helpers settings.py — AppSettings dataclass, JSON persistence ssh.py — SshConnection dataclass, SshStore rdp.py — RdpConnection dataclass, RdpStore, find_xfreerdp() vnc.py — VncConnection dataclass, VncStore, find_vncviewer() terminal.py — SshWorker (QThread) + PTY via ptyprocess, emits raw bytes tls_watchlist.py — TlsWatchlist: background cert expiry checker, JSON persistence http_server.py — ThreadedHTTPServer: directory listing, GET/PUT/POST, port binding tftp_helper.py — TftpServerThread: tftpy wrapper, configurable port and root help_content.py — Module contextual help strings (all 8 languages) cli_bar.py — CliBar singleton: pedagogical CLI equivalent bar export_dialog.py — open_export_dialog(): QFileDialog with live extension update command_palette.py — CommandPalette (Ctrl+P): fuzzy search across 29 modules export_manager.py — collect_snapshot(), to_json/text/markdown/pdf, save_export() pages/ about.py — About page (credits, tools & services) bandwidth.py — Bandwidth Monitor: per-interface 60s graph, live stats connection_manager.py — Connection Manager: nmcli profiles, connect/disconnect/edit dashboard.py — Dashboard dns.py — DNS Lookup file_transfer.py — File Transfer: TFTP + HTTP server, live log, pkexec for port 69 firewall.py — Firewall Viewer: nftables + iptables parser, live via pkexec help_page.py — Contextual help overlay hosts.py — Hosts File: view/edit /etc/hosts, toggle entries, save via pkexec interfaces.py — Network Interfaces ip_scanner.py — IP Scanner mtr.py — MTR: mtr --report parser, live hop stats table, export nmap_scan.py — Nmap ping.py — Ping Monitor port_scanner.py — Port Scanner rdp.py — Remote Desktop: RDP profiles, launches xfreerdp settings.py — Settings page smb_nfs.py — SMB/NFS Browser: smbclient + showmount snmp.py — SNMP sntp.py — SNTP / NTP speedtest.py — Speed Test: curl + Cloudflare, history graph ssh.py — SSH page (connection manager + terminal) ssh_keys.py — SSH Key Manager: list/generate/deploy/delete key pairs subnet.py — Subnet Calculator terminal_view.py — TerminalView: pyte VT100 emulator + QPainter renderer tls.py — TLS Inspector + TLS Watchlist: cert details, background expiry monitor topology.py — Topology Map: nmap -sn, interactive graph, zoom/pan traceroute.py — Visual Traceroute: world map, geolocation, zoom/pan vnc.py — VNC: connection profiles, launches vncviewer whois.py — Whois wifi.py — Wi-Fi wol.py — Wake on LAN: magic packet, persistent host book assets/ icons/ — 21 bundled Lucide SVG icons (#60a5fa) world.geojson — Natural Earth 110m countries (map background) window.py — MainWindow (sidebar + QStackedWidget) main.py — Entry point

---

## Compatibilidade com ambientes de desktop

Desde a v1.2.7, o NMLinux usa 21 ícones SVG [Lucide](https://lucide.dev) incluídos, renderizados em tempo de execução via `QSvgRenderer`. O aplicativo não depende mais de nenhum tema de ícones do sistema (Breeze, Adwaita, Papirus…) e é exibido corretamente no KDE, GNOME, XFCE e outros. O estilo Qt se adapta automaticamente ao ambiente de desktop em execução.

---

## Limitações

### Linux
Suporte completo — todos os 29 módulos disponíveis.

### macOS
A maioria dos módulos funciona de imediato, pois dependem de ferramentas disponíveis em ambas as plataformas (`ssh`, `dig`, `ping`, `curl`, `nmap`, `openssl`…).

**Nove módulos exigem adaptação explícita para macOS** (caminhos de código duplos que detectam a plataforma na inicialização): Dashboard, Interfaces, Wi-Fi, Topology, Bandwidth, Firewall, Connection Manager, Hosts File, MTR — esses usam comandos nativos do macOS (`ifconfig`, `networksetup`, `scutil`, `pfctl`, `system_profiler`…) em vez dos equivalentes no Linux.

**Módulos com suporte limitado ou sem suporte no macOS:**

| Módulo | Status | Notas |
|--------|--------|-------|
| **RDP** | ✓ macOS | Recorre a `open rdp://` → Microsoft Remote Desktop (App Store) |
| **VNC** | ✓ macOS | Recorre a `open vnc://` → Screen Sharing (integrado, sem instalação) |
| **IP Scanner** | ✓ macOS | Usa `socket.gethostbyaddr()` — Python nativo, sem ferramenta adicional |
| **SMB** | ✓ macOS | Usa `smbutil view` (integrado) em vez de `smbclient` |
| **NFS** | ✓ macOS | `showmount` integrado; análise de cabeçalho adaptada |
| **Connection Manager** | ⚠ Reduzido | Editar/excluir exige `nmcli` (somente Linux); a exibição em lista funciona |

### Geral
- Sem integração com root/polkit — ferramentas que exigem privilégios elevados (alguns modos do Nmap, sockets brutos) devem ser executadas com `sudo`; no macOS, a elevação de privilégios usa `osascript` + `administrator privileges`
- O encaminhamento do agente SSH requer um agente SSH ativo (`SSH_AUTH_SOCK`); no macOS, isso é tratado automaticamente pelo sistema, sem necessidade de configuração manual

---

## Créditos e agradecimentos

- **[Anthropic](https://www.anthropic.com)** — Claude Code, o assistente de IA usado para desenvolver este projeto
- O autor, pela visão, testes e direção

---

## Apoie o projeto

Se o NMLinux é útil para você, considere apoiar seu desenvolvimento:

- **PayPal** — [Doe via PayPal](https://www.paypal.com/donate/?business=JFQGY7NU3ANCN&no_recurring=0&item_name=Every+donation%2C+no+matter+how+small%2C+helps+me+keep+this+project+alive.+Thank+you%21%0A&currency_code=EUR)
- **Bitcoin** — `bc1qspe0tky7552qas72wgn8w9dswr0dxlv24w39t6ztjqk3nz6kc5tqv753a4`

---

## Licença

GPL-2.0 — consulte [LICENSE](https://github.com/thongor77/nmlinux/blob/HEAD/LICENSE).

Este projeto é uma reimplementação independente. Nenhum código do NETworkManager foi usado ou traduzido.

Categorias