OpenSSH, X11Forwarding y Wayland

Digamos que hay tres maneras de levantar acceder a la interfaz gráfica de un Linux remoto:

red pipe with red ropes

Photo by JJ Ying on Unsplash

  • Accediendo a todo el escritorio
  • Accediendo a una aplicación en particular
  • Conectándose a un administrador de login remoto

Una de las maneras habituales hasta hace relativamente pocos años era abrir aplicaciones gráficas de manera individual usando ssh usando la funcionlidad llamada X11Forwarding.

¿Qué es X11 Forwarding?

La mayoría estará de acuerdo con lo poco aconsejable que es usar Xorg en un servidor. Una alternativa menos riesgosa es instalar un programa cliente de X. En ese caso podemos usar el redireccionamiento X11 de ssh. De esta manera los datos viajan cifrados por la red y además, establecerá la variable DISPLAY en la máquina en la cual estamos usando el cliente ssh. Una de las cosas más ventajosas que tiene el redireccionamiento X es que host remoto no necesita un servidor Xorg real. El programa xauth en el host remoto simula que hay un servidor local ante sus programas clientes pero redireccionando la imagen en la pantalla del cliente ssh. Esto tiene un costado problemático: estamos abriendo un canal desde el servidor ssh al cliente ssh. Por eso es muy importante segurizar el servidor para minimizar los riesgos. El protocolo X es muy antiguo y como tal era muy laxo en cuando a la seguridad, de este modo imponía pocas restricciones en el acceso por red. Durante el paso de los años el Xorg se ha esforzado por reducir esos inconvenientes. De hecho cuando una aplicación remota se abre por ssh X la considera un cliente no confiable, impidiendo el acceso a recursos de clientes confiables.

El Problema

El X Window System o X11 nació en el año 1987, y en los comienzos de Linux se usaba XFree86, una implementación libre (aunque con una licencia considerada problemática). Pero en 2004 nació Xorg como un fork de XFree86 y desde ese momento reemplazó en general a su antecesor en el reinado de las interfaces gráficas de Linux. Sin embargo, algunas distribuciones en la actualidad ofrecen de manera predeterminada Wayland en lugar de Xorg. Kristian Høgsberg un desarrollador de Xorg y de gráficos del kernel Linux creó Wayland en 2008. El propósito de Wayland es proveer una alternativa que sea más fácil para desarrollar y mantener que Xorg. Aquí tenemos que recordar que es un compositor: se trata de un software que utiliza buffers de memoria para que la imagen tenga mejor calidad y de paso poder proporcionar ciertos efecto. Wayland es un protocolo para que un compositor pueda comunicarse con programas clientes y además una implementación de dicho protocolo. De esta manera, se dejan las funcionalidades esenciales para que las ejerzan los clientes.

Es así como llegamos a que Wayland tampoco tiene como propósito ofrecer el renderizado de aplicaciones remotas, es decir, no existe de manera predeterminada algo como WaylandForwarding. Los desarrolladores de Wayland dicen que podrías en cambio:

  • Usar un servidor de renderizado sobre Wayland con soluciones ya existentes ( vnc, rdp, Xorg) o desarrollar uno nuevo.
  • Usar y/o desarrollar un protocolo de renderizado remoto en un compositor de wayland.
  • Usar y/o desarrollar un compositor remoto aislado o una parte de un compositor de escritorio

GNOME está trabajando con el renderizado de aplicaciones remotas en Wayland y KDE aparentemente también con en su proyecto Plasma.

Una tubería como camino

Waypipe programa desarrollado por M. Stoeckl para eñ Google Summer of Code de 2019: es un proxy para clientes de Wayland. Lo interesante es que puede usar ssh para hacer un redireccionamiento de una manera muy sencilla:

waypipe ssh usuario@servidorssh

waypipe

Ese comando ejecuta dos instancias, una en el cliente y otra en el servidor (es decir debe estar instalado en ambos hosts). La instancia de waypipe que se ejecuta en el servidor ssh simula ser un compositor wayland, y usa un socket Unix para que los programas puedan conectarse. El resultado final es que la aplicación remota se muestra en la pantalla local de wayland. Las pruebas que realicé sobre CentOS8 como servidor wayland y cliente ssh frente a un servidor Fedora 31 han sido satisfactorias.

Más que mil palabras

¿Querés ver un video con waypipe en acción? Lo podés ver a continuación:

Fuentes de Consulta y Más Recursos

Cuestiones con VirtualBox

Hay ciertos detalles a vece que necesitamos pulir al usar VirtualBox, por ejemplo:

