Sobre el proyecto
mTerm es un emulador de terminal nativo para macOS escrito en Swift, que usa AppKit para la ventana y un renderizador Metal para la vista de terminal. Se posiciona como una alternativa a iTerm2 para desarrolladores que buscan una sensación nativa de Mac, renderizado de clase GPU y un conjunto de funciones deliberadamente reducido en lugar de una gran superficie de preferencias. Evita explícitamente funciones de IA, cuentas en la nube y repensar el shell.
Renderizado y emulación de terminal
La vista de terminal se renderiza con Metal mediante un atlas de glifos ajustado al píxel, pensado para mantener el texto nítido en todos los tamaños sin el desenfoque del filtrado por GPU. La negrita y la cursiva usan las caras reales de la fuente en lugar de inclinaciones sintetizadas, con anchos de avance idénticos para que las columnas permanezcan alineadas. Se admiten los atributos de subrayado, tenue e inverso, incluidos los códigos que los desactivan. Al redimensionar, el búfer se reajusta: las líneas ajustadas se vuelven a unir y se dividen de nuevo según el nuevo ancho, y aparece una lectura del tamaño de la cuadrícula mientras se arrastra.
La compatibilidad apunta a xterm-256color para herramientas como vim, neovim, htop, fzf, less y paginadores de git. Admite color verdadero de 24 bits, pantalla alternativa, regiones de desplazamiento (DECSTBM), dibujo de líneas DEC y salida sincronizada (DEC 2026). El reporte del ratón cubre SGR (1006) y codificaciones heredadas para clic, arrastre, movimiento y rueda, con ⇧ mantenida para seleccionar en su lugar. Se incluyen pegado entre corchetes, eventos de foco e informes de posición de dispositivo/cursor. Los caracteres de Asia Oriental y de ancho completo ocupan dos columnas, y las marcas combinantes se componen en el glifo precedente.
Pestañas, navegación y el centro de comandos
La ventana de AppKit tiene una barra lateral con pestañas que se puede arrastrar para reordenar, admite pantalla completa y restaura sesiones (pestañas, sus directorios y perfiles). ⌘K abre un centro sobre cada pestaña de cada ventana y cada comando de la barra de menús, clasificados en una sola lista. Las filas de pestañas muestran índice, estado de ejecución, título, directorio y proceso en primer plano. Una consulta vacía lista las pestañas recientes con la anterior seleccionada, así que ⌘K ⏎ vuelve atrás; ⌘⌫ cierra la pestaña resaltada. Las acciones se pueden buscar por palabras con las que los usuarios llegarían, como "cls" para Clear Screen o "blurry" para el grosor del trazo, lo que abre Ajustes con el anillo de foco en ese control.
Integración de shell y tmux
La integración de shell para zsh, bash y fish usa OSC 133 para añadir marcadores de prompt en el margen, codificados por color según el estado de salida, y salto entre prompts con ⌘↑ / ⌘↓. No modifica los archivos rc del usuario; en su lugar, cada shell recibe un envoltorio (ZDOTDIR para zsh, --rcfile para bash, un fragmento en vendor_conf.d para fish) que primero carga los archivos de inicio reales. Se admite el modo de control de tmux: ejecutar tmux -CC convierte cada ventana de tmux en una pestaña real de mTerm, con ⌘T y ⌘W asignados a la creación y el cierre de ventanas de tmux, y los renombrados y cambios de ventana siguen a tmux en ambos sentidos. Una pestaña muestra el panel activo de su ventana. Una sesión a la vez; desacoplarse termina las pestañas.
Enlaces, disparadores y perfiles
⌘-clic abre enlaces: las URL van al navegador y las rutas de archivo se muestran en Finder. Los enlaces no se distinguen visualmente hasta que el puntero está sobre ellos con ⌘ mantenida, momento en que el enlace toma el color de acento del tema y un subrayado, y el cursor se convierte en una mano. Solo se ofrecen las rutas que existen en el disco, y una URL que se ajusta entre filas se trata como una sola dirección. ⌘-clic también puede copiar texto diferenciado por color, como código en línea o un borrador entre comillas, con una confirmación que muestra el texto y el recuento de caracteres.
Los disparadores combinan una expresión regular con una acción: resaltar, recolorear, subrayar, abrir como URL, mostrar en Finder o ejecutar un comando con $1 como coincidencia. Se editan en Ajustes con un probador en línea y se almacenan en triggers.json. Las reglas del usuario se prueban antes que dos reglas integradas para URL y rutas de archivo, que se pueden desactivar pero no editar. Los perfiles definen un comando con nombre, directorio inicial, entorno y un tema fijado opcional, almacenados en un archivo JSON cada uno bajo profiles/ para que se puedan compartir o confirmar. Se abren mediante File > New Tab with Profile o ⌘⌥1–9, y ⌘T usa el perfil predeterminado.
Ajustes, temas y configuración
La ventana de Ajustes tiene paneles de Appearance, Profiles, Triggers, General y Notifications, con un campo de búsqueda que encuentra controles por nombre o por descripción coloquial. Los temas incluyen Tomorrow Night, Solarized (claro y oscuro), Nord, Dracula, Gruvbox Dark y los propios claro y oscuro de mTerm, con importación de archivos .itermcolors de iTerm2 y cambio automático claro/oscuro. La familia tipográfica, el tamaño, el grosor del trazo y el interlineado (1,0×–2,0×, predeterminado 1,15×) se ajustan en vivo. La profundidad del historial es configurable de 1k a 100k líneas con el costo por pestaña mostrado. Las notificaciones de macOS cubren eventos de atención del terminal (campana, OSC 9 / OSC 777). La confirmación de cierre para procesos en primer plano en ejecución y la confirmación de Clear Screen se pueden activar o desactivar. La configuración vive en ~/Library/Application Support/mTerm/ en settings.json, state.json, profiles/*.json y triggers.json; no hay un archivo de configuración separado en la v1.
Instalación y estado
La instalación es mediante Homebrew cask (brew install --cask d0x2a/tap/mterm), un DMG universal firmado y notarizado, o compilando desde el código fuente con macOS 14+ y Xcode 15+ (o herramientas de línea de comandos de Swift 5.10+) usando swift run -c release mTerm. El proyecto está en la v1.3.1 y afirma que todos los elementos de su definición de terminado en SPEC.md se han entregado. Informa que los objetivos de memoria del historial se cumplen con margen de sobra, mientras que el rendimiento queda por debajo de la cifra aspiracional de la especificación; tanto las mediciones como el arnés están documentados en docs/BENCHMARKS.md. La licencia es MIT, copyright Dox2A Labs LLC.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.