El lado oscuro del mosaico (II): ¡Elige el tuyo!

Antes de seguir con XMonad sobre Debian estable como había prometido en el post anterior, quiero hacer un paréntesis para que podamos hacer una buena elección y nos ahorremos tiempo y trabajo en conseguir que nuestros escritorios trabajen como deseamos. Así que comencemos con unas recomendaciones generales.

Antes de empezar

  •  Lee el manual. Muchas de las veces cometemos un error fatal al no leer los manuales. Casi todos los gestores de mosaico te van a recibir con una cálida pantalla en blanco la primera vez que los corras. No te asustes. Si ya llegaste hasta aquí y no sabes que hacer, presiona <Ctrl-Alt-F1> y teclea man inserte-aquí-su-gestor-de-ventanas. Todos los que he probado traen una descripción muy útil de como usarlos básicamente. Para volver al entorno gráfico, presiona <Ctrl-Alt-F7> y listo. Aunque esto lo debiste hacer antes de correr cualquier cosa.
  •  No le tengas miedo a la terminal. Vas a usarla mucho, tanto que hay un atajo para ella desde el principio en casi todos. Te recomiendo rxvt-unicode, más adelante explicaré el por qué.
  •  No copies y pegues archivos de configuración sin revisarlos. Esto es vital, por que estas configuraciones están pensadas para aquel que las usa, no para ti. Sin embargo, algo interesante es observarlas detenidamente y ver que cosa te es útil. Yo sólo recomiendo el copy & paste cuando son archivos muy pequeños, generalistas o porciones de código.
  •  Hazlo con calma. Difícilmente te va a quedar el entorno a la primera. Vas a sufrir errores con tu manejador de ventanas, eso tenlo por seguro. Por eso, mantén a salvo el entorno gráfico que ya tengas andando y asegúrate de saber volver a él en caso de emergencia. Más adelante explico cómo.

¿Qué vamos a necesitar?

  • Una distribución de Linux cualquiera. Hasta ahí, sea cual sea, todo bien.
  • Un editor de texto, preferentemente que se pueda ejecutar en terminal.
  • Un emulador de terminal. El que traen los entornos de escritorio basta.
  • Ganas. 😀

Las alternativas

Ahora comienza lo bueno, vamos a elegir un gestor de ventanas entre las infinitas alacenas del universo. Así que responde a esta pregunta, pero sólo con una palabra: ¿Qué haces en tu computadora?. ¿Programas? ¿Navegas? ¿Escribes? ¿Lees?. Una vez respondida esta pregunta, te hago una recomendación: Busca un gestor que se programe en el lenguaje de programación que estés usando. También revisa si el gestor está disponible en tu distribución. Algunos son tan nuevos que no. Comenzamos.

Awesome

Configuración: Lua

A favor: Awesome evolucionó a partir de DWM, hace ya algunos años. A partir de la rama 3, comenzó a configurarse a partir de Lua, un lenguaje de extensión muy poderoso. Es innovador, ya que es el primero en usar las nuevas bibliotecas XCB en detrimento de las Xlib. Tiene una fuerte comunidad de usuarios. Al basarse en Lua, obtiene una biblioteca estándar y bibliotecas de terceros que extienden su funcionalidad, como widgets. Tiene su propio sistema de notificación, como notify-osd; igualmente configurable en Lua. Soporta botones. Tiene bastantes layouts para el mosaico por defecto.

En contra: Muchos usuarios no soportaron el cambio a Lua. Los archivos de configuración son extensos y para reducir su tamaño hay que saber algo de Lua. A veces tiene problemas con Xcompmgr. Si rompes la configuración vuelves a la que estaba por defecto, no conserva la anterior.

Notas: No usa escritorios virtuales, si no etiquetas. Se puede configurar para que una aplicación se ejecute en determinada etiqueta.

XMonad

Configuración: Haskell

