Cómo instalar y configurar bspwm en Linux

Binary Space Partitioning Window Manager (bspwm) es un potente 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.

Partición del espacio binario, explicada

La partición del 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 para ordenar 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 trabaja con nodos. En la práctica, cuando crea una ventana en un escritorio vacío, bspwm creará un único nodo para colocar esa ventana. Puede considerar ese nodo como un nodo hoja. Pero cuando crea una ventana adicional en ese escritorio, ese nodo hoja se convertirá en un nodo raíz y bspwm creará dos nuevos nodos 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 respectivos nodos raíz.

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

Combinaciones de teclas y barras de estado

Es importante tener en cuenta que bspwm sólo gestiona ventanas. Esto significa que cualquier otra función que no esté relacionada con la gestión de Windows 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 utilizar combinaciones de teclas en bspwm, los desarrolladores crearon un programa separado llamado Simple X Hotkey Daemon (sxhkd) que solo administra combinaciones de teclas. Para la barra de estado, sin embargo, el usuario puedecomo polibar y barra de limón.

Lea también:

Instalación de bspwm y sxhkd

Instalar bspwm y sxhkd es relativamente sencillo. Ambos programas también están disponibles en la mayoría de los repositorios de Linux. Por ejemplo, para instalarlos en Debian y Ubuntu puedes hacerlo usandoapt:

sudo apt install bspwm sxhkd

En Arch Linux, puedes usarpacman:

sudo pacman -Syu bspwm sxhkd

En Fedora, puedes usardnf:

sudo dnf install bspwm sxhkd

Para Void Linux, puedes usarxbps:

sudo xbps-install bspwm sxhkd

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

bspc: El controlador universal para bspwm

Para utilizar bspwm sólo 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 Windows y configurar su comportamiento son solo comandos bspc.

Preparando el 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 forma 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.

Ahora, el archivo bspwmrc se puede escribir en cualquier idioma que desee, siempre que sea ejecutable. Esto significa que primero necesitaríamos configurar las propiedades del 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 cualquier persona de 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 podremos comenzar a escribir nuestra configuración.

Configurando bspwm

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

#!/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 establecer 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 bspc y regla bspc

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

  • ancho_bordedetermina el grosor, en píxeles, del ancho del borde de las ventanas.
  • espacio_ventanase ocupa de la cantidad de espacios, en píxeles, alrededor de las ventanas.
  • relación_divisiónDetermina la relación entre los dos nodos de las hojas cuando se dividen.
  • foco_sigue_punteroestablece si el puntero del mouse puede controlar qué ventana recibe el foco.
  • punto_editardetermina la tecla del teclado para cambiar el tamaño de las ventanas usando el mouse.
  • esquema_automáticoDetermina 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 obliga 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 que la ventana se centre en Gimp cuando se carga.

Con eso, ahora tenemos una configuración básica para bspwm. Es importante señalar, sin embargo, que las opciones parabspc configybpsc rulees extenso. Si quieres saber más sobre cómo ajustar tu bspwmrc, puedes consultar GithubDocumentación de Githubpara tener una lista completa de todas las configuraciones posibles.

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

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

Preparando el 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. Podemos hacer esto escribiendo el siguiente comando:

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

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.

Configurando sxhkd

sxhkd reconoce combinaciones de teclas en un patrón específico. Primero solicita una clave modificadora. Esto puede serTodo,Súper,HiperoControl. Después de eso, debes proporcionar una clave normal para complementar tu clave modificadora. Luego, se puede combinar para que sea una combinación de teclas agregando un signo "+" entre esas dos teclas.

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

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

Una vez hecho esto, debes presionarIngresaryPestañapara crear una línea con sangría 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 este:

# 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}'

Explicando la sintaxis de combinación de teclas

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

Por ejemplo, varios comandos en 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 presionamosTodo+Cambio+qen el teclado el comando:bspc quitse ejecuta. Sin embargo, presionandoTodo+Cambio+Rejecutarábspc wm -r.

También podemos evitar la necesidad de proporcionar claves adicionales al realizar la bifurcación. Considere este ejemplo:

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

Este comando se ocupa del desove de la terminal. También intercambia ventanas en el escritorio. Puedo hacer el primer comando presionandoTodo+Ingresary puedo hacer el segundo comando presionandoTodo+Cambio+Ingresar.

Esto se debe a que el carácter de subrayado actúa como paso 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 única ramificación. Considere este ejemplo:

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

Este comando se ocupa del cambio de escritorios. También gestiona el movimiento de las ventanas dentro de esos escritorios. El primer comando se ejecuta cuando presionasTodo+1–0mientras que el segundo se hace con elCambiotecla modificadora.

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

Finalizando la instalación

Con esto, 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 hacer esto directamente a través de Xorg o mediante su administrador de pantalla.

Ejecutando bspwm usando xinitrc

La forma más sencilla 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, sólo necesita agregar lo siguiente en la última línea de su .xinitrc:

exec bspwm

Ejecutando 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.

¡Felicidades! Ahora tiene una instalación funcional de bspwm. Ahora puede personalizar aún más su escritorio modificando sus archivos de configuración e instalando bases de terceros. Aquí hay algunospara inspirarte.

Lea también:

Preguntas frecuentes

1. ¿Por qué mi pantalla aparece en negro cuando inicié sesión por primera vez?

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

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

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 carga Xorg y que no se esté ejecutando como un proceso en segundo plano.