Bspwm 00 Featured Image

Cómo instalar y configurar bspwm en Linux

Binary Space Partitioning Window Manager (bspwm) es un poderoso administrador de ventanas minimalista para Linux. Es altamente configurable y propone un enfoque innovador para la gestión de ventanas. Bspwm está escrito en C y se puede configurar en cualquier idioma. Bspwm es el epítome de la personalización del usuario en los administradores de ventanas. Esto lo hace atractivo para usuarios avanzados y aficionados que estén interesados ​​en aprender a crear su propio flujo de trabajo único.

Particionamiento de espacio binario, explicado

La partición de espacio binario es la idea de que las ventanas de un escritorio se pueden representar como hojas en un árbol binario completo. Un árbol binario completo es una estructura de ordenamiento de la información utilizando nodos jerárquicos. Cualquier información dentro de ese árbol se ordena de dos en dos con un nodo raíz que siempre contiene dos nodos.

Bspwm 01 Nodos raíz

Bspwm trabaja con nodos. En la práctica, cuando crea una ventana en un escritorio vacío, bspwm creará un solo nodo para colocar esa ventana. Puede pensar en ese nodo como un nodo de hoja. Pero cuando crea una ventana adicional en ese escritorio, ese nodo de hoja se convertirá en un nodo raíz y bspwm creará dos nuevos nodos de hoja adjuntos. Luego coloca la ventana actual y la recién creada en esos nodos hoja.

Cualquier nueva ventana que se cree después de esto ahora se asociará con cualquiera de esos nodos hoja, convirtiéndolos en sus propios nodos raíz respectivos.

Ejemplo de ventana Bspwm 02

Organizar las ventanas de esta manera crea una jerarquía clara dentro del escritorio. Está claro qué nodos hoja se generaron primero y cuáles son los que pertenecen a un grupo particular de nodos raíz. Esto es útil al crear reglas de comportamiento personalizadas para ventanas y diseños de ventanas específicos.

Bspwm 03 Ventana Ejemplo 2

Combinaciones de teclas y barras de estado

Es importante tener en cuenta que bspwm solo administra ventanas. Esto significa que cualquier otra función que no esté relacionada con la gestión de ventanas no está incluida en el paquete bspwm. Esto incluye la capacidad de vincular teclas a funciones y también la capacidad de mostrar una barra de estado.

Para usar combinaciones de teclas en bspwm, los desarrolladores crearon un programa separado llamado Simple X Hotkey Daemon (sxhkd) que solo administra combinaciones de teclas. Sin embargo, para la barra de estado, el usuario puede instalar una variedad de aplicaciones de terceros, como polybar y lemonbar.

Instalación de bspwm y sxhkd

La instalación de bspwm y sxhkd es relativamente sencilla. Ambos programas también están disponibles en la mayoría de los repositorios de Linux. Por ejemplo, para instalarlos en Debian y Ubuntu, puede hacerlo usando apt:

sudo apt install bspwm sxhkd

En Arch Linux, puedes usar pacman:

sudo pacman -Syu bspwm sxhkd

En Fedora, puede usar dnf:

sudo dnf install bspwm sxhkd

Para Void Linux, puede usar xbps:

sudo xbps-install bspwm sxhkd

En mi caso, lo instalaré en mi sistema Void Linux, por lo que usaré XBPS.

Bspwm 04 Instalación

bspc: el controlador universal para bspwm

Para usar bspwm solo necesitamos interactuar con un programa: bspc. Es una poderosa utilidad que puede controlar y configurar el comportamiento de bspwm. De hecho, todos los comandos que usaremos para manipular ventanas y configurar su comportamiento son solo comandos bspc.

Preparación del archivo de configuración para bspwm

Para comenzar a configurar bspwm, primero debemos crear un archivo de configuración. Aquí es donde bspwm buscará los comandos bspc que ejecutará cuando se ejecute por primera vez. De manera predeterminada, bspwm buscará el archivo “/home/$USER/.config/bspwm/bspwmrc”. Para crear ese archivo puedes escribir:

mkdir -p /home/$USER/.config/bspwm && touch /home/$USER/.config/bspwm/bspwmrc

Este comando creará la carpeta bspwm en “/home/$USER/.config/” y también creará el archivo bspwmrc dentro de esa carpeta.

Bspwm 05 Bspwm Ls

Ahora, el archivo bspwmrc se puede escribir en cualquier idioma que desee siempre que sea ejecutable. Esto significa que primero tendríamos que configurar sus propiedades de archivo para que sean tales. Esto lo podemos hacer escribiendo lo siguiente:

sudo chmod 774 /home/$USER/.config/bspwm/bspwmrc

Esto asegurará que nosotros y cualquiera en nuestro grupo de usuarios podamos ejecutar este archivo.

Después de eso, ahora podemos abrir el archivo bspwmrc. En mi caso, usaré vim para editar mi archivo de configuración. Para ello escribiré lo siguiente:

vim /home/$USER/.config/bspwm/bspwmrc

