bspwm (Español)

Artículos relacionados
bspwm/Example configurations
Gestor de ventanas
Comparison of tiling window managers
Este artículo o sección necesita ser
traducido
.
Notas:
Desactualizado. (Discusión en
Talk:Bspwm (Español)#
)
La
traducción
de este artículo o sección no refleja el texto original.
Motivos:
Last updated in 2016 (
447649
), out of sync with English page (Discusión en
Talk: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-git
AUR
y
sxhkd-git
AUR
.
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
.
Nota
Asegúrese de que su variable de entorno $XDG_CONFIG_HOME esté indicada en el sistema, o su bspwmrc no será tomado en cuenta. Para indicarla, escriba
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
lemonbar
AUR
. 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]
.
Para un scratchpad que prescinda de reglas pre-definidas, véase:
[3]
Para un scratchpad con más sofisticación de comportamiento, instale
tdrop-git
AUR
.
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"