Detalles al configurar un Guest en VirtualBox

Photo by Ales Nesetril on Unsplash

Al usar VirtualBox 6.1 aparecen los siguientes errores:

[drm:vmw_host_log [vmwgfx]] *ERROR* Failed to send host log message.

Este error parece inocuo, tiene que ver con el driver de la tarjeta de video, la cual está en VMSVGA, el indicado para Linux.

el otro error es:

"failed to start Cgroup management daemon."

Lo que hice fue desinstalar paquetes obsoletos:

apt-get purge upstart libcgmanager0 cgmanager

Otro inconveniente menor suscitado es la baja resolución luego del login:


Baja Resolución después del login

Probé aumentarle la memoria para video del guest a 32 MB, pero el problema persistía. Entonces creé un usuario de prueba que no presentaba ese problema y comparé los datos que me daba el comando:

gsettings list-recursively

para ambos usuarios.

No encontré diferencias. Entonces, comparé ambos directorios y borré el archivo $HOME/.config/monitors.xml del usuario con dicho problema y efectivamente, logré solucionarlo de ese modo.

Análisis de Arquitectura de Aplicaciones Educativas Libres

Este análisis se es sobre el diseño, la interactividad, usabilidad y experiencia del usuario en programas educativos libres.

Usabilidad

Photo by David Travis on Unsplash

katomic

El software presupone un conocimiento básico de química. Espera que gracias a ese conocimiento el usuario se de cuenta como se juega. El menú Juego pone de relieve la naturaleza del programa. El programa posee una especie de laberinto a la izquierda y la estructura de una molécula que se debe btener en la parte derecha. Posee 4 menús:

  • Juego

  • Mover

  • Preferencias

  • Ayuda

Una barra de herramientas debajo con:

  • Reiniciar partida

  • Deshacer

  • Rehacer

  • Nivel anterior

  • Siguiente nivel

Cada átomo posee flechitas de dirección al pausarlas Se supone que es cuestión de arrastrar y solar. Con algo de investigación uno puede darse cuenta de que se trata de un laberinto, hay que mover haciendo clic en las flechas hasta juntar correctamente los átomos. También es posible moverse con las flechas del teclado.

Es un poco impredecible el movimiento de los átomos, y uno tiene que deducir que siempre se mueve pegado a las paredes, nunca se quedan en el medio.

Debajo, en una barra de estado dice el Nivel, el tipo de nivel y el nombre de la molécula. A la derecha aparece la puntuación actual y las mejores puntuaciones.

El idioma está en castellano, aunque depende del entorno como esté configurado. Al finalizar el armado de la molécula aparece debajo un mensaje de felicitación, aunque no es muy cálido y/o visible. Y aparece un siguiente desafío.

El juego se puede guardar para seguir en otro momento. Al guardar la partida no está claro con qué extensión se guarda. No obstante al cerrar el juego, pude abrirlo sin problemas yendo a Juego y Cargar..

Además, puedo desde el menú Juego ir al Nivel anterior y luego volver al Siguiente Nivel. Tiene la posibilidad de Obtener niveles nuevos desde la Internet:

Niveles de KAtomic

Para luego descargarlos e instalarlos:

Descarga de niveles

Pese a su apariencia sencilla el juego no es tan sencillo.

Decidí explorar la ayuda:

En la ayuda dice el objetivo del juego es Ensamblar moléculas deslizando los átomos que las componen.

La Ayuda dice Verá flechas verdes apuntando en las direcciones en las que el átomo se puede mover pero en realidad son amarillas. También expresa que El progreso del juego se guarda automáticamente cada vez que se alcance un nivel nuevo y se cargará la siguiente vez que se inicie la aplicación. Algo que efectivamente sucede.

Manual de katomic

Este programa no tiene un sitio web especial para el usuario, solamente un sitio de control de versiones: katomic.git - Katomic is a fun and educational game built around molecular geometry y está listado en The KDE Games Center - KAtomic Information. En ese sitio la información está en inglés.

La navegación citada por Berenguer tal vez no sea tan interesante y no demanda demasiada interacción.

El control que tiene el usuario sobre la aplicación es limitado.

Sería un programa interactivo de segunda generación ya que permite usar íconos y el mouse principalmente.

No obstante el escollo que encuentro es que juego es bastante lineal y su nivel de dificultad puede llevar a la frustración temprana.

De hecho, la ayuda misma dice que la aplicación no proporciona ni pistas ni soluciones.

El control mejora un poco si descargan y usan niveles adicionales.1 Me parece que la relación entre el juego y el contexto del usuario es bastante débil.[ii]

