GNU/Linux >> Tutoriales Linux >  >> Linux

Una introducción al emulador de terminal DomTerm para Linux

DomTerm es un emulador de terminal moderno que utiliza un motor de navegador como un "juego de herramientas GUI". Esto habilita algunas funciones interesantes, como gráficos y enlaces incrustables, texto enriquecido HTML y comandos plegables (mostrar/ocultar). Por lo demás, se ve y se siente como un emulador de terminal independiente con todas las funciones, con excelente compatibilidad con xterm (incluido el manejo del mouse y color de 24 bits) y "cromo" apropiado (menús). Además, hay soporte integrado para la gestión de sesiones y subventanas (como en tmux y GNU screen ), edición de entrada básica (como en readline ), y paginación (como en less ).

A continuación veremos más en estas características. Asumiremos que tiene domterm instalado (salte al final de este artículo si necesita obtener y compilar DomTerm). Primero, sin embargo, aquí hay una descripción general rápida de la tecnología.

Frontend frente a backend

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

La mayor parte de DomTerm está escrito en JavaScript y se ejecuta en un motor de navegador. Puede ser un navegador web de escritorio, como Chrome o Firefox (ver imagen 3), o puede ser un navegador integrado. El uso de un navegador web general funciona bien, pero la experiencia del usuario no es tan agradable (ya que los menús están diseñados para la navegación general, no para un emulador de terminal) y el modelo de seguridad interfiere, por lo que es mejor usar un navegador integrado. .

Actualmente se admiten los siguientes:

  • qtdomterm , que utiliza el kit de herramientas Qt y QtWebEngine
  • Un Electron incrustación (ver imagen 1)
  • atom-domterm ejecuta DomTerm como un paquete en el editor de texto Atom (que también se basa en Electron) y se integra con el sistema de panel Atom (ver imagen 2)
  • Un contenedor para WebEngine de JavaFX , que es útil para código escrito en Java (ver imagen 4)
  • Anteriormente, la interfaz preferida usaba Firefox-XUL, pero desde entonces Mozilla ha eliminado XUL

Actualmente, la interfaz de Electron es probablemente la mejor opción, seguida de cerca por la interfaz de Qt. Si usa Atom, atom-domterm funciona bastante bien.

El servidor backend está escrito en C. Administra pseudo terminales (PTY) y sesiones. También es un servidor HTTP que proporciona JavaScript y otros archivos a la interfaz. El domterm El comando inicia trabajos de terminal y realiza otras solicitudes. Si no hay ningún servidor en ejecución, domterm se demoniza a sí mismo. La comunicación entre el backend y el servidor normalmente se realiza mediante WebSockets (con libwebsockets en el servidor). Sin embargo, la incrustación de JavaFX no utiliza WebSockets ni el servidor DomTerm; en cambio, las aplicaciones Java se comunican directamente mediante el puente Java–JavaScript.

Un sólido emulador de terminal compatible con xterm

DomTerm se ve y se siente como un emulador de terminal moderno. Maneja eventos de mouse, color de 24 bits, Unicode, caracteres de ancho doble (CJK) y métodos de entrada. DomTerm hace un muy buen trabajo en el conjunto de pruebas vttest.

Las características inusuales incluyen:

Mostrar/ocultar botones ("plegables"): Los pequeños triángulos (vistos en la imagen 2 arriba) son botones que ocultan/muestran la salida correspondiente. Para crear los botones, simplemente agregue ciertas secuencias de escape en el texto de solicitud.

Compatibilidad con clics del mouse para readline y editores de entrada similares: Si hace clic en el área de entrada (amarilla), DomTerm enviará la secuencia correcta de pulsaciones de teclas de flecha a la aplicación. (Esto está habilitado por secuencias de escape en el indicador; también puede forzarlo usando Alt+Clic).

Dale estilo al terminal usando CSS: Esto generalmente se hace en ~/.domterm/settings.ini , que se recarga automáticamente cuando se guarda. Por ejemplo, en la imagen 2, se establecieron colores de fondo específicos del terminal.

Una mejor consola REPL

Un emulador de terminal clásico funciona en cuadrículas rectangulares de celdas de caracteres. Esto funciona para un REPL (command shell), pero no es lo ideal. Estas son algunas funciones de DomTerm útiles para REPL que normalmente no se encuentran en los emuladores de terminal:

Un comando puede "imprimir" una imagen, un gráfico, una fórmula matemática o un conjunto de enlaces en los que se puede hacer clic: Una aplicación puede enviar una secuencia de escape que contenga casi cualquier HTML. (El código HTML se borra para eliminar JavaScript y otras funciones peligrosas). 

La imagen 3 muestra un fragmento de un gnuplot sesión. Gnuplot (2.1 o posterior) admite domterm como un tipo de terminal. La salida gráfica se convierte en una imagen SVG, que luego se imprime en el terminal. La publicación de mi blog Gnuplot display on DomTerm proporciona más información al respecto.

El lenguaje Kawa tiene una biblioteca para crear y transformar valores de imágenes geométricas. Si imprime un valor de imagen de este tipo en un terminal DomTerm, la imagen se convierte a SVG y se incrusta en la salida.

Texto enriquecido en salida: Los mensajes de ayuda son más legibles y se ven mejor con estilo HTML. El panel inferior de la imagen 1 muestra la salida de domterm help . (La salida es texto sin formato si no se ejecuta bajo DomTerm). Tenga en cuenta el PAUSED mensaje del buscapersonas integrado.

