static-httpd

Sitio web estático (HTML + CSS) que sostiene el blog del autor
Log | Files | Refs

index.html (8276B)


      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      5 <meta name="viewport" content="width=device-width, initial-scale=1" />
      6 <title>Del emulador de terminal urxvt</title>
      7 <link rel="icon" type="image/png" href="/favicon.png" />
      8 <link rel="stylesheet" type="text/css" href="../article.css" />
      9 </head>
     10 <body>
     11 <header>
     12 <p class="title">Del emulador de terminal urxvt</p>
     13 <p class="date">20 de julio de 2024 • fjbalon</p>
     14 </header>
     15 <p>El emulador de terminal es el programa que proporciona una interfaz de texto que imita el comportamiento de una terminal hardware-física, de tal forma que el usuario interactúe con el sistema operativo mediante la ejecución de comandos. Generalmente, los entornos de escritorio ofrecen su propia versión, vitaminada y adaptada al funcionamiento general del ecosistema gráfico. Así, el vulgo usará las clásicas como la terminal de Gnome o la de KDE.</p>
     16 <p>Sin embargo, existen terminales de uso menos frecuente; al menos en un uso más profundo; tanto en recursos del sistema, personalización, eficiencia, velocidad... Que es necesario conocer.</p>
     17 <p>En mi caso concreto, utilizo regularmente xterm, urxvt y st, siendo el segundo el que nos ocupa en éste artículo.</p>
     18 <p>urxvt (ó rxvt-unicode); o en adelante urxvtd como me gusta denominarla, es un emulador de terminal customizable bifurcado de rxvt, añadiendo soporte para extensiones perl. Es uno de los emuladores más conocidos del cosmos Unix, especialmente por en Unixporn por su alta configurabilidad estética. Además, es un emulador muy ligero y muy rápido.</p>
     19 <p>Sin embargo, la característica que me hizo decantarme por ella hace ya varios años, es sin lugar a dudas su capacidad de terminal demonizable.</p>
     20 <p>Esto significa que puede correr en modo demonio (daemon), lo que permite compartir una única instancia de terminal entre múltiples ventanas, reduciendo el uso de memoria y mejorando el rendimiento. En palabras más técnicas, ejecutaríamos una instancia o demonio en segundo plano, que serviría como servidor de <emb>urxvtd</emb>, al que los clientes de <emb>urxvtc</emb> se conectan como hijos, en lugar de crear cada uno un nuevo proceso completo de <emb>urxvt</emb>.</p>
     21 <p>Ejecutarlo es tan sencillo como usar el comando:</p>
     22 <pre><code>urxvtd</code></pre>
     23 <p>Y posteriormente, por cada terminal a ejecutar:</p>
     24 <pre><code>urxvtc</code></pre>
     25 <p>Lo que hago para automatizar esto, es añadir al <emb>.xinitrc</emb> la ejecución de <emb>urxvtd &</emb>, y en el gestor de ventanas indico que la ejecución de terminal se hace mediante <emb>urxvtc</emb>. Tan simple como esto.</p>
     26 <pre><code>init(1)─┬─urxvtd(1234)─┬─urxvtc(5678)
     27 	│              ├─urxvtc(5679)
     28 	│              └─urxvtc(5680)</code></pre>
     29 <p>Como terminal íntimamente ligada al servidor X, que sirve como reemplazo de <emb>xterm</emb>, su configuración estética se realiza mediante los ficheros de configuración utilizados por <emb>X Windows System</emb> para definir los recursos y ajustes de las aplicaciones X, es decir, <emb>~/.Xresources</emb> y <emb>~/.Xdefaults</emb>.</p>
     30 <p>De entre ambos, utilizo <emb>.Xresources</emb> por su flexibilidad, ya que permite actualizar configuraciones sobre la marcha sin necesidad de actualizar el servidor; en comparación con <emb>.Xdefault</emb> que es estático. El primero, se carga específicamente mediante el comando <emb>xrdb</emb>, permitiendo una carga condicional y específica de los recursos. Personalmente añado al <emb>.xinitrc</emb>:</p>
     31 <pre><code>xrdb -merge ~/.Xresources</code></pre>
     32 <p>Para cargar la configuración. Mientras que si emplease el segundo, se carga automáticamente al iniciar la aplicación X, siendo que no se aplica para las aplicaciones en ejecución; y puede requerir un reinicio de todo el servidor X para que los cambios surtan efecto.</p>
     33 <p>He aquí ejemplos de parametrización estética y funcional empleadas por mí:</p><ul>
     34 	<li>Fuente<pre><code>URxvt*font:  xft:inconsolata:size=9:antialias=true</code></pre></li>
     35 	<li>Colores
     36 		<p>El uso del color de fondo y de letra se realiza mediante:</p>
     37 <pre><code>URxvt*background: #000000
     38 URxvt*foreground: #f7f7f7</code></pre>
     39 		<p>De tal modo que el fondo negro puro contraste con un blanco no demasiado brillante. Por otro lado, la paleta de colores:</p>
     40 <pre><code>!black
     41 URxvt*color0: #101010
     42 URxvt*color8: #404040
     43 !red
     44 URxvt*color1: #e5211d 
     45 URxvt*color9: #ad3430 
     46 !green
     47 URxvt*color2: #77a026 
     48 URxvt*color10: #94db43 
     49 !yellow
     50 URxvt*color3: #d2dd30 
     51 URxvt*color11: #ddef56 
     52 !blue
     53 URxvt*color4: #2e97ba 
     54 URxvt*color12: #77c6e5 
     55 !magenta
     56 URxvt*color5: #c42b7f 
     57 URxvt*color13: #ef6bd5 
     58 !cyan
     59 URxvt*color6: #25b1c6 
     60 URxvt*color14: #70e0ef 
     61 !white
     62 URxvt*color7: #dddddd
     63 URxvt*color15: #ffffff
     64 </code></pre>
     65 	<p>De tal forma que mantengo una coherencia colorestética de mi agrado. El resultado, es algo como:</p>
     66 <div style="display: flex; flex-wrap: wrap; justify-content: center; align-items: center; margin: 0;">
     67 <div style="width: 50px; height: 50px; background-color: #101010;"></div>
     68 <div style="width: 50px; height: 50px; background-color: #404040;"></div>
     69 <div style="width: 50px; height: 50px; background-color: #e5211d;"></div>
     70 <div style="width: 50px; height: 50px; background-color: #ad3430;"></div>
     71 <div style="width: 50px; height: 50px; background-color: #77a026;"></div>
     72 <div style="width: 50px; height: 50px; background-color: #94db43;"></div>
     73 <div style="width: 50px; height: 50px; background-color: #d2dd30;"></div>
     74 <div style="width: 50px; height: 50px; background-color: #ddef56;"></div>
     75 <div style="width: 50px; height: 50px; background-color: #2e97ba;"></div>
     76 <div style="width: 50px; height: 50px; background-color: #77c6e5;"></div>
     77 <div style="width: 50px; height: 50px; background-color: #c42b7f;"></div>
     78 <div style="width: 50px; height: 50px; background-color: #ef6bd5;"></div>
     79 <div style="width: 50px; height: 50px; background-color: #25b1c6;"></div>
     80 <div style="width: 50px; height: 50px; background-color: #70e0ef;"></div>
     81 <div style="width: 50px; height: 50px; background-color: #dddddd;"></div>
     82 <div style="width: 50px; height: 50px; background-color: #ffffff;"></div>
     83 </div>
     84 	</li>
     85 	<li>Activado buffer interno, lo que puede mejorar el rendimiento al reducir el parpadeo de la pantalla.<pre><code>URxvt*buffered: true</code></pre></li>
     86 	<li>Parpadeo del cursor en la terminal.<pre><code>URxvt*cursorBlink: true</code></pre></li>
     87 	<li>Color de subrayados.<pre><code>URxvt*underlineColor: yellow</code></pre></li>
     88 	<li>Profundidad de color de la ventana a 32 bits<pre><code>URxvt*depth: 32</code></pre></li>
     89 	<li>Sin bordes externos y definimos el tamaño del borde interno (margen) en píxeles. El valor por defecto es 3.<pre><code>URxvt*borderless: 1
     90 URxvt.internalBorder: 20</code></pre></li>
     91 	<li>Desactivada barra estética de desplazamiento y mantenemos el estilo tradicional de urxvt<pre><code>URxvt*scrollBar: false
     92 URxvt.scrollStyle: rxvt</code></pre></li>
     93 	<li>Hace que urxvt inicie un shell de login, que leerá los archivos de inicialización específicos de login del shell.<pre><code>URxvt*loginShell: true</code></pre></li>
     94 	<li>Habilita el desplazamiento con Shift-PageUp/PageDown, útil cuando se usa screen o tmux.<pre><code>Urxvt*secondaryScroll: true</code></pre></li>
     95 	<li>Definida a 5000 el número de líneas que se guardan en el historial de desplazamiento.<pre><code>URxvt*saveLines: 5000</code></pre></li>
     96 	<li>Establece el nombre del terminal (valor de $TERM), que es importante para la compatibilidad con aplicaciones que detectan el tipo de terminal.<pre><code>URxvt*termName: rxvt-unicode</code></pre></li>
     97 	<li>Habilita extensiones Perl comunes, incluyendo la detección de URLs (<emb>matcher</emb>), manejo del portapapeles (<emb>clipboard</emb>), y la copia de selecciones al portapapeles (<emb>selection-to-clipboard</emb>).<pre><code>URxvt.perl-ext-common: default,matcher,clipboard,selection-to-clipboard</code></pre></li>
     98 	<li>Definimos Firefox como el navegador a llamar al clickar una url y especificamos el botón del ratón (1 es el botón izquierdo) que debe ser utilizado para llamar al click.<pre><code>URxvt.urlLauncher: firefox
     99 URxvt.matcher.button: 1</code></pre></li>
    100 </ul>
    101 </body>
    102 </html>