kig

Kig se autodefine como un programa para explorar construcciones geométricas.3

Kig


  • Un punto positivo es el ¿Sabía...? es una manera de ayudar a que el usuarios se involucre con el uso del programa. La ayuda es también en componente importante a la hora de evaluar la experiencia del usuario.4

  • La interfaz es un tanto monocroma, pero el uso de las herramientas es intuitivo. Sin embargo, identificar con solo verlos en algunos casos puede ser un poco difícil, por ejemplo:

  • En este caso, la interfaz tiene dos recursos como para paliar dicho problema: las tooltips y la posibilidad (como cualquier programa del entorno de escritorio Plasma) de ver los íconos más grandes.

  • Una información muy útil está en la barra de estado, sería mejor si estuviese más visible.

  • No explica lo que es un vector.

  • Tiene una manera para seleccionar todo y borrarlo de manera de limpiar la hoja de trabajo.

  • El menú contextual que aparece al hacer clic derecho sobre los objectos es muy útil.

  • No pude establecer un color personalizado, bueno en realidad sí, después de hacer clic en otro lugar de la pantalla pude ver que lo aplica para mover un vector, seleccionar un ángulo de rotación?

  • Con Esc se puede cancelar la construcción de un objeto

  • Está muy bueno que se puede poner una etiqueta en el objeto (el programa le da el nombre correcto)

  • En un momento se colgó el programa, afectando el grado de previsibilidad del programa,

  • Estaría bueno si permitiese crear más polígonos, como trapecios, paralelogramos, etc.

GCompris

GCompris es un conjunto de programas educativos de alta calidad que contiene un gran número de actividades para niños entre 2 y 10 años.

De acuerdo a la definición de su sitio web, Gcompris

es un conjunto de programas educativos de alta calidad que contiene un gran número de actividades para niños entre 2 y 10 años

Desde la primera pantalla guía al usuario claramente en lo que puede hacer.

Bienvenida de GCompris

Y luego la bonita pantalla inicial:

Inicio de GCompris

En la parte inferior, hay a unos botones muy atractivos, cada uno de ellos tiene un ícono que sugiere la función de ellos. De esta manera se estaría cumpliendo la ley de Fitt.[v]

El botón de la G, muestra información muy útil sobre GCompris, KDE y la naturaleza de ellos:

Acerca de GCompris

Cuanta con actividades en las cuales los chicos tienen protagonismo, como por ejemplo un juego sobre el ciclo del agua:

Excelentes gráficos, ayuda integrada, buena interactividad, como dice Berenguer:

“En segundo lugar, apunta la "facilidad"
de uso, o sea la accesibilidad de la información y la sencillez de las operaciones que llevan a ella. También
es deseable en general la "coherencia", la regularidad del programa, es decir, que elementos similares sean
tratados de manera similar”

En muchos aspectos Gcompris se acerca bastante al idea de un programa libre educativo para niños

Por otro lado, Otl Aicher6 cita a Kant: “la finalidad se orienta a lo especial, no a lo general”. En este caso si los proyectos de software libre consiguen profesionalizarse tienen grandes posibilidades en ese aspecto al no estar urgidos por alguna urgencia comercial.

Por otro lado, hay que entender que no solamente importa la facildad de un programa, sino el tipo de experiencia que tiene el usuario al emplearlo.7

Otros Enlaces Útiles


  1. Berenguer menciona la importancia del control del usuario en los programas interactivos en Escribir programas interactivos - Publicado en FORMATS, Universidad Pompeu Fabra, 1997

  2. En ACIMED v.12 n.6 Ciudad de La Habana nov.-dic. 2004 se menciona la importancia de Relación entre el sistema y contexto del usuario como medida de Experiencia del Usuario. 

  3. The KDE Education Project - Kig 

  4. Mencionado también en fuente mencionada en nota 2 

  5. Ley de Fitts - Wikipedia, la enciclopedia libre 

  6. El mundo como proyecto - Otl Aicher 

  7. Usability - Wikipedia 

La gestión de archivos en tiempos de DevOps

Escribía en un artículo anterior sobre ranger. Los gestores de archivos han sido son muy importantes.

Gestores d archivos

En los comienzos de la informática moderna, los gestores de archivos se llamaban editores de directorio. En 1974 Stan Kugell crea el programa llamado DIRED. En la actualidad una implementación de Dired que corre en Emacs.

Dired en Emacs

En los '80s aparecería Norton Commander. Miguel de Icaza creó en 1998 el clon tan popular llamado Midnight Commander.

