bspwm (Español)
bspwm es un gestor de ventanas tipo mosaico que organiza las ventanas en un árbol binario completo. Tiene soporte para EWMH y múltiples monitores, y se configura y controla a través de mensajes.
Instalación
Instale bspwm y sxhkd, o las versiones en desarrollo: bspwm-gitAUR y sxhkd-gitAUR. sxhkd es un simple servicio de combinaciones de teclas usables dentro de X, requerido para comunicarse con bspwm y lanzar aplicaciones a elección.
Para comenzar bspwm al iniciar sesión, añada lo siguiente a ~/.xinitrc
o ~/.xprofile
(dependiendo de cómo ha escogido iniciar X):
sxhkd & exec bspwm
Configuración
Puede encontrar ejemplos de configuración en /usr/share/doc/bspwm/examples/
y en GitHub.
Cree los directorios ~/.config/bspwm/
y ~/.config/sxhkd/
, y luego copie /usr/share/doc/bspwm/examples/bspwmrc
a ~/.config/bspwm/
y /usr/share/doc/bspwm/examples/sxhkdrc
a ~/.config/sxhkd/
. En estos dos archivos se definirán las configuraciones y las combinaciones de teclas, respectivamente. Por último, haga que el archivo bspwmrc sea ejecutable, con chmod +x ~/.config/bspwm/bspwmrc
.
XDG_CONFIG_HOME="$HOME/.config"
y export XDG_CONFIG_HOME
en ~/.profile, en líneas aparte.Las opciones de configuración para cada archivo se encuentran enlistadas y descritas en bspwm(1) y sxhkd(1).
Para múltiples monitores
El ejemplo de bspwmrc configura diez escritorios para un sólo monitor:
bspc monitor -d I II III IV V VI VII VIII IX X
Esa línea tendría que ser dividida para cada monitor:
bspc monitor DVI-I-1 -d I II III IV bspc monitor DVI-I-2 -d V VI VII bspc monitor DP-1 -d VIII IX X
Para averiguar el nombre de sus monitores, puede escribir xrandr -q
o bspc query -M
en su terminal.
En el ejemplo anterior, el número total de escritorios fue limitado a diez. Esto es para que cada escritorio pueda ser invocado con 'super + {1-9,0}', de acuerdo a al ejemplo de sxhkdrc. La tecla de inicio de Windows es denominada universalmente como 'super', y es la más utilizada en el ejemplo de sxhkdrc.
Reglas
Hay dos formas de definir reglas para el comportamiento de ventanas (a partir de cd97a32).
La primera consiste en usar el comando de regla integrado (bspc), como se muestra en el ejemplo de bspwmrc:
bspc rule -a Gimp desktop=^8 follow=on state=floating bspc rule -a Chromium desktop=^2 bspc rule -a mplayer2 state=floating bspc rule -a Kupfer.py focus=on bspc rule -a Screenkey manage=off
La segunda opción consiste en usar un comando de regla externo. Esto es más complejo, pero permite diseñar reglas más específicas. Vea estos ejemplos.
Si alguna ventana desobedece a bspwmrc, asegúrese de que la regla correspondiente invoque al programa con el sinónimo ejecutable de su nombre oficial. Puede averiguar dicho sinónimo, ejecutando: xprop | grep WM_CLASS
(requiere tener xorg-xprop instalado).
Paneles
Aparte de los ejemplos de bspwmrc y de sxhkdrc, en la carpeta examples se encuentra un ejemplo para integrar un panel lemonbarAUR. Para aprender más acerca de su uso, visite nuestra entrada de lemonbar. Revise las dependencias opcionales que pueda necesitar para su configuración deseada.
El panel se ejecuta incluyendo la línea panel &
en su bspwmrc.
Para visualizar información del sistema en la barra de estado, se puede usar diversas llamadas al sistema. El siguiente ejemplo le enseñará a conseguir que su panel muestre el estado del volumen de audio:
panel_volume() { volStatus=$(amixer get Master | tail -n 1 | cut -d '[' -f 4 | sed 's/].*//g') volLevel=$(amixer get Master | tail -n 1 | cut -d '[' -f 2 | sed 's/%.*//g') # ¿está alsa en mute o no?: if [ "$volStatus" == "on" ] then echo "%{Fyellowgreen} $volLevel %{F-}" else # si está en mute, que la fuente sea roja: echo "%{Findianred} $volLevel %{F-}" fi }
Luego, verificaremos que es invocado y redirigido a $PANEL_FIFO
:
while true; do echo "S" "$(panel_volume) $(panel_clock) > "$PANEL_FIFO" sleep 1s done &
Scratchpad
Se puede emular un scratchpad (un terminal invocado en cualquier lugar del escritorio para ejecutar un comando específico), añadiendo una combinación de teclas para su invocación con xdotool:
xdotool search --onlyvisible --classname scratchpad windowunmap \ || xdotool search --classname scratchpad windowmap \ || st -c scratchpad -g 1000x400+460 &
y añadiendo esta regla:
bspc rule -a scratchpad sticky=on state=floating
Véase [1] y [2][enlace roto 2024-01-13].
Para un scratchpad que prescinda de reglas pre-definidas, véase: [3]
Para un scratchpad con más sofisticación de comportamiento, instale tdrop-gitAUR.
bspwmrc como script
Dado que bspwmrc
es un script (guión de comandos), usted puede hacer con él cosas como éstas:
Configuraciones diferentes para cada monitor:
#! /bin/sh if [[ $(hostname) == 'myhost' ]]; then bspc monitor eDP1 -d I II III IV V VI VII VIII IX X elif [[ $(hostname) == 'otherhost' ]]; then bspc monitor VGA-0 -d I II III IV V bspc monitor VGA-1 -d VI VII VIII IX X elif [[ $(hostname) == 'yetanotherhost' ]]; then bspc monitor DVI-I-3 -d VI VII VIII IX X bspc monitor DVI-I-2 -d I II III IV V fi
Que todas las ventanas sean flotantes:
#!/bin/bash # change the desktop number here FLOATING_DESKTOP_ID=$(bspc query -D -d '^3') bspc subscribe node_manage | while read -a msg ; do desk_id=${msg[2]} wid=${msg[3]} [ "$FLOATING_DESKTOP_ID" = "$desk_id" ] && bspc node "$wid" -t floating done
(fuente)
Solución de problemas
Aparece una pantalla negra y las combinaciones de teclas no funcionan
Primero que todo, una pantalla negra significa que bspwm está funcionando. Respecto a las combinaciones de teclas, verifique que usted haya seguido los pasos correctamente.
Si lo había hecho así, entonces incluya la ejecución de un emulador de terminal en ~/.xinitrc
:
sxhkd & [su terminal de preferencia] & exec bspwm
Habiendo iniciado X con startx
, usted tendrá su emulador de terminal dispuesto. Ahora, tipee pidof sxhkd
. Si el comando no devuelve un número, inténtelo de nuevo asociando sxhkd con sxhkdrc explícitamente, ejecutando pidof sxhkd -c ~/.config/sxhkd/sxhkdrc
.
También puede intentar cambiando la tecla 'super' por 'Alt', en sxhkdrc.
Una aplicación no ocupa todo el espacio de su ventana
Esto puede pasar si está usando aplicaciones GTK3, y especialmente en el caso de los cuadros de diálogo. Si se trata de eso, añada lo siguiente a ~/.config/gtk-3.0/gtk.css:
.window-frame, .window-frame:backdrop { box-shadow: 0 0 0 black; border-style: none; margin: 0; border-radius: 0; } .titlebar { border-radius: 0; }
(fuente: foro de bspwm)
Problemas con aplicaciones Java
Si, por ejemplo, las aplicaciones Java no pueden cambiar de tamaño o sus menús se cierran espontáneamente, véase Java#Gray window, applications not resizing with WM, menus immediately closing.
Véase también
- Mailing List: bspwm en librelist.com.
#bspwm
- canal IRC en irc.libera.chat- https://bbs.archlinux.org/viewtopic.php?id=149444 - Tema en el foro Arch BBS
- https://github.com/baskerville/bspwm - GitHub
- https://github.com/windelicato/dotfiles/wiki/bspwm-for-dummies - Un "bspwm para tontos"