A favor: Aunque suene pretencioso, el hecho de que se desarrolle en Haskell lo hace menos propenso a bugs y errores humanos y es sumamente estable. Si la configuración (en este caso, se recompila el entorno) falla, mantiene la anterior y te manda un mensaje de que pasó. Los archivos de configuración son mínimos y fáciles de comprender. Se lleva bien con casi todo.

En contra: La dependencia de Haskell es su principal problema. Descargarlo implica tener que bajar el paquete haskell-platform, o al menos ghc, que si son algo grandes. Haskell puede ser (y es), algo críptico si estás acostumbrado a la programación imperativa y no a la funcional (para rápido: ve y haz esto contra esto es esto, ve a evaluarlo). No soporta botones, hasta donde sé. Tiene pocos layouts disponibles por defecto.

Notas: Se puede configurar fácilmente para que entre en un entorno de escritorio completo. Creo, más no aseguro, que entra directo a Gnome y Xfce. Muchas de sus extensiones pueden instalarse directamente desde hackage, el repositorio de Haskell, mediante un simple cabal-install, aunque tarda un poco por que las compila al bajarlas.

Este es el que voy a usar para los ejemplos de próximos artículos.

Subtle

Configuración: Ruby

A favor: Usa Ruby, así que su configuración es menos engorrosa. Ruby es bonito y con una sintaxis clara. Tiene su propio gestor de paquetes, para instalar sublets, llamado sur. Está creciendo rápidamente, eso habla de su calidad. Tiene un sistema estricto de etiquetas, como el de awesome, pero más sofisticado, le puede ser útil a algunos. Su terminal por defecto es rxvt-unicode, así que punto para Subtle; pues la mayoría nos deja a nuestra elección eso, y es bueno que ya lo tenga si la vas a usar.

En contra: No parece tener mucha información disponible en nuestro idioma.

Notas: A parte del sistema estricto de etiquetas, usa un sistema de tiling diferente, basado en grids. No lo he probado extensamente para explicarlo completamente, pero parece que divide el espacio de trabajo en áreas predeterminadas en vez de dejárselo a la aplicación que lo use.

DWM

Configuración: A través de una cabecera de C y un archivo automake
A favor: Es uno de los legendarios, padre de Awesome y parte de una línea evolutiva creada por los desarroladores de las suckless tools, un conjunto de herramientas que están pensadas para ofrecerle mayor usabilidad a usuarios avanzados. Si conocen dmenu, y saben de lo que hablo.

En contra: Personalmente no lo he probado, así que no tengo queja. La gente habla muy bien de él.
Notas: Dénse una vuelta por los cuarteles de Suckless para que vean lo que están haciendo.

Window Manager From Scratch

Configuración: Archivo de configuración propio

A favor: Soporta varias de las características que normalmente sólo pueden ofrecer los gestores programables, como botones, bordes con título e iconos y tiene una comunidad fiel, que se expande rápidamente.

En contra: Poca documentación en nuestra lengua.

Notas: Su nombre parece contradictorio, pues no hace pensar en que construimos nuestro entorno, pero sólo lo configuramos. Es parecido a como se define Awesome, un framework para la creación de nuestros propios gestores de ventanas, pero este si que lo cumple.

Spectrwm (antes scrotwm)

Configuración: Archivo de configuración propio

A favor: Funciona bien desde el comienzo y el archivo de configuración está comentado lo suficiente para configurarlo. Tiene una barra propia, que puede mostrar la salida de un comando en específico. Es rápido.

En contra: Algunos lo pueden sentir un poco vacío, pues se extrañan algunas cosas que en otros gestores se pueden lograr al programar algo sencillo.

Notas: Si todavía se preguntan por qué el cambio de nombre, intenten leer el nombre anterior de corrido, como les parezca. A mucha gente también se le figuraba la referencia a cierta parte de la anatomía masculina más sureña.

StumpWM

Configuración: Common Lisp

A favor: Otro que usa lenguaje funcional como configuración. Útil para los que están acostumbrados al Emacs Lisp.