El comando ls viene desde los tiempos del sistema operativo UNIX de AT&T, naturalmente en Linux usamos la implementación libre de las coreutils. El comando ls sirve para ver el contenido de directorio y ver propiedades básicas de los archivos. Si queremos ver el árbol de directorios podemos usar tree:

El comando tree

Benjamin Sago creó en 2014 una herramienta para reemplazar a ls, llamada exa:

Este programa cuenta con opciones de visualización y filtrado que no están en ls.

La herramienta Broot o bien abreviada br combina funcionalidades de ls, tree y de gestores de archivos. El programa fue creado por Denys Séguret y al igual que exa, está escrito en Rust Programming Language. Aquí vemos como esta herramienta sintetiza las 3 funcionalidades:

Es así como contamos tanto con herramientas tradicionales como otras más nuevas adaptadas más a estos tiempos para ver y manejar archivos.

Fuentes y más recursos

Cómo pegar texto en VIM usando Ctrl-v

Cuando copiamos un texto desde otro programa y lo queremos pegar en VIM, no podemos usar el atajo de teclado Ctrl-v. Sin embargo, podemos usar la siguiente configuración para poder hacerlo

imap <C-v> <C-o>"+p

Dicha configuración hay que guardarlo en el archivo ~/vimrc (en el caso de neovim usar ~/.config/nvim/init.vim).

¡Eso es todo!

Uso de Software Libre en el Instituto Joaquín V. González

La entrevista al profesor Matías García arrojó resultados interesantes, de manera que decidí acercarme al "Joaquín".

Hay varios motivos que llevaron a Matías a usar software libre:

  • El problema ético de usar copias ilegales de software.
  • Las herramientas disponibles como software libre.
  • El uso de software libre en educacion es coherente con los principios pedagógicos, éticos y morales que se deben enseñar en toda institucion educativa, como por ejemplo no usar copias prohíbidas de software.

De alguna manera, Matías propuso una contrapropuesta utilitaria y ética al mismo tiempo.

El software libre es usado por algunos docentes y en mayor cantidad por alumnos que descrubren sus bondades. En cambio muchos docentes prefieren quedarse usando software privativo ya que consideran que es lo que pide el mercado.

Algunos de los ejemplos de software libre que se utilizan actualmente son:

Mientras tanto el software que siguen usando muchos docentes por resistencia al cambio es:

  • MS Windows 7 (a ser reemplazado el año que viene por la versión 10)
  • MS Office 2012
  • MS Visual Studio
  • Adobe Illustrator
  • Adobe Dreamweaver

Durante la implementación, dado que el departamente de soporte técnico no poseía conocimientos de software libre, Matías colaboró activamente en el proceso.

Los escollos más difíciles a sortear a mi entender de acuerdo a la entrevista son:

  • Falta de decisión política y/o institucional tanto a nivel del Instituto mismo como del estado.
  • Falta de un departamento permamente y profesionalizado de soporte técnico.
  • Pocos conocimientos técnicos.

Para complementar: las iniciativas para implementar y comenzar a usar software libre depende de esfuerzos individuales, a esto se le suma que no hay demasiada conciencia sobre las implicancias legales y/o éticas de las licencias de software-

Para actividades en aulas virtuales en algunos casos usan Google Classroom y en otros Moodle. Matías me comentaba que si bien la solución de Google no es libre y presenta ciertos reparos en cuanto a la privacidad, su uso tiene su explicación: presenta una solución homogénea, de rápido y fácil uso (la mayoría de los alumnos tiene una cuenta de Google al tener un celular con Android). El uso de Moodle depende que algún profesor lo instale, le de mantenimiento, etc. Algo similar sucede con una solución alternativa que le comenté como Nextcloud.

Mi propuesta: Jornadas para Docentes: Uso de tecnología en el aula

En este caso usar una solución que dependa de una infraestrucura de servidores propia es poco viable, teniendo en cuenta la carencia de personal dedicado para tal fin.

Por lo tanto debería ser software de escritorio y fácil de instalar y usar.

Sería interesante poder realizar unas Jornadas de Uso de Tecnología en Educación en el mismo Instituto abierta tanto para docentes. Podrían dividirse en grupos y plantear preguntas tales como:

  • ¿Qué espero que me aporte la tecnología?
  • ¿Por qué uso determinado programa?
  • ¿Cómo enseño informática?
  • ¿Es el modo conductual y/o constructivista el único posible?
  • ¿Qué condiciones de uso tiene el software que hay en las computadoras el instituto?

