Sobre o projeto

mTerm é um emulador de terminal macOS nativo escrito em Swift, usando AppKit para a janela e um renderizador Metal para a visualização do terminal. Ele se posiciona como uma alternativa ao iTerm2 para desenvolvedores que desejam uma sensação nativa do Mac, renderização de classe GPU e um conjunto de recursos deliberadamente pequeno em vez de uma grande superfície de preferências. Evita explicitamente recursos de IA, contas na nuvem e repensar o shell. Renderização e emulação de terminal A visualização do terminal é renderizada em Metal com um atlas de glifos ajustado ao pixel, destinado a manter o texto nítido em todos os tamanhos sem desfoque de filtragem da GPU. Negrito e itálico usam as faces reais da fonte em vez de inclinações sintetizadas, com larguras de avanço idênticas para que as colunas permaneçam alinhadas. Atributos de sublinhado, esmaecido e inverso são suportados, incluindo os códigos que os desativam. O redimensionamento reflui o buffer: linhas quebradas se reúnem e se dividem novamente na nova largura, e uma leitura do tamanho da grade aparece enquanto se arrasta. A compatibilidade tem como alvo xterm-256color para ferramentas como vim, neovim, htop, fzf, less e paginadores do git. Suporta cor verdadeira de 24 bits, alt-screen, regiões de rolagem (DECSTBM), desenho de linhas DEC e saída sincronizada (DEC 2026). O relatório de mouse cobre SGR (1006) e codificações legadas para clique, arrasto, movimento e roda, com ⇧ mantido para selecionar em vez disso. Colagem entre colchetes, eventos de foco e relatórios de posição de dispositivo/cursor estão incluídos. Caracteres do Leste Asiático e de largura total ocupam duas colunas, e marcas combinantes se compõem no glifo anterior. Abas, navegação e o hub de comandos A janela AppKit tem uma barra lateral com abas que pode ser arrastada para reordenar, suporta tela cheia e restaura sessões (abas, seus diretórios e perfis). ⌘K abre um hub sobre cada aba em cada janela e cada comando da barra de menus, classificados em uma lista. As linhas de aba mostram índice, estado de execução, título, diretório e processo em primeiro plano. Uma consulta vazia lista abas recentes com a anterior selecionada, então ⌘K ⏎ volta; ⌘⌫ fecha a aba destacada. As ações são pesquisáveis por palavras com as quais os usuários chegariam, como "cls" para Clear Screen ou "blurry" para stroke weight, o que abre Configurações com o anel de foco nesse controle. Integração de shell e tmux A integração de shell para zsh, bash e fish usa OSC 133 para adicionar marcadores de prompt na calha, codificados por cores conforme o status de saída, e salto de prompt com ⌘↑ / ⌘↓. Não modifica arquivos rc do usuário; em vez disso, cada shell recebe um wrapper (ZDOTDIR para zsh, --rcfile para bash, um trecho vendor_conf.d para fish) que carrega primeiro os arquivos de inicialização reais. O modo de controle tmux é suportado: executar tmux -CC transforma cada janela do tmux em uma aba real do mTerm, com ⌘T e ⌘W mapeando para criação e fechamento de janelas do tmux, e renomeações e trocas de janela seguindo o tmux nos dois sentidos. Uma aba mostra o painel ativo de sua janela. Uma sessão por vez; desconectar encerra as abas. Links, gatilhos e perfis ⌘-clique abre links: URLs vão para o navegador e caminhos de arquivo são revelados no Finder. Os links não são distinguidos visualmente até que o ponteiro esteja sobre eles com ⌘ pressionado, quando o link assume a cor de destaque do tema e um sublinhado e o cursor se torna uma mão. Apenas caminhos que existem no disco são oferecidos, e uma URL que quebra entre linhas é tratada como um único endereço. ⌘-clique também pode copiar texto separado por cor, como código embutido ou um rascunho citado, com uma confirmação mostrando o texto e a contagem de caracteres. Os gatilhos combinam uma regex com uma ação: destacar, recolorir, sublinhar, abrir como URL, revelar no Finder ou executar um comando com $1 como a correspondência. Eles são editados em Configurações com um testador embutido e armazenados em triggers.json. As regras do usuário são testadas antes de duas regras internas para URLs e caminhos de arquivo, que podem ser desativadas mas não editadas. Os perfis definem um comando nomeado, diretório inicial, ambiente e tema fixado opcional, armazenados um arquivo JSON cada em profiles/ para que possam ser compartilhados ou versionados. Eles abrem via File > New Tab with Profile ou ⌘⌥1–9, e ⌘T usa o perfil padrão. Configurações, temas e configuração A janela de Configurações tem painéis Appearance, Profiles, Triggers, General e Notifications, com um campo de busca que encontra controles por nome ou por descrição coloquial. Os temas incluem Tomorrow Night, Solarized (claro e escuro), Nord, Dracula, Gruvbox Dark e os próprios temas claro e escuro do mTerm, com importação de arquivos .itermcolors do iTerm2 e alternância automática claro/escuro. Família de fonte, tamanho, peso do traço e espaçamento entre linhas (1,0×–2,0×, padrão 1,15×) são ajustáveis ao vivo. A profundidade do histórico de rolagem é configurável de 1k a 100k linhas com o custo por aba exibido. As notificações do macOS cobrem eventos de atenção do terminal (bell, OSC 9 / OSC 777). A confirmação de fechamento para processos em primeiro plano em execução e a confirmação de Clear Screen podem ser alternadas. A configuração fica em ~/Library/Application Support/mTerm/ em settings.json, state.json, profiles/*.json e triggers.json; não há arquivo de configuração separado na v1. Instalação e status A instalação é via Homebrew cask (brew install --cask d0x2a/tap/mterm), um DMG universal assinado e notarizado, ou compilando a partir do código-fonte com macOS 14+ e Xcode 15+ (ou ferramentas de linha de comando Swift 5.10+) usando swift run -c release mTerm. O projeto está na v1.3.1 e afirma que todos os itens em sua definição de pronto do SPEC.md foram entregues. Relata que as metas de memória do histórico de rolagem são atingidas com folga, enquanto a taxa de transferência fica aquém da figura aspiracional da especificação; tanto as medições quanto o harness estão documentados em docs/BENCHMARKS.md. A licença é MIT, copyright Dox2A Labs LLC.