En contra: No lo he probado. así que no sé. En parte por que no sé nada de Lisp.

Notas: Nada que notar, más que la curiosa imagen de un feliz usuario de StumpWM, uno muy feliz al parecer:

¿No hay más?

Por supuesto que sí, pero no las conozco o se me han pasado en esta guía. Es bastante probable que el lenguaje de programación que estés aprendiendo (digo, si lo estás haciendo) ya haya sido usado como configuración de alguno. Pero aunque todos son producto del diseño y no de la naturaleza, no significa que no estén sujetos a la carrera por la supervivencia, y por lo tanto hay muchos proyectos abandonados o muertos por que no tuvieron a quién servirle y se han perdido en el tiempo.

Otras consideraciones y respuestas rápidas

  1.  ¿Por qué rxvt-unicode? urxvt (es invocada así, pero el paquete se llama rxvt-unicode) es un emulador de terminal que soporta 256 colores, extensiones por Perl, pestañas y demás; muy útil por qué las aplicaciones de terminal usan los esquemas de colores, fácilmente configurables en urxvt, para presentarse en pantalla; haciendo mucho más fácil la tarea de tener una interfaz unificada y bonita.
  2. ¿Cómo hago las maravillas de DotShare.it? Si conoces esta página ya te habrás dado una vuelta por los archivos de configuración de la altruista gente que allí las pone, aunque parezca que lo hagan por presumir. Todo es cuestión de revisarlos, aprender de ellos, implementar eso en tu gestor de ventanas y cruzar los dedos para que funcione, sobre todo si no sabes lo que haces.
  3.  ¿Cómo cambió entre escritorios?Modifica el archivo
    ~/.xinitrc

    para que quede una y sólo una línea que diga

    exec inserte-aquí-su-wm

    Si estás en Arch a lo mejor ya lo has hecho, solamente debes cambiar la línea, digamos,

    exec startxfce4

    a

    exec xmonad

    Esto funciona con el comando startx o con slim. Si ya tienes una pantalla de acceso como GDM o KDM ya traen algo para cambiar sesiones.

  4.  ¿Es necesario el editor de texto? Pero por supuesto que sí. Si se ejecuta en terminal mejor, por que tiling se llevan bien con la terminal. Si no sabes cual, puedes empezar con nano. Otros que se ejecutan sobre la terminal son Vi, Vim e Emacs, pero puedes necesitar algo de entrenamiento para manejarlos adecuadamente. Todos se invocan por su nombre, no hay problema en eso.
  5.  ¿Y las configuraciones? A su debido tiempo. Además yo no puedo proveerles las configuraciones que ustedes buscan para cada gestor, simplemente por que no puedo usarlos todos.

Conclusiones

