Saltar al contenido principal
Termi, saved commands and a grid of terminals

Termi - Aplicación de Terminal de Código Abierto para macOS y Linux

Una aplicación de terminal de código abierto para macOS y Linux, publicada por Webanion bajo la licencia MIT: comandos guardados que abren hasta cuatro terminales lado a lado en una pestaña, en una disposición que Termi recuerda, y que pueden arrancar con la aplicación; dividir, reabrir, una paleta de comandos, una hoja de atajos, una guía integrada y las cifras de CPU, memoria y red en la barra lateral. Electron, React, TypeScript, xterm.js y node-pty, compilado con electron-vite y probado con Vitest, con un servidor MCP para que un asistente gestione los comandos guardados. Código fuente en github.com/webanion/termi.

ElectronReact.jsTypeScriptxterm.jsnode-ptyelectron-viteVitest
Md Moniruzzaman Image
Jawad Ahbab Turna

Md Moniruzzaman, Jawad Ahbab

La historia completa

Un comando guardado, cuatro terminales, la disposición recordada y toda la cuadrícula de vuelta al arrancar.

Las mismas ocho ventanas cada mañana

Un desarrollador en un proyecto arranca los mismos procesos cada día de trabajo: un servidor de desarrollo, un observador de pruebas, un shell para git, otro para lo que surja. Una aplicación de terminal los abre de uno en uno, cada uno en la carpeta correcta, luego las ventanas se ordenan a mano, y tras un reinicio toda la rutina vuelve a empezar. Los comandos nunca cambian. Los minutos que se van en volver a escribirlos tampoco.

Termi es una aplicación de terminal de código abierto para macOS y Linux, publicada por Webanion bajo la licencia MIT. Un comando guardado reúne hasta cuatro terminales, la carpeta en la que corren y la disposición en la que se colocan, los abre todos en una pestaña con un clic y puede arrancarlos en cuanto Termi se abre. El resto de la aplicación no se interpone en el camino del shell: dividir, reabrir, una paleta de comandos, una hoja de atajos, una guía integrada y las cifras de CPU, memoria y red de la máquina al pie de la barra lateral.

Un comando guardado, cuatro terminales

El comando guardado llamado Termi abre los cuatro terminales del proyecto en una pestaña: las pruebas unitarias en modo observación, el registro de git, las comprobaciones de tipos y de lint, y un shell normal, todos en la carpeta del proyecto. Cada terminal muestra un título en su cabecera en lugar del comando en bruto, las pestañas en ejecución quedan arriba en la barra lateral con sus atajos, y los comandos guardados debajo, con un rayo en los que arrancan al iniciar.

Brand colour backdrop
The Termi window: a saved command running the unit tests, the git log, the type and lint checks and a shell in a grid of four, the sidebar with the running tabs and saved commands, and CPU, memory and network at its foot

Una disposición que Termi recuerda

Una pestaña con dos, tres o cuatro terminales puede ser una cuadrícula, lado a lado, apilada, grande a la izquierda o grande arriba. La disposición se elige en el diálogo del comando guardado o desde el control a la derecha de la cabecera, y Termi la conserva para ese comando, así que la pestaña vuelve exactamente como se dejó. El diálogo contiene todo lo demás que el comando necesita: un nombre, hasta cuatro comandos con títulos opcionales, la carpeta y si arranca cuando Termi se abre. La línea entre dos terminales se arrastra para redimensionarlos, y un doble clic vuelve a igualarlos.

Brand colour backdrop
The edit dialog of a saved command: four commands with their titles, the layout picker with Grid chosen, the folder and Start when Termi opens
The same tab in the large-on-the-left layout: the tests wide on the left, the git log, the checks and the shell stacked on the right

Dividir, reabrir y un ojo en la máquina

Cualquier pestaña se divide en hasta cuatro terminales desde la cabecera o el teclado, y el nuevo shell arranca en la carpeta de la pestaña; aquí el servidor de desarrollo del sitio del producto y una comprobación de tipos comparten una pestaña. Cierra un terminal de un comando guardado y aparece Reopen en la cabecera, con la lista de lo cerrado y devolviéndolo a su sitio, mientras la barra lateral marca 3 of 4. El pie lee CPU, memoria, descarga y subida cada 1,5 segundos.

A split tab: the product site dev server on the left and a typecheck in the shell that split added on the right
The grid tab with one terminal closed: Reopen in the header lists the closed shell with Reopen all, and the sidebar counts 3 of 4

Todo desde el teclado