Luego podría haber una charla que llamaría ¿Hay vida más allá de PowerPoint?

El objetivo es mostrar:

  • Alternativas similares: LibreOffice Impress
  • Alternativas con diferente interfaz: Calligra Stage
  • Alternativas "para salir de la caja": Por ejemplo, hacer un video con kdenlive
  • Alternativa techie (para profesores de informática): Presentaciones con markdown

Cultura institucional y procesos de migración a Software Libre

Entrevista a @profMatias de CaFeLUG

Me contacté con CaFeLUG y @profMatías tuvo la gentileza de responder a mis preguntas:

Datos de la institución

Instituto Superior de Profesorado Dr. Joaquín V. González

Nivel educativo

Nivel Superior, Terciario perteneciente a CABA donde se dan 18 profesorados entre los que se encuentra el Profesorado de Informática cantidad de alumnos: El Profesorado de Informática es de 5 años y se da en turnos mañana y tarde con al rededor de 800 alumnos.

Cantidad de equipos migrados

2 laboratorios de 20 cantidad y tipo de equipos migrados: Cuenta con 2 laboratorios de 20 equipos cada uno. Los equipos de 2014 eran AMD Athlon X2 con 1GB, se fueron actualizando durante los años.

Fecha

Marzo 2014

Duración de la experiencias

Desde 2014 los laboratorios cuentan con DualBoot, se fueron actualizando las distribuciones durante los años hasta hoy.

Como surgió la iniciativa

Matías García concursó y ganó la materia Programación Estructurada y Dinámica del profesorado de informática en noviembre 2013. Al dar la primera clase se encontró con que los laboratorios solo cuentan con MS Windows 7, él desde el 2010 da clases exclusivamente con Software Libre, por lo que le pidió al sector de soporte de la institución que instalen DualBoot para poder tener la posibilidad de trabajar con una distro GNU/Linux tanto los docentes como los alumnos sin obligar a nadie a tener que hacerlo ya que ambos sistemas estarían instalados. El personal de soporte técnico no sabia nada de GNU/Linux pero entendían la posición de Matías y le propusieron que para 2014 sea parte del soporte técnico institucional y así poder ayudarlos en sus tareas y enseñarles sobre Software Libre.

¿Quien la llevó adelante en sus diferentes instancias?

Al ser parte del soporte técnico se dedicó a realizar una imagen de software para los equipos de ambos laboratorios con los sistemas operativos Ms Windows 7 y Ubuntu, mas todo el software requerido por los diferentes docentes para sus materias. Aunque los docentes solicitaban software privativo siempre instaló alternativas en GNU/Linux. De mas esta decir que el software privativo que se instala es ilegal porque la institución ni el gobierno pagan sus licencias. Lamentablemente, no se puede migrar completo a Software Libre porque muchos docentes del profesorado de informática como de otros profesorados que utilizan los laboratorios no saben, no pueden o no les interesa aprender a usar Software Libre.

Resultados

Los mejores resultados se ven en los alumnos y no tanto en los docentes. Obviamente a Matías lo benefició porque cree y milita por una educación tecnológica solo en software libre pero la realidad de otros docentes es continuar con las practicas que ya venían realizando. Aunque varias veces dio charlas y cursos a colegas y está constantemente remarcando las ventajas del uso de software libre en educación tanto a ellos como a los alumnos, han sido pocos los docentes de la institución que utilizan GNU/Linux para sus clases aunque si aumentó el uso de software libre en la plataforma de MS. Los alumnos, sobre todo luego de pasar por mis materias, demuestran mucho interés en la filosofía y uso de Software Libre. Muchos por primera vez tienen contacto con GNU Linux y con la posibilidad de comparar con el sistema que venían usando entonces se da un gran porcentaje de alumnos que me confirman que migran a Software Libre en sus equipos personales. Los alumnos serán futuros docentes de informática, los que pasan por sus materias, entonces uno de sus intereses es justamente que comprendan el porque enseñar con Software Libre y que por lo menos en sus materias tengan un contacto directo con estas tecnologías.

¿Hubo apoyo institucional?

En realidad el rector o comisión directiva de la institución no auditan el software instalado. Cada cierto tiempo el sector de soporte solicita actualización de equipos que si hay posibilidad son comprados con dinero de presupuesto de gobierno o por la cooperadora. Soporte técnico se encarga de la instalación y en este caso pudo ayudar a hacerlo hasta 2016, luego dejó el cargo y los muchachos siguen pidiéndole ayuda cada año para realizar la imagen de GNU/Linux.