Hay de donde escoger. Ahora sí, la próxima vez que nos veamos, haré una descripción exhaustiva de un archivo xmonad.hs básico, generalista y demás, sobre un Debian estable. Nos vemos.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Oscar Silva dijo

    my bueno, a la espera del sgte. post 😉

  2.   AurosZx dijo

    Hmm, interesante. Se algo de Lua, así que quizás pruebe Awesome 🙂

    1.    anti dijo

      Lo bueno es que Awesome te lo encuentras en casi todas las distribuciones, incluso Debian estable

      1.    AurosZx dijo

        Bien, ya lo probé. No luce difícil, pero no es lo que busco 😛

  3.   msx dijo

    Soyez le premier!!

    Gran artículo man, +1. La mayoría de los hackers de Google -y en general- usan Xmonad pero como bien decís es un lenguaje alienígena, tengo que sentarme con tranquilidad a repasarlo, hay un buen tutorial acá: http://www.learnhaskell.com; también el tema del Glasgow compiler no es menos, si no usás Haskell a diario o sos muy fanático de Xmonad hay que bajarse esa bestia de 700mb sólo para tener un entorno minimalista, jaja!

    Como WM interesante y fácil de usar agregaría a tu lista i3wm (www.i3wm.org), un entorno muy completo, con barra de estado integrada (un plus para no perder tiempo configurando nada), un archivo de configuración hiper sencillo y muy fácil de customizar al estilo los .ini de Windows y además está en pleno desarrollo.
    Como WM curioso: DSWM (Deep Space WM), basado en StumpWM y enfocado a fans de Emacs… yo soy fan de Emacs, pero no hubo onda con DSWM xD

    Por ahora y después de probar todos los que nombrás en la lista me vengo quedando con Awesome 3 ya que como no sufrí el cambio brusco de configuración hasta ahora nunca tuve problemas con este WM (siempre usando la última versión) y lo encuentro potente y versátil, casi perfecto para reemplazar a un escritorio completo como KDE SC.
    dwm me gusta y lo usé mucho tiempo, pero al ser super minimalista encuentro que le faltan muchas cosas de las que uso; otro WM del que era fan es Musca, actualmente abandonado, aunque lo han forkeado manteniendo bastante de su escencia, no obstante el manejo que hacen Awesome e i3 de la barra de status es claramente superior.

    El que me gustó también es Subtle – y aunque no programo en Ruby es un plus porque me encanta este lenguaje, ni bien tenga tiempo lo voy a probar en profundidad, me parece que es más liviano que Awesome y por lo que dicen en el proyecto pretenden darle la misma funcionalidad.

    Un tip: si usan WM o gestores tipo *box prueben Compton -X compositor fork de xcompmgr-dana ya comentado en este blog-, es como mínimo _excelente_ (no recuerdo quien posteó el artículo original pero gracias!)

    1.    elav dijo

      casi perfecto para reemplazar a un escritorio completo como KDE SC.

      ¬¬ ¿En serio?

      1.    anti dijo

        Quizá no a *todo* KDE, pero sí a Kwin. Integrarlo en KDE ha de ser estupendo

      2.    msx dijo

        «¬¬ ¿En serio?»
        Jaja! No textual, claro!
        Pero Awesome es muy completo y anda muy bien.

        Mirá, KDE SC 4.9.1 sobre Arch Linux x86_64, usando el kernel Liquorix 3.5.4 y el optimizador de acceso al CPU -basado en cgroups- Ulatencyd + algunos pequeños tweaks extra (en el /etc/sysctl.conf y algunos lugares más) anda tan bien pero TAN, TAN TAN TAN TAAAAAAN BIEN que me parece un crimen no usarlo, es una seda, me impresiona! XD
        Además la gestión de energía de KDE SC 4.9.1 merece un apartado propio: está tan bien optimizado el uso de recursos por parte del entorno que el ahorro de energía -hablando siempre de usar la máquina on the road con batería- que te puede dar usar un WM como Awesome o dwm (los dos que más usé) es ínfimo, WOW! KDE SC 4.9.1 tiene un consumo de batería ultra-bajo! Y estamos hablando de un escritorio FULL/FULL con características PREMIUM contra un gestor de ventanas con traybar incorporado o_O

        Además hay una cuestión muy poco conocida por el público general: mientras que GNOME siempre tuvo un costado más social orientado a la usabilidad e integración de sus usuarios haciendo hincapié en soporte de idiomas y dispositivos de entrada de todo tipo, KDE fue territorio de los usuarios que buscaban algo más de un entorno gráfico y por que no de muchos hackers y eso se ve reflejado en varios ‘detalles’ casi escondidos, por ejemplo:
        1. vamos a la vista general de escritorios. En mi caso la tengo configurada de dos formas:
        1a. dentro de System Settings vamos a Workspace Behviour (supongo que en castellano será Comportamiento del Espacio de Trabajo o algo similar), allí elegimos Screen Edges (Bordes de Pantalla?) y luego en cualquiera de los bordes de pantalla seleccionamos el efecto Destkop Grid (yo lo tengo en el borde inferior derecho)
        1b. en la pantalla general de System Sets. vamos a Shortcuts and Gestores (supongo que algo así como Gestos y atajos de teclado) luego Global Keyboard Shortcuts (Atajos de teclado globales) y finalmente en el combo KDE Component buscamos KWin. Ahora sólamente queda bindear el efecto Show Desktop Grid (creo que en español lo traducen como Mostrar rejilla de escritorio o algo así) a un atajo que nos resulte cómodo (en mi caso Meta + s).
        A lo que iba: hay un detalle muy interesante para cuando trabajamos con múltiples escritorios.
        Al accionar la vista Desktop Grid no sólo vemos todos los escritorios virtuales que tenemos habilitados sino también todas las aplicaciones que hay en c/u puediendo arrastrarlas entre escritorios.
        Ahora bien, si hacemos click derecho en cualquiera de estas aplicaciones veremos que automáticamente aparece la misma ventana espejada en cada uno de los escritorios virtuales, de forma que trabajemos en el escritorio que trabajemos siempre vamos a contar con dicha ventana (osea aplicación)… pero esto no termina acá! Si volvemos a hacer right-click en la aplicación que espejamos previamente pero en otro escritorio la aplicación se desespeja automáticamente quedando sólamente la instancia de la misma en el escritorio en el que le hicimos el click derecho.

        Como este ejemplo hay montones que no están documentados y que vamos descubriendo con el tiempo mientras usamos KDE SC.

    2.    Xykyz dijo

      Tu enlace de Haskell lleva a una página sobre .NET. No será http://learnyouahaskell.com el enlace al que te referías?

      Quiźa pruebe XMonad, ya que sé algo de Haskell y puede ser una buena manera de aplicarlo. Del resto solo he probado i3 y Awesome. i3 se me hizo complicado, o al menos más complicado que Awesome..

      1.    msx dijo

        Exacto gracias, lo escribí de memoria. Una pregunta: cuando decís «Quiźa pruebe XMonad, ya que sé algo de Haskell y puede ser una buena manera de aplicarlo. Del resto solo he probado i3 y Awesome. i3 se me hizo complicado, o al menos más complicado que Awesome.» hablás en serio o estás trolleando? O venís de otro planeta nomás y por eso usás Haskell, para no extrañar tu tierra natal!?
        i3 es HYPER sencillo, de hecho supongo que bien puede ser el WM de entrada para todos aquellos que quieran algo fácil y armado de movida, listo para usar. Se configura con un solo archivo, ~/.i3/config donde la configuración es del tipo:
        [variable] = [valor]
        y donde tenés todas las posibilidades de configuración en la wiki de i3 para cambiar tipo de letra, elegir extremo de la pantalla en que anclar la barra de status, etc. De hecho la barra de estatus viene ya configurada para mostrar info de todo tipo: batería, conexiones de red de entrada y salida de todas las NICs asociadas, fecha y hora, un system tray donde aparecen los íconos de bandeja que abren otras aplicaciones (por ejemplo KWallet), etc.

        Pero claro, si programás Haskell supongo que es lógico que algo sencillo te parezca complicado, jaja!

        1.    msx dijo

          Jaj, que bolú, le mandé un HYPER gringo con y 😛
          Esto no lo hagan en sus casa niños, en español usamos la i para HIPER =)

        2.    Xykyz dijo

          la sencillez de i3 se me hizo compleja xD no lo usé suficiente para acomodarme porque descubrí awesome poco después .
          Y no estoy trolleando, conozco Haskell y la programación funcional 😛

    3.    anti dijo

      Hay una versión en español y de hecho es la que uso yo, está en http://aprendehaskell.es/
      Espero estar mejorando como redactor, en el anterior post tuve errores fatales.Como dije, algunos no los puse porque no los conozco. Saludos.

    4.    anti dijo

      Este sí que es un comentario muy largo, amigo.
      Algunos no los puse por que no los conozco, entonces ponerlos sólo sería un despropósito por que no puedo informar nada de elllos.
      En relación con la composición, hay gente que cree que es antinatural combinar tiling y transparencias. No sé el motivo, pero supongo que obedece a razones estílistiicas y de consumo, por que estos gestores se ocupan más a menudo sobre hardware más o menos viejo.
      De todas maneras, gracias por comentar. 😀

      1.    msx dijo

        «En relación con la composición, hay gente que cree que es antinatural combinar tiling y transparencias.»
        Claro, mi respuesta en estos casos es siempre la misma: FUCK OFF.
        Es como cuando explicás un workaround para una situación en particular que involucra un dirty hack, un ugly, really awful hack y enseguida todas las putitas histéricas saltan como leche hervida diciendo que no, que eso está mal, que es incorrecto… mi respuesta: que la chupen.

        Si bien es cierto que un código prolijo y ordenado hace mucho más fácil mantenerlo y que cuanto más vanilla es un sistema y menos hacks le hiciste es más fácil que otro que no conoce tus hacks no haga cagadas, la realidad es que si sos un n00b seguramente sentirás pánico de tocar algo que «no debés tocar» (WTF con ese concepto apocalíptico man, tocá, rompé, aprendé y luego hackeá), cuando sos r00t o por lo menos _conocés tu sistema_ (KNOW YOUR FUCKING SYSTEM) podés hacer y debés hacer virtualmente lo que quieras, lo que se te plazca y como se te plazca hacerlo.
        Con el compositor es lo mismo: todo aquel que se ponga loca y se escandalice por usar un WM con compositor que vaya al psiquiatra porque no está bien de la cabeza.

        Hay pocas cosas que desprecio más que a «puristas» (que generalmente son los que menos saben) que se dedican a establecer reglas y que tienen menos creatividad que un ladrillo hueco y jamás podrán salir del molde en que cayeron.

        Know your system => do whatever you like _your way_.

        1.    anti dijo

          No es para tanto. Se supone que estos gestores son mínimos, así que ponerles composición sería recargarlos. Además, se ven bastante bien las terminales sin transparencia.
          Como sea, a mí me da igual; aunque normalmente en los tiling no mantengo composición.

  4.   socrates_xD dijo

    Utilizo Awesome, y la verdad es que es simplemente «awesome». Pero por la lista que pones parece que el mejor es Subtle (si sabes inglés), principalmente porque Ruby es un lenguaje sencillo de aprender así como Python. De hecho, es entendible lo que pone un archivo .rb con sólo darle una ojeada. Me entraron ganas de probarlo 🙂

    Un wm que se configure con Python es qtile –> http://qtile.org/
    Lo que no me gustó es que parece que su archivo de configuración no es tan personalizable como debería. Tendrías que tocar el código fuente del programa para personalizarlo a tu propio gusto para poner, por ejemplo, un esquema de colores.

    1.    msx dijo

      Utilizo Awesome, y la verdad es que es simplemente “awesome”.

      Totalmente! Awesome es awesome, tal cual.

  5.   conandoel dijo

    Excelente post, estoy usando subtle y awesome y la verdad que los 2 me encantan, pero subtle es mas sencillo de configurar si no tienen ni idea de ruby, en mi caso que no programo en nada y no conozco ni un lenguaje me resulto mas facil editar y configurar a mi gusto subtle que awesome. Salutes!!!

  6.   ivanovich dijo

    Soy un amante de Linux – NO soy programador – Soy un Simple Aprendiz – actualmente aprendo a manejar i3_wm y con un golpe de suerte (aprendiendo a navegar con uzbl-browser-en su barra de estado descubri el nombre del teclado util para modificar el preinstalado en i3_wm (Mod5+intro)) logre configurar » ~/.i3/config » para activar una secuencia de teclado amigable, y asi activar la terminal…, que mayor alegria tuve…, fue como dar un paso en la Luna, buen blog amigo — 🙂 (11 – 04 – 2013 / Chile – Penco – VIII Region)