Esto abrirá un archivo vacío y ahora podemos comenzar a escribir nuestra configuración.

Bspwm 06 Configuración vacía

Configuración de bspwm

Una configuración básica para bspwm se parece a esto:

#!/bin/bash
 
xsetroot -cursor_name left_ptr
sxhkd &
 
bspc config border_width	2
bspc config window_gap		0
 
bspc config split_ratio		0.62
bspc config focus_follows_pointer	true
bspc config pointer_modifier	mod1
 
bspc config automatic_scheme	spiral
 
bspc rule -a Chromium desktop='^2'
bspc rule -a Gimp desktop='^8' state=floating follow=on

Como lo indica el shebang en la primera línea, esta configuración está escrita en Bash. Los primeros comandos son los programas que quería ejecutar antes de configurar cualquier configuración para bspwm.

El primero, xsetroot, cambia el cursor X predeterminado al puntero izquierdo más familiar. El segundo inicializa nuestro demonio de teclas de acceso rápido en segundo plano.

Configuración de bspc y regla de bspc

Los siguientes comandos en la configuración son específicos de bspc. bspc config se ocupa de la configuración general del gestor de ventanas. Incluye ambientes tanto estéticos como funcionales.

Bspwm 07 Bspc Configuración 1

  • ancho del borde determina el grosor, en píxeles, del ancho del borde de las ventanas.
  • ventana_brecha se ocupa de la cantidad de espacios, en píxeles, alrededor de las ventanas.
  • proporción_dividida determina la relación entre los dos nodos hoja cuando se dividen.
  • focus_follows_pointer establece si el puntero del mouse puede controlar qué ventana recibe el foco.
  • puntero_modificador determina la tecla del teclado para cambiar el tamaño de las ventanas con el ratón.
  • esquema_automatico determina el diseño de las ventanas cuando se dividen en modo automático.

La regla bspc, por otro lado, se ocupa del comportamiento de los programas cuando se abren en bspwm.

  • La primera regla en nuestra configuración de ejemplo fuerza a Chromium a ejecutarse en el segundo escritorio.
  • La segunda regla de nuestro ejemplo obliga a Gimp a ejecutarse en el octavo escritorio. También obliga a Gimp a ejecutarse en un estado flotante en lugar del mosaico predeterminado. Por último, fuerza el enfoque de la ventana en Gimp cuando se carga.

Con eso, ahora tenemos una configuración básica para bspwm. Es importante notar, sin embargo, que las opciones para bspc config y bpsc rule es extenso Si desea obtener más información sobre cómo ajustar su bspwmrc, puede consultar el Github Documentación de Github para tener una lista completa de todas las configuraciones posibles.

sxhkd: la utilidad de combinación de teclas para bspwm

sxhkd es un programa simple. Escucha los eventos de entrada del teclado y ejecuta comandos basados ​​en las teclas que ha presionado. Puede manejar entradas de teclas múltiples a través de acordes y tiene un archivo de configuración intuitivo que es simple y fácil de entender.

Preparación del archivo de configuración para sxhkd

Preparar el archivo de configuración para sxhkd es similar a configurar el archivo bspwmrc. Primero, necesitamos crear la carpeta y el archivo de configuración para sxhkd. Esto lo podemos hacer escribiendo el siguiente comando:

mkdir -p /home/$USER/.config/sxhkd/ && touch /home/$USER/.config/sxhkd/sxhkdrc

Bspwm 08 Sxhkd Ls

Entonces, necesitamos configurar el archivo sxhkdrc para que sea ejecutable:

sudo chmod 774 /home/$USER/.config/sxhkd/sxhkdrc

Una vez hecho esto, ahora tenemos nuestro archivo de configuración sxhkd para insertar todas nuestras combinaciones de teclas.

Configuración de sxhkd

sxhkd reconoce combinaciones de teclas en un patrón específico. Primero pide una tecla modificadora. Esto puede ser Alt, Super, Hyper o Control. Después de eso, debe proporcionar una tecla normal para complementar su tecla modificadora. Entonces, se puede combinar para ser una combinación de teclas agregando un signo «+» entre esas dos teclas.

Por lo tanto, la forma general de una combinación de teclas sxhkd se ve así:

modifier key + normal key (+ {_, additional, keys})

Una vez hecho esto, debe presionar Entrar y Tabulador para crear una línea sangrada debajo de la combinación de teclas. Después de eso, debe especificar el comando que desea ejecutar cuando se presiona la combinación de teclas.

Un archivo de configuración de ejemplo para sxhkd se parece a esto:

# make sxhkd reload its configuration files
alt + Escape
	pkill -USR1 -x sxhkd
 
# quit or restart bspwm
alt + shift + {q,r}
	bspc {quit,wm -r}
 
# create a new terminal window or swap the current one to the biggest one in the screen 
alt + {_,shift + }Return
	{st, bspc node -s biggest.local}
 
# close or kill a window
alt + {_,shift + }c
	bspc node -{k,c}
 
