- ENTRADA 050 -

Probando Spectrwm


La srta. Skarbek es la mejor para esta faena, se mueve como un espectro


--- Fecha: mié 28 ago 2024 23:00:37 CEST

Spectrwm es un Tiling Manager ligero, simple y rápido que llevo probando un par de días. Voy a dejar aquí documentada su configuración solo para salvar mis neuronas y ayudar a otros en su viaje.


Si no sabes si los Tiling Managers son para tí, te recomiendo que leas mi anterior artículo:


Tiling Managers, ¿son para mí?


Si la respuesta es "SI", puedes instalar spectrwm (solo son 422 Kb).


Preparación


Cuando instales Spectrwm es muy recomendable instalar algunas cosas más: xterm, xprop y acpi


NOTA: Yo uso arranque por shell, no uso un gestor tipo lightdm o slim, así que yo edito mi .xinitrc. Si usas un gestor de sesiones, modifica .xsession.


Entonces, edito .xinitrc para poner "exec spectrwm" y edito .bash_profile para comentar la linea "startx". Esto lo hago porque voy a probar cosas, y si algo no va y Spectrwm no arranca, entrará en bucle. Cuando todo vaya bien, lo volveré a descomentar.


Cuando abres Spectrwm ves el desierto. Solo una barra ínfima arriba y nada más.


- ¿Qué hago?- dices mientras sientes los sudores de la muerte. No hay problema. Pulsa Tecla Win+Intro y se abrirá un terminal xterm


Si esto no va, abre sesion como root en una nueva shell con CTRL+ALT+F2 o F3 o F4, te logueas como root y pones pkill spectrwm, o killall spectrwm y sales.


NOTA: Te recomiendo que una vez instalado y antes de entrar, copies el archvio de configuración spectrwm.conf a tu HOME como ~/.spectrwm.conf (ojo con el punto inicial). De esta forma tienes un archivo inicial para trabajar en él.


Dejaré en mi git los dotfiles de Spectrwm y Polybar por si les queréis echar un ojo.


Git Moribundo



Al lío


Una de las opciones que me hizo decantarme por este TM es que todo se configura desde un archivo de texto fácil de entender, ya sabes, palabras en inglés, colores en hexadecimal y poco más.

Lo primero que vas a necesitar es saber qué tecla vas a usar como MOD, es decir, la que te va a dar acceso a los atajos.


Nota: Los atajos de teclado usan las teclas Mod1 (Alt) y Mod4 (tecla win). Yo usaré la tecla MOD en Mod4


No voy a comentar todo el archivo de configuración, para eso están las páginas man y mi git que puse arriba. Puedes encontrar la página man por web aquí:


Página man Spectrwm


Cuando he configurado Spectrwm me he topado con algunas dificultades que no he sabido cómo encontrar en las páginas man, y he tenido que bucear mucho por barrios de mala muerte XD


1. La barra


Una de las cosas que no me ha gustado mucho es la barra minimalista que trae, muy minimalista. Puedes poner tint2, polybar, lemonbar, i3blocks, o la que quieras. Yo usaré polybar.

Para quitar la barra predeterminada y poner polybar hay 2 entradas y se han de modificar las 2, no usa sola como me pasaba a mi, esto es desactivar una (0) y activar la otra:



Aquí ya te toca tener configurada polybar, configurarla de cero o copiarla de mi git.


Bien, ya tienes una barra con la info necesaria. Yo activé un tray para que muestre los iconos de udiskie y de algunos programas como deadbeef. Sigo.


2. El foco


Otra de las cosas que odio es que el foco sea automático. Te dispones a escribir, sueltas el ratón y el puntero se va a la ventana de al lado. Tu escribes y cuando miras la pantalla no has escrito nada por que se ha dado foco a una ventana que pasa de tu escritura. Para cambiarlo a manual:



3. Puntero


Otra cosa que por defecto hace Spectrwm es que cuando tienes varias ventanas y cierras una, el puntero se va de forma predeterminada al centro de la ventana cercana anterior. A mi me gusta que el puntero se quede donde lo dejé:



Más o menos todo está como quiero. Ahora toca editar cada uno de los atajos de teclado. Realmente, para un uso normal, con unos 10 tienes de sobra, no necesitarás la gran cantidad de parámetros que hay.

Yo he usado la tecla Mod4 para el uso de Spectrwm, pero he mantenido la tecla Mod1 para el uso más o menos "estándar" de GNU/Linux, es decir, ALt+F2 para ejecutar, Alt+F4 para cerrar, etc. Aquí eres libre de configurar el entorno como quieras.