Una paleta de comandos encuentra cualquier acción o terminal en ejecución por su nombre y muestra sus teclas al lado, y una hoja de atajos lista todos los atajos en una página. Las teclas difieren según el sistema a propósito: en macOS la tecla Command hace el trabajo, y en Linux un Ctrl simple con una letra siempre llega al shell, así que Ctrl+C sigue interrumpiendo y Ctrl+B sigue siendo el prefijo de tmux, mientras que los atajos propios de Termi usan Ctrl+Shift con una letra, Alt con un número para las pestañas, y Ctrl+Page Up y Page Down para moverse entre ellas. Un comando guardado también se ejecuta desde el teclado: escribe parte de su nombre y pulsa Enter, y si ya está en marcha Termi va a su pestaña.

Brand colour backdrop
The keyboard shortcut sheet over the running app: every action with its Linux keys in two columns
The command palette: a search field and the actions by name, New Terminal, Split Terminal, New Saved Command and the rest, each with its keys

Ayuda que viene con la aplicación

Una guía de cinco páginas se abre en el primer arranque y de nuevo desde el menú Help, una página por cada parte de la aplicación: terminales y pestañas, comandos guardados, terminales divididos, copiar y las estadísticas, y el servidor MCP. Help, Report an Issue abre un informe de error con la versión de Termi, el sistema y el shell ya rellenados, para que la persona lo lea y lo envíe. Termi no envía nada por sí mismo: sin telemetría, sin analítica, sin comprobación de actualizaciones.

Brand colour backdrop
The built-in guide on its second page, Saved commands, over the running app: how to save one, pick its layout, run it, and reopen its terminals

Una página para las descargas

termi.webanion.com reúne las descargas, las funciones, las disposiciones y los atajos en una página, y ofrece primero la compilación para el sistema del visitante: un dmg para Mac con Apple silicon e Intel, un deb para Debian y Ubuntu, y un AppImage para otras distribuciones de Linux, cada versión con un archivo SHA256SUMS para comprobarla. Las versiones las produce un flujo de trabajo de GitHub Actions, nunca a mano: abre un pull request con el cambio de versión y un changelog escrito a partir de los commits, y al fusionarlo se compilan los paquetes de macOS y Linux, se etiqueta la versión y se publica la release con sus contribuidores.

The whole product site in its dark theme: the hero, features, layouts, help, shortcuts, MCP, security, downloads and open source sections
The download section of the site: the macOS builds for Apple silicon and Intel, the deb and the AppImage for Linux, each release with its checksums

Código abierto, de Webanion

Termi fue iniciado por Jawad Ahbab, y más tarde Webanion lo refactorizó y lo publicó como producto de código abierto bajo la licencia MIT. El trabajo de publicación de Webanion le dio la compilación con electron-vite, las comprobaciones de TypeScript, ESLint y Prettier, las pruebas unitarias con Vitest, pruebas de integración contra shells reales, una prueba de humo de la aplicación compilada en Linux y macOS en CI para cada pull request, y el flujo de trabajo que compila y publica cada versión.

Bajo la ventana, Electron aloja una página React aislada en un sandbox que llega a los shells solo a través de un contrato IPC verificado, xterm.js dibuja los terminales y node-pty los ejecuta, y la configuración vive en un único archivo JSON con número de versión y migraciones, así que una compilación antigua nunca destruye la configuración de una más nueva. Un servidor MCP viene en la misma compilación, así que un asistente como Claude Code puede listar, añadir y editar los comandos guardados, con la advertencia que da la guía: un comando guardado se ejecuta con un clic o al arrancar, así que esas dos herramientas deben quedar bajo aprobación manual. El código fuente, las incidencias y las good first issues están en github.com/webanion/termi.

También te puede gustar

Keyboard Tracker Logo

Keyboard Tracker - Gráficos e Informes de Actividad en el Escritorio

Una app de escritorio discreta para Linux, Windows y macOS que cuenta el uso del teclado y el ratón, lo representa en gráficos y exporta informes, creada para Ja Turna en cinco semanas. Cuenta las pulsaciones sin registrar lo que nadie escribe, muestra gráficos de un día o de toda la historia y sigue fluida con meses de datos, descarga cualquier tabla como un PDF que un responsable puede compartir y guarda todo su historial en un solo archivo para un equipo nuevo. Electron, React, TypeScript y Redux desde una sola base de código.

Md Moniruzzaman Image

Md Moniruzzaman

sep 07, 2021

Jawad Ahbab Turna
Read the Md Moniruzzaman blog

El blog son notas de campo desde producción: decisiones de arquitectura, sistemas de AI que sobrevivieron al contacto con usuarios reales e infraestructura que se paga sola. Escrito desde el trabajo, no sobre él.