# change the window state
alt + {t,ctrl + t,l,f}
	bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
 
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
	bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
 
# focus or send a window to the given desktop
alt + {_,shift + }{1-9,0}
	bspc {desktop -f,node -d} '^{1-9,10}'

Explicación de la sintaxis de combinación de teclas

Como hemos discutido anteriormente, la sintaxis de combinación de teclas para sxhkd es relativamente simple. Además, sxhkd puede agrupar combinaciones de teclas y puede ejecutar comandos de bifurcación mediante el uso de acordes de teclas.

Bspwm 09 Sxhkd Configuración 1

Por ejemplo, varios comandos de esta configuración utilizan llaves. Esto nos permite asignar múltiples funciones en combinaciones de teclas similares. Considere este comando en la configuración:

alt + shift + {q,r}
	bspc {quit, wm -r}

Este comando se ocupa del cierre y reinicio de bspwm. Las llaves en la combinación de teclas coinciden con las llaves que tenemos en la línea de comando. Por lo tanto, cuando presionamos Alt + Shift + Q en el teclado el comando: bspc quit se ejecuta Sin embargo, al presionar Alt + Shift + R se ejecutará bspc wm -r.

También podemos pasar por alto la necesidad de proporcionar claves adicionales al ramificar. Considere este ejemplo:

alt + {_,shift + }Return
	{st, bspc node -s biggest.local}

Este comando se ocupa de la generación de la terminal. También intercambia ventanas en el escritorio. Puedo hacer el primer comando presionando Alt + Enter y puedo hacer el segundo comando presionando Alt + Shift + Enter.

Esto se debe a que el carácter de subrayado actúa como una transferencia para las combinaciones de teclas. Esto nos permite tener una combinación de teclas predeterminada para un comando, pero también tener una combinación de teclas «modificada» para otros comandos.

Por último, sxhkd no se limita a una sola ramificación. Considere este ejemplo:

alt + {_,shift + }{1-9,0}
	bspc {desktop -f,node -d} '^{1-9,10}'

Este comando se ocupa de la conmutación de los escritorios. También gestiona el movimiento de las ventanas dentro de esos escritorios. El primer comando se ejecuta cuando presiona Alt + 1–0 mientras que el segundo se realiza con la tecla modificadora Shift.

En esto, usamos dos llaves para configurar la clave de transferencia y los números para los escritorios. Estas dos opciones corresponden a las dos llaves en el comando debajo.

Finalización de la instalación

Con eso, ahora tenemos una comprensión básica de la configuración de bspwm y sxhkd. Lo último que debemos hacer es habilitar bspwm como nuestro administrador de ventanas. Puede hacerlo directamente a través de Xorg o a través de su administrador de pantalla.

Ejecutando bspwm usando xinitrc

La forma más fácil de inicializar bspwm es agregarlo a su archivo .xinitrc. Si está utilizando una distribución mínima de Linux, este es probablemente el método que ya está utilizando para cargar un administrador de ventanas.

Para hacer esto, solo necesita agregar lo siguiente en la última línea de su .xinitrc:

Bspwm 10 Xinitrc

Ejecutar bspwm usando un Administrador de visualización

Sin embargo, si está utilizando un escritorio con todas las funciones, como Linux Mint o Ubuntu, es posible que deba seleccionar bspwm en su pantalla de inicio de sesión.

Por ejemplo, en mi instalación de Ubuntu, tengo que hacer clic en el ícono de ajustes en la pantalla de inicio de sesión y seleccionar bspwm en el menú contextual para cargarlo.

Bspwm 11 Ubuntu

¡Felicidades! Ahora tiene una instalación funcional de bspwm. Ahora puede personalizar aún más su escritorio ajustando sus archivos de configuración e instalando muelles de terceros. Aquí hay algunos escritorios personalizados para inspirarte.

Preguntas frecuentes

1. ¿Por qué mi pantalla está negra cuando inicié sesión por primera vez?

Probablemente se deba a que aún no ha configurado un fondo de escritorio. Este suele ser el caso si está ejecutando una instalación mínima. Puede cambiar su tema de fondo utilizando un programa de visualización de imágenes como feh.

2. ¿Por qué mis combinaciones de teclas no funcionan?

Lo más probable es que esto se deba a dos cosas:

  • Las combinaciones de teclas no se cargaron porque sxhkd no se está ejecutando.
  • Hubo un error de sintaxis con sxhkdrc. El error más común que se comete al configurar sxhkd es con las sangrías. Para inicializar los comandos correctamente, debe insertar espacios de tabulación en las líneas sangradas.

3. Cuando inicié sesión en mi sistema, simplemente me devolvió al indicador del sistema.

Esto puede deberse a varias cosas. Sin embargo, la causa más común es un problema con el archivo .xinitrc. Debe asegurarse de que bspwm sea el último programa que cargue Xorg y que no se esté ejecutando como un proceso en segundo plano.

Experto Geek - Tu Guía en Tendencias Tecnológicas