Dificultades principales

Creo que en cualquier institución educativa la dificultad es que el

soporte técnico interno o externo tenga los conocimientos para poder realizar un DualBoot o una migración correcta. En este caso no hubo dificultad porque Matías se encargó personalmente de hacerla.

Aprendizajes y análisis de las experiencias

Matías considera que la experiencia es exitosa, aunque los indices o porcentajes sean bajos en los docentes que migraron sus clases, los números en los alumnos son alentadores a continuar trabajando con Software Libre. Muchos docentes manifiestan no querer trabajar con Software Libre básicamente por su desconocimiento a GNU Linux y a creer que tienen que cambiar sus apuntes, tutoriales, prácticas por trabajar con otra plataforma. En docentes de otros profesorados es aun mayor el desconocimiento, creen que MS Windows es el único OS, tanto docentes como alumnos cuando por el DualBoot ingresan a la distro GNU Linux directamente presionan el reset sin tomarse 1 minuto para ver cual es el botón grafico de apagado, quizas trabajan con software libre en la plataforma de MS pero no distinguen entre los tipos de software ni sus ventajas o desventajas.

Modelos pedagógicos y Software Libre

Comparación de modelos educativos

Me parece interesante el cuadro comparativo, bueno entre otras cosas porque... ¡lo escribí yo hace unos cuantos años! Tanto que ya lo había olvidado 1.

Hay que tener en cuenta que buena parte de las plataformas que hoy ejercen un control social lo hacen usando software libre. Desde luego, esto no lo invalida, pero también nos muestra que el modelo de software libre va mucho más allá de usar un programa que tiene una licencia que permite las famosas 4 libertades del software.

De todas maneras, cree en estos días, sería interesante que el software libre sea una asunto que vaya más allá de una cuestión de licencia. Por eso me gustaría hoy referirme a que los algoritmos pueden usarse para oprimir y limitar o para posibilitar y liberar. Naturalmente esto podría conllevar una redifinición conceptual sobre qué queremos decir cuando hablamos de software libre.

El mayor peligro en la actualidad son las democracias recortadas por la ciber-vigilancia:

Al mismo tiempo, la gente se está tomando más tiempo en considerar algo de los resultados éticos que resultan del software libre. El copyleft asegura que podés compartir tu código con tu prójimo sin que tu prójimo sea capaz de denegar la misma libertad a los otros, pero no hace nada en impedir que tu prójimo use tu código para impedir otras libertades fundamentales que no son del software. Mientras los gobiernos hacen más y más uso de la tecnología para realizar actos de vigilancia masiva, y aun genocidios, los autores de software pueden sentirme legítimamente espantados por la idea de que están ayudando habilita esto al permitir que su software sea usado por cualquier propósito.1

Un ejemplo podría ser:

Modelo Libre Modelo Privativo
¿Quién realiza la búsqueda? ¿Cómo la realiza?¿Existen otras respuestas alternativas? ¿Qué intereses puede haber detrás de una respuesta? ¿Cómo están siendo usados los datos? ¿Para qué se usa el software? Un buscador web me da la respuesta verdadera y definitiva. El software es o bien invisible o bien la panacea.

Probablemente la diferencia principal entre los dos modelos es que uno pretende tener todas las respuestas, en cambio el otro se hace preguntas.

Artículos relacionados

Elige Tu Propio Prompt

El prompt

El prompt es la cadena de texto que le indica al usuario que puede ingresar comandos en un shell. En Linux existe la variable PS1 que guarda el valor del mismo. PS1 significa "Prompt String 1".

Por ejemplo, en Fedora tiene el valor [\u@\h \W]\$ y se expande a:

test@localhost:~$

Esta variable reemplaza automáticamente determinados caracteres escapados con una contrabarra. Algunos de ellos son:

Caracter escapado Reemplazado por
\d Fecha en formato dom abr 21
\h El nombre del host sin el dominio
\H El nombre del host completo
\t hora en formato 24 hs
\T hora en formato 12 horas
\@ hora en formato 12 horas am/pm
\u El usuario actual
\w el directorio actual
\W la ruta relativa del directorio actual

También se pueden usar secuencias de escape ANSI para colorear, por ejemplo

Prompt con colores ANSI