Los mensajes de error pueden incluir enlaces en los que se puede hacer clic: DomTerm reconoce la sintaxis filename:line:column: y lo convierte en un enlace que abre el archivo y la línea en un editor de texto configurable. (Esto funciona para nombres de archivos relativos si usa PROMPT_COMMAND o similar a los directorios de pistas).

Un compilador puede detectar que se está ejecutando bajo DomTerm y emitir directamente enlaces de archivos en una secuencia de escape. Esto es más sólido que depender de la coincidencia de patrones de DomTerm, ya que maneja espacios y otros caracteres especiales, y no depende del seguimiento de directorios. En la imagen 4, puede ver los mensajes de error del compilador Kawa. Al pasar el cursor sobre la posición del archivo, se subraya y el file: La URL se muestra en atom-domterm área de mensajes (parte inferior de la ventana). (Cuando no se usa atom-domterm , dichos mensajes se muestran en un cuadro superpuesto, como se ve para PAUSED mensaje en la imagen 1.)

La acción al hacer clic en un enlace es configurable. La acción predeterminada para un archivo file: enlace con un #position sufijo es abrir el archivo en un editor de texto.

Representación interna estructurada: Todo lo siguiente está representado en la estructura del nodo interno:Comandos, avisos, líneas de entrada, salida normal y de error, pestañas y preservación de la estructura si "Guarda como HTML". El archivo HTML es compatible con XML, por lo que puede usar herramientas XML para buscar o transformar la salida. El comando domterm view-saved abre un archivo HTML guardado de una manera que permite el plegado de comandos (los botones mostrar/ocultar están activos) y redistribuir el tamaño de la ventana.

Impresión bonita al estilo Lisp incorporada: Puede incluir directivas de impresión bonita (por ejemplo, agrupación) en la salida de modo que los saltos de línea se vuelvan a calcular al cambiar el tamaño de la ventana. Vea mi artículo Impresión bonita dinámica en DomTerm para una discusión más profunda.

Edición de línea integrada básica con historial (como GNU readline ):Esto utiliza el editor incorporado del navegador, por lo que tiene un excelente manejo del mouse y la selección. Puede cambiar entre el modo de caracteres normal (la mayoría de los caracteres escritos se envían directamente al proceso); o modo de línea (los caracteres regulares se insertan mientras que los caracteres de control causan acciones de edición, con Enter enviando la línea editada al proceso). El modo predeterminado es automático, donde DomTerm cambia entre el modo de caracteres y el modo de línea dependiendo de si el PTY está en sin procesar o canónico. modo.

Un localizador integrado (como un less simplificado ):los métodos abreviados de teclado controlarán el desplazamiento. En el "modo de paginación", la salida se detiene después de cada nueva pantalla (o una sola línea, si avanza línea por línea). El modo de paginación es discreto e inteligente con respecto a la entrada del usuario, por lo que puede (si lo desea) ejecutarlo sin que interfiera con los programas interactivos.

Multiplexación y sesiones

Fichas y mosaicos: No solo puede crear múltiples pestañas de terminal, sino que también puede colocarlas en mosaico. Puede usar el mouse o un atajo de teclado para moverse entre paneles y pestañas, así como para crear otros nuevos. Se pueden reorganizar y cambiar de tamaño con el ratón. Esto se implementa utilizando la biblioteca JavaScript GoldenLayout. La imagen 1 muestra una ventana con dos paneles. La de arriba tiene dos pestañas, una con Midnight Commander; el panel inferior muestra domterm help salida como HTML. Sin embargo, en Atom, en su lugar, usamos sus mosaicos y pestañas incorporados que se pueden arrastrar; puedes ver esto en la imagen 2.

Separar y volver a unir sesiones: DomTerm admite el arreglo de sesiones, similar a tmux y GNU screen . Incluso puede adjuntar varias ventanas o paneles a la misma sesión. Esto admite el uso compartido de sesiones de múltiples usuarios y conexiones remotas. (Por seguridad, todas las sesiones del mismo servidor deben poder leer un socket de dominio Unix y un archivo local que contenga una clave aleatoria. Esta restricción se eliminará cuando tengamos una historia de acceso remoto buena y segura).

El domterm comando también es como tmux o GNU screen en el que tiene múltiples opciones para controlar o iniciar un servidor que administra una o más sesiones. La principal diferencia es que, si aún no se está ejecutando bajo DomTerm, el domterm El comando crea una nueva ventana de nivel superior, en lugar de ejecutarse en la terminal existente.

El domterm El comando tiene varios subcomandos, similares a tmux o git . Algunos subcomandos crean ventanas o sesiones. Otros (como "imprimir" una imagen) solo funcionan dentro de una sesión existente de DomTerm.

El comando domterm browse abre una ventana o panel para navegar por una URL específica, como cuando se navega por la documentación.

Obtener e instalar DomTerm

DomTerm está disponible en su repositorio de GitHub. Actualmente, no hay paquetes precompilados, pero hay instrucciones detalladas. Todos los requisitos previos están disponibles en Fedora 27, lo que lo hace especialmente fácil de construir.


Linux
  1. Una guía de la terminal de Linux para principiantes

  2. Copiar archivos en la terminal de Linux

  3. Cambiar el nombre de un archivo en la terminal de Linux

  4. Mover archivos en la terminal de Linux

  5. 8 consejos para la línea de comandos de Linux

Introducción al sistema de archivos de Linux

Una introducción rápida al sistema de archivos de Linux para usuarios de Windows.

Agregar un emulador de terminal adicional en Linux

Los 8 mejores emuladores de terminal para Linux [en 2021]

Cuatro navegadores web para la línea de comandos de Linux

Las 30 mejores consolas emuladoras de juegos para sistema Linux