Poesía Binaria

Un plugin de WordPress para hacer demostraciones animadas de comandos de terminal: simterm

¿Harto de que ponga todas mis andanzas en terminal de Linux de forma muy pobre y sin color? ¿Que casi no se distingue la entrada de datos de la respuesta de los programas? Y eso que intento que quede todo claro, pero en ocasiones no es fácil de conseguir, y con la cantidad de ejemplos que pongo por aquí no es sostenible tener que editarlos todo el rato para que queden bien en HTML.

Bueno, todo eso se acabó. Acabo de subir una primera versión de este plugin: simterm. Más o menos, simulador de terminal, y es que dibuja una ventana allá donde queramos y simula una entrada de datos y una salida con un look and feel mucho mejor. Aquí tenéis un ejemplo:

ls
css  mutils.php        simterm-line.php      views
img  readme.txt        simterm.php           views.php
js   simterm-core.php  simterm-settings.php
touch probando
ls -latr
total 64
drwxr-xr-x 2 gaspy gaspy 4096 jul 17 02:07 img
-rw-r--r-- 1 gaspy gaspy    6 jul 17 02:34 mutils.php
-rw-r--r-- 1 gaspy gaspy 1866 jul 25 20:47 simterm-line.php
-rw-r--r-- 1 gaspy gaspy  951 jul 26 02:15 views.php
-rw-r--r-- 1 gaspy gaspy 1971 jul 26 02:18 simterm-core.php
drwxr-xr-x 2 gaspy gaspy 4096 jul 26 02:32 css
drwxr-xr-x 2 gaspy gaspy 4096 jul 26 02:32 js
drwxr-xr-x 4 gaspy gaspy 4096 jul 26 02:32 views
-rw-r--r-- 1 gaspy gaspy  300 jul 26 02:42 .gitignore
-rw-r--r-- 1 gaspy gaspy 1213 jul 26 02:59 readme.txt
drwxr-xr-x 4 gaspy gaspy 4096 jul 26 03:01 ..
-rw-r--r-- 1 gaspy gaspy 4285 jul 26 03:05 simterm-settings.php
-rw-r--r-- 1 gaspy gaspy  965 jul 26 20:37 simterm.php
drwxr-xr-x 8 gaspy gaspy 4096 jul 26 20:38 .git
-rw-r--r-- 1 gaspy gaspy    0 jul 27 01:26 probando
drwxr-xr-x 7 gaspy gaspy 4096 jul 27 01:26 .
rm probando

Y después de 7 años…

Sí, llevo 7 años con el blog y no se me había ocurrido nada parecido. Bueno, hace tiempo vi un plugin para esto, pero era un simple div con un css y un icono de terminal, pero creo que esto está más chulo. Y todo fue a raíz de ver que alguien a quien sigo en GitHub puso una estrella esto: Show Your Terms. A mí me encantó y busqué a ver si había algo parecido en WordPress. Yo tenía muchas ganas de empezar un plugin para WordPress desde cero (y crear un tutorial para el blog, que veréis en poco tiempo), así que aproveché este momento.

¿Cómo lo instalo en mi blog?

Si quieres utilizar SimTerm en tu blog, descárgate el plugin desde GitHub. Por el momento no está en el directorio de plugins oficiales, se encuentra en revisión y hay una larga cola de plugins por delante. Planeo habilitar una pequeña página con más información sobre el plugin, pero eso será a medida que vaya sacando tiempo.

Una vez descargado, descomprimelo dentro de wp-content/plugins, ve a la pantalla de plugins de tu instalación de WordPress y activa SimTerm.

Puedes configurar algunas cosas si entras en Ajustes > SimTerm Settings como el carácter que precede los comandos o la entrada de texto del usuario, así como el tema del terminal (claro, oscuro, regular o azul para la versión 0.10). Luego, dentro de tu post, simplemente escribe:

[simterm]
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 454
Server version: 5.1.65-log MySQL Community Server (GPL)
> SELECT * FROM wp_options LIMIT 10,10;
+———–+————————+——————-+———-+
| option_id | option_name | option_value | autoload |
+———–+————————+——————-+———-+
| 11 | comments_notify | 1 | yes |
| 12 | posts_per_rss | 10 | yes |
| 13 | rss_use_excerpt | 0 | yes |
| 14 | mailserver_url | mail.example.com | yes |
| 15 | mailserver_login | login@example.com | yes |
| 16 | mailserver_pass | password | yes |
| 17 | mailserver_port | 110 | yes |
| 18 | default_category | 1 | yes |
| 19 | default_comment_status | open | yes |
| 20 | default_ping_status | open | yes |
+———–+————————+——————-+———-+
10 rows in set (0.00 sec)
> UPDATE wp_options SET option_value=100 WHERE option_name=’posts_per_rss’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
[/simterm]

Y esto se verá así:

mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 454
Server version: 5.1.65-log MySQL Community Server (GPL)
SELECT * FROM wp_options LIMIT 10,10;
+-----------+------------------------+-------------------+----------+
| option_id | option_name            | option_value      | autoload |
+-----------+------------------------+-------------------+----------+
|        11 | comments_notify        | 1                 | yes      |
|        12 | posts_per_rss          | 10                | yes      |
|        13 | rss_use_excerpt        | 0                 | yes      |
|        14 | mailserver_url         | mail.example.com  | yes      |
|        15 | mailserver_login       | login@example.com | yes      |
|        16 | mailserver_pass        | password          | yes      |
|        17 | mailserver_port        | 110               | yes      |
|        18 | default_category       | 1                 | yes      |
|        19 | default_comment_status | open              | yes      |
|        20 | default_ping_status    | open              | yes      |
+-----------+------------------------+-------------------+----------+
10 rows in set (0.00 sec)
UPDATE wp_options SET option_value=100 WHERE option_name=’posts_per_rss’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Configuración precisa para cada línea

Se puede configurar el color de escritura en cada línea utilizando comodines de la siguiente forma al principio de la línea:

##clave##

o

##clave=valor##

para los elementos que admiten configuración. Asimismo se pueden especificar varios comodines de la siguiente manera:

##clave1,clave1=valor2,clave2##

Por ejemplo podemos escribir esto:

[simterm]
##red##$ inserto un comando
##green,delay=2000##Espere un momento por favor…
##blue,delay=1000##Respuesta del comando
##yellow##$ read -n16 VARIABLE
##red##> inserto un texto
##yellow##$ comando -complicado –con «muchos argumentos»
##underline##Respuesta muy importante
##blink##Fin de la simulación
[/simterm]

Y obtener lo siguiente:

inserto un comando
Espere un momento por favor…
Respuesta del comando
read -n16 VARIABLE
inserto un texto
comando -complicado --con «muchos argumentos»
Respuesta muy importante

Documentación, más ejemplos y mucho más

Si quieres más información sobre este plugin ve a esta web. La iré rellenando poco a poco.

Colaborar con el plugin

Si quieres colaborar con el plugin aportando código, traducciones, solucionando problemas, etc, haz un fork en el GitHub del proyecto, trabaja en tu propio repositorio, sube los cambios y hazme un pull request. Si lo prefieres también puedes enviarme un mensaje o comentar algo, me pongo en contacto contigo y me envías los archivos, pero seguro que es más cómodo para todos de la otra forma.
Si quieres hacer sugerencias o informar de algún problema, puedes hacerlo a través de comentarios en este post, en la página de SimTerm, o en GitHub. Intento contestar todo en función del tiempo de que disponga.

También podría interesarte....