Esto se explica así:

  • La secuencia \[\033indica el comienzo de una secuencia ANSI
  • [1;32m\]es color verde
  • \[\033[0m\]cierra la secuencia de colores (de otra manera todo lo que tipeemos a continuación quedará también en verde

Podemos seguir personalizando el prompt a nuestro gusto y necesidad.1

También podemos echar mano a algunos de los proyectos que nos facilitan esta tarea, tal como veremos a continuación.

sexy-bash-prompt

Sino queremos hacer todo a mano podemos usar un software como sexy-bash-prompt. Todd Wolfson creó un prompt para bash que también puede usarse para status y ramas en git. Utiliza tput, un programa para configurar terminales usadas por la shell, y también para inicializar o resetear la terminal.

Instalación de sexy-bash-prompt

  • Creamos el directorio Descargas si no existe:

# [ -d ~/Descargas ] || mkdir ~/Descargas

  • Clonamos el repositorio:-

# git clone --depth 1 --config core.autocrlf=false https://github.com/twolfson/sexy-bash-prompt

  • Entramos en el directorio del repo:

# cd sexy-bash-prompt

  • Instalamos:

# make install

  • Recargamos la configuración de la shell

# . ~/.bashrc

¡Listo!

sexy-bash-prompt

Configuración de sexy-bash-prompt

Se puede adaptar a gusto el aspecto del prompt editando el archivo ~/.bashrc y/o ~/.bash_prompt

Personalizando sexy-bash-prompt

Aquí vemos un ejemplo de configuración personalizada:

powerline

Powerline2 se trata de un software mucho más sofisticado escrito en python por Kim Silkebækken.

Originalmente este proyecto se llamaba vim-powerline el cual proporcionaba una línea de estado para vim, pero posteriormente evolucionó para ser una línea de estado para aplicaciones tales como bash y tmux entre otros.

Instalación de Powerline

En el caso de Fedora viene como paquete y se puede instalar con:

# dnf install powerline

La configuración para bash se puede realizar en el archivo .bashrc de esta manera:

if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  . /usr/share/powerline/bash/powerline.sh
fi

En el caso de CentOS 7, el software se puede instalar con pip y luego agregar en .bashrc:

if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  .  /bindings/bash/powerline.sh
fi

Y así queda luego de hacer . .bashrc:

Powerline

Configuración de Powerline

La configuración de powerline en CentOS al instalar con pip está en /usr/local/lib/python3.6/site-packages/powerline/config_files. En Fedora se encuentra en /etc/xdg/powerline. Para modificar alguno de los archivos se pueden crear el directorio ~/.config/powerline y poner las modificaciones allí.

Existen varios archivos de configuración que tienen el mismo nombre, pero ubicados en diferentes directorios, los cuales se combinan, como es habitual los archivos del usuario tienen prioridad sobre los globales.

Poniendo como ejemplo CentOS y la shell BASH, los archivos de configuración serían:

Ruta del archivo o directorio Descripción
$PYTHONPATH/site-packages/powerline/config_files/config.json Archivo principal de configuración
$PYTHONPATH/site-packages/powerline/config_files/colorschemes/default.json Configuración predeterminada del esquema de colores
$PYTHONPATH/site-packages/powerline/config_files/colorschemes/shell/default.json Configuración predeterminada del esquema de colores para la shell

Al editar el archivo local ~/.config/powerline/config.json podemos cambiar el esquema de colores predeterminado:

Esquema de colores

Para cambiar el esquema de colores:

# mkdir -p .config/powerline/colorschemes/shell # cp /usr/local/lib/python3.6/site-packages/powerline/config_files/colorschemes/shell/__main__.json .config/powerline/colorschemes/shell/

La definición de esos grupos se puede ver en /usr/local/lib/python3.6/site-packages/powerline/config_files/colorschemes/default.json

Por ejemplo superuser tiene el valor information:additional, el cuál este a su vez tiene: "fg": "gray9", "bg": "gray4", "attrs": [].

Podemos copiar el archivo correspondiente y personalizarlo:

# cp /usr/local/lib/python3.6/site-packages/powerline/config_files/colorschemes/shell/default.json .config/powerline/colorschemes/shell/

Supongamos que le hacemos la siguiente modificación:

{
        "name": "Default color scheme for shell prompts",
        "groups": {
                "hostname":         { "fg": "brightyellow", "bg": "mediumorange", "attrs": [] },
                "environment":      { "fg": "white", "bg": "darkestgreen", "attrs": [] },
                "mode":             { "fg": "darkestgreen", "bg": "brightgreen", "attrs": ["bold"] },
                "superuser":             { "fg": "brightred", "bg": "white", "attrs": ["bold"] },
                "attached_clients": { "fg": "white", "bg": "darkestgreen", "attrs": [] }
        },
        "mode_translations": {
                "vicmd": {
                        "groups": {
                                "mode": {"fg": "darkestcyan", "bg": "white", "attrs": ["bold"]}
                        }
                }
        }
}

Luego habría que cambiar el archivo principal del tema .config/powerline/colorschemes/shell/__main__.json:

{
        "groups": {
                "continuation":         "cwd",
                "continuation:current": "cwd:current_folder",
                "exit_fail":            "critical:failure",
                "exit_success":         "critical:success",
                "jobnum":               "information:priority",
                "superuser":            "mysuperuser"
        }
}

Hay cambios que no se aplican directamente, para este tipo de casos hacer lo siguiente:

# powerline-daemon --replace

Para cambiar de tema:

cp /usr/local/lib/python3.6/site-packages/powerline/config_files/themes/unicode_terminus_condensed.json .config/powerline/themes/shell/default.json

Y luego recargar el daemon.

PureLine

Otra alternativa escrita por Chris Marsh es Pureline3, que ofrece un prompt al estilo de Powerline pero escrito en bash.

PureLine

Instalación de pureline

  • Clonar el repositorio

# git clone https://github.com/chris-marsh/pureline.git

  • Copiar el directorio

cp -r pureline ~/.pureline

  • Entrar en el diretorio

cd pureline/

  • Usar alguno de los archivos de configuración existentes:

cp configs/powerline_full_256col.conf ~/.pureline.conf

  • Agregar la línea siguiente en ~/.bashrc:

source ~/.pureline/pureline .pureline.conf

  • Y recargar la configuración de bash:

source ~/.bashrc

Configuración de PureLine

Editando el archivo ~/.pureline.conf se puede modificar a gusto el prompt:

Configurando PureLine

Quedaría así:

E incluso se puede cambiar el símbolo principal del prompt:

Full Custom

Nota sobre fuentes

Hay dos maneras básicamente en que un prompt muestre bien los glifos (por ejemplo flechas y otros símbolos especiales): usar la fuente PowerlineSymbols.otf (en Fedora está en el paquete powerline-fonts) como secundaria para una de las fuentes existentes o instalar una fuente parcheada4.

Conclusión

Un prompt puede resultar una herramienta que proporcione información muy útil y también para diferenciar hosts al loguearnos. De estas opciones me parece la mejor PureLine ya que está escrita en bash, la configuración es más natural y sencilla. Powerline usa de acuerdo a ps_mem unos 12 MB de memoria RAM. No obstante, de acuerdo a su propio sitio de desarrollo hay que tener en cuenta que las próximas versiones de PureLine puede cambiar el modo de configuración, por lo tanto sus archivos podrían necesitar necesitar cambios.

Herramientas imaginarias, ideales, utópicas

Herramientas imaginarias, ideales y utópicas

Rompecabezas Photo by Hans-Peter Gauster on Unsplash

No me imagino una herramienta como una prótesis. Me parece algo deshumanizante. Pensar en conectores ingresando en nuestro cerebro me parece un horror.

En cambio...

  • La herramienta ideal que me imagino sería un buscador que estimule la imaginación, el pensamiento crítico, y el pensamiento lateral. Tendría un asistente inicial que nos pregunte las emociones que estamos sintiendo en el momento de abrir la aplicación.
  • Hasta ahora los buscadores convencionales encuentran resultados basados en palabras claves, imágenes o voces. No obstante no lo haen a partir de una idea o problema elaborado.
  • A partir de allí nos haría preguntas que nos ayude a eliminar las emociones negativas o reencausarlas de manera positiva.
  • Luego, nos pediría que armemos un mapa mental al estilo Mindmapp
  • Luego podríamos subir ese mapa mental a un buscador. La búsqueda debería arrojarnos resultados enriquecidos, por ejemplo:
  • Artículos, libros, blogs que ofrezcan diferente posiciones frente a un determinado tema.
  • Si se trata de un problema, alternativas para resolver un problema.
  • Mostrarnos profesionales y aun personas que conocemos que pueden enriquecernos o colaborar frente a una determinada problemática.
  • Podríamos incluso poner un calculo matemático, por ejemplo una ecuación diferencial o una integral que nos de, no solamente la solución sino también, una explicación para entender el resultado.

A corto plazo serviría para buscar de manera más eficiente un tema, y obtener mejores y más ricos resultados.

A largo plazo ayudaría a crear alumnos con un pensamiento menos fragmentado, que tenga en cuenta también las emociones y el entorno. De hecho pienso que como requisito el buscador no debería funcionar si no respondemos el asistente inicial de depurador y orientador de emociones o sino hacemos el mapa mental.