4. Colores en hexadecimal


Si has lidiado antes con archivos de configuración, te sonará la forma de referirse a los colores así: #ffa900 Spectrwm usa un sistema similar: rgb:ff/a9/00


En el fondo es lo mismo:


rgb:ff/a9/00 -> #ffa900


¿Cómo saber los colores en hexadecimal? Yo abro Gimp y me voy a selección de color, y ahí aparece la codificación. Ve eligiendo los colores que te gustan y anotándolos.



Quirks


Y entramos en el mundo de los quirks, no del teniente de Star Trek, si no de una opción muy pero que muy útil.

El funcionamiento de Spectrwm está pensado con un modo de trabajo en mente. Si ese modo no te gusta, se puede cambiar, pero no basta poner a 0 un parámetro como hasta ahora, esto es más laborioso (que no complicado).


Spectrwm te da la opción de "forzar" (quirk) ventanas que tienen que ser tratadas de manera especial, como por ejemplo, popups de navegadores, programas de pantalla completa, etc. ¿Te imaginas que se abra una ventana en mosaico para mostrar un pop-up de Firefox con la descarga, o que si la tienes en pantalla completa abra el pop-up detrás y no la veas?


Los quirks básicos que se usan en Spectrwm son estos (de la página man), pero hay más:




Funcionamiento de los quirks


Puede parecer un poco complicado, pero realmente es fácil. La sintaxis es así:


quirk[<nombre>:<clase>] = <quirk> + <quirk> + <quirk>

Nombre y clase especifican el programa al que quieres aplicar el quirk. Por ejemplo, dejamos que mplayer funcione libremente:


quirk[MPlayer:xv] = FLOAT + FULLSCREEN

¿Como obtengo nombre y clase? No puedes usar el nombre que quieras, si no que has de usar el que el sistema reconoce para el programa que lanzas, y para eso usaré el programilla xprop:


Primero lanzo por ejemplo Firefox y lanzo en consola xprop. Aparece una ventanita con un recuadro y el cursor se vuelve una cruz. Señalo la ventana de Firefox y xprop me dice lo que quiero saber. Mejor le echamos un ojo:


$ xprop | grep WM_CLASS

WM_CLASS(STRING) = "Navigator", "Firefox"

CUIDADO !!! Como si xprop fuese un señor inglés, hay que darle la vuelta a lo que dice:



De forma predetermina los pop-ups de los navegadores suelen comportarse bien ya que Spectrwm conoce su NET_WM_WINDOW y genera quirks automáticamente. Yo no he tenido problemas, pero si no, minimiza Firefox y quedará libre el pop-up, y haz la misma operación. Luego crea el quirk:



Hay un quirk que mola mucho, y es que si quieres que Gimp, por ejemplo, se abra siempre en el espacio de escritorio 4, solo añade esto: WS[4] y listo.


NOTA: La página man lo explica más detalladamente


Comportamiento extraño al abrir ciertos programas


Por defecto, si tienes un terminal abierto en el espacio de trabajo 2, y cambias al 4 y abres otro terminal, verás que no se abre ninguno. En realidad se ha abierto donde se abrió el primero, y tendrás que volver al espacio 2 para poder verlo. Esto es muy incómodo, y también pasa con algunos otros programas.


De momento no parece de fácil solución por cómo los sistemas UNIX manejan las variables de asociación mediante setenv spawn(). Para mucha gente no parece ser un problema, según he leído en foros. Los creadores están contentos con esta forma de funcionar, pero a mucha otra gente no le gusta este comportamiento y los desarrolladores tienen problemas para cambiarlo.


Para solucionar esto hago un quirk para terminator, que es mi terminal:



IGNORESPAWNWS: Similar a comentar la llamada setenv en spawn(), pero a nivel de ventana, no de código fuente.

IGNOREPID: Ignora el espacio de trabajo de cualquier ventana existente que pertenezca al mismo proceso.


Vale, pero resulta que me pasa con varios programas. Puedes hacer los quirks que necesites, pero si el comportamiento es con todos los programas que usas, lo mejor es crear una regla regular para que las ventanas nuevas, no transitorias, aparezcan en el espacio de trabajo actual:



Fuente oficial


Hasta aquí este primer artículo sobre Spectrwm, primer y puede que último, quizá ya está todo explicado (recuerda que sus desarrolladores dicen de Spectrwm que es simple y minimalista).



Tags #spectrwm #wm #tiling #manager



◄ Listado de noticias

◄◄ Inicio



/blog/