Este es uno de los capítulos del tutorial Polybar. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
En los capítulos anteriores has visto tanto la instalación de Polybar como la configuración dependiendo del gestor de ventanas, window manager, que estés utilizando. También has podido estudiar y revisar la sintaxis del archivo de configuración, pero queda lo importante, como configurar tu barra de estado. ¿Cuales son los parámetros que puedes personalizar y modificar? ¿Como puedes dejar tu barra de estado exactamente a tu gusto?
Esto es precisamente lo que vamos a tratar en este capítulo del tutorial. Se trata de definir y revisar todos los parámetros que puedes configurar y personalizar en tu barra de estado.
La configuración de la barra de estado con Polybar
El primer detalle…
Para mi es algo que pasó casi desapercibido en la primera ocasión que me enfrenté a Polybar, y es la importancia de la sección bar
. Para definir tu propia barra, tienes que incluir en la configuración la sección o secciones,
[bar/nombre-que-le-quieras-poner-a-la-barra]
De esta manera cuando inicies polibar lo tienes que hacer con,
polybar nombre-que-le-quieras-poner-a-la-barra
Así si tienes varias barras definidas en tu archivo de configuración, puedes iniciar una tras otras simplemente llamando a polybar bar1
, polybar bar2
y así sucesivamente.
Otra cuestión interesante y que ya te comenté en el capítulo anterior es la posibilidad de heredar una barra de estado de otra, de forma que puedes tener dos barras de estado exactamente iguales, pero cada una de ellas en una pantalla. Por ejemplo,
[bar/bar1]
monitor = ${env:MONITOR:HDMI-1}
width = 100%
height = 27
offset-x = 1%
offset-y = 1%
[bar/bar2]
inherit = bar/bar1
monitor = DVI-I-1-1
Recuerda configurar para que se inicien ambos archivos de configuración en launcher.sh
El idioma y la localización
Un aspecto que había pasado por alto completamente es la localización… ¿Realmente para que necesitas la localización?. Pues al menos para la fecha. Para que la fecha se muestre conforme estás acostumbrado en tu país. Así esto lo puedes configurar fácilmente utilizando el parámetro locale
, que para el caso de España se traduce en lo siguiente,
locale = es_ES.UTF-8
Configurar el monitor
En el caso de que solo tengas un monitor, no tienes problema y no te tienes que preocupar por estos parámetros simplemente los dejas por defecto. Es decir,
monitor =
monitor_fallback =
monitor-strict = false
monitor-exact = true
El primero de los parámetros, monitor
, indica el monitor donde se ubicará la barra de estado . Si no indicas nada se colocará en el principal. Pero, ¿como identificar los monitores que tienes? Esto lo puedes hacer con el propio Polybar, ejecutando la siguiente instrucción,
polybar -m | cut -d':' -f1
O bien puedes utilizar también xrandr
de la siguiente forma,
xrandr -q | grep " connected" | cut -d' ' -f1
En mi caso, para definir los distintos monitores y como tienen que disponerse, en mi ~/.bashrc
tengo lo siguiente,
if [[ "$XDG_SESSION_DESKTOP" =~ i3 ]] || \
[[ "$XDG_SESSION_DESKTOP" =~ "herbstluftwm" ]] || \
[[ "$XDG_SESSION_DESKTOP" =~ "bspwm" ]] || \
[[ "$XDG_SESSION_DESKTOP" =~ "qtile-venv" ]]
then
xrandr --auto
xrandr --auto --output HDMI-1 --primary
xrandr --auto --output DVI-I-1-1 --right-of HDMI-1
xrandr --auto --output eDP-1 --right-of DVI-I-1-1
fi
Respecto a porque tantas sesiones es básicamente porque en algún momento las he utilizado o las sigo utilizando, y como esto queda en mis dotfiles
, va creciendo poco a poco. Sin embargo, tu lo tendrás que adaptar a tus necesidades y dispositivos, por supuesto.
Por otro lado, el segundo de los parámetros monitor-fallback
, puedes utilizarlo para especificar el monitor en el caso del que hayas indicado anteriormente no se encuentre.
El parámetro monitor-strict
requiere que el monitor esté en estado connected
. El problema es que en algunos casos xrandr
informa que el monitor no está conectado a pesar de estar en uso.
Por último, en el caso de que tengas problemas con el nombre del monitor tienes que utilizar el último de los parámetros monitor-exact
. Esto podría suceder con determinados controladores, que en función del controlador le da un nombre u otro al monitor.
Posición y dimensiones
El siguiente aspecto que necesitarás configurar de tu barra de estado es tanto su posición como las dimensiones. Esto lo puedes hacer con los siguientes parámetros,
override-redirect = false
. Este parámetro le indica al gestor de ventanas que no configure la barra de estado. Esto lo tienes que utilizar cuando el gestor está fijando el tamaño y la posición. En el caso de que lo habilites,true
, es posible que necesites indicar al gestor que deje un espacio para situar en él la barra de estado.bottom = false
. Con este parámetro puedes situar en la barra de estado en la parte inferior del escritorio. Para esto tendrás que indicarbottom = true
, porque por defecto lo sitúa siempre en la parte superior.fixed-center = true
. Como verás mas adelante, los módulos en la barra de estado se cargan en tres bloques, izquierda, centro y derecha. Fijando este parámetro atrue
obligas a que el bloque central esté en el centro, valga la redundancia, siempre y cuando sea posible. En otro caso, el bloque central se centrará en el espacio situado entre el bloque derecho e izquierdo. Es decir que si el bloque derecho ocupa mas espacio que el izquierdo, el bloque central estará mas desplazado hacia la izquierda.width
yheight
estos dos parámetros te permiten definir las dimensiones de la barra de estado, ancho y alto. Puedes definir estas dimensiones en porcentaje respecto al tamaño del monitor o en pixel. Por ejemplo, si quieres especificar que ocupe el 100% del ancho del monitor y 32 pixel de alto, sería,
width = 100%
height = 32
También puedes especificar que del tamaño de la pantalla menos 10 pixel, conforme te indico a continuación,
width = 100%:-10
height = 32
De esta forma te quedará una barra exactamente del tamaño del monitor menos esos 10
pixel. Sin embargo, no estará centrada en el ancho del monitor sino que estará desplazada a la izquierda, dejando ese hueco de 10 pixel en la derecha. Para centrarlo tienes que utilizar los siguientes parámetros.
offset-x
yoffset-y
te permite desplazar la barra de estado en sentido horizontal y vertical respectivamente. La forma de definir ese desplazamiento es igualmente en pixel o porcentaje. Así para completar el ejemplo anterior y tener la barra de estado del ancho del monitor, centrado y desplazado también vertical, sería algo como lo que te muestro a continuación,
width = 100%:-10
height = 32
offset-x = 5
offset-y = 5
radius
. Este parámetro te permite dibujar esquinas redondeadas. Sin embargo, tienes que tener en cuenta algunos aspectos importantes. El primero es que tienes que tener la posibilidad de utilizar transparencias. Por ejemplo, en el caso de bspwm necesitas utilizar una pieza adicional para proporcionar esta característica, en particular podrías utilizarcompton
o bien, en la configuración general definir el parámetropseudo-transparency = true
. Por otro lado también tienes que tener que en cuenta que no debes utilizar esta característica conborder-size
, por que el borde no se redondea. Además de aplicar un radio general, también es posible aplicarlo comoradius-top
,radius-bottom
,radius-left
yradius-right
.padding
. Este otro parámetro de permite definir el espacio a añadir a la derecha o a la izquierda de la barra, pero en la parte interior de la misma. De forma, que los bloques a la izquierda y a la derecha quedarán separados esa distancia.module-margin
añade espacio antes y después de cada uno de los módulos que añadas a los bloques de izquierda, centro y derecha. Puedes utilizar comomodule-margin-left
ymodule-margin-right
.
Los colores de la barra de estado
Este uno de los aspectos que menos me gustan de las configuraciones de cualquier aplicación o herramienta. Si, me estoy refiriendo a los colores. De verdad que me da mucha pereza porque nunca termino de acertar, ni nunca me quedo conforme. Sea como fuere, lo cierto es que realmente es lo mas interesante y con lo que de verdad le puedes dar el golpe definitivo a tu barra de estado.
Los colores los tienes que definir vía hexadecimal. Así tienes,
background
para definir el color de fondo. Por ejemplo, si quieres el color negro tendrías que utilizar#000
o#000000
, ambos son equivalentes. ¿Como hacer un degradado?. Para hacer un degradado tienes que utilizar las listas, como en el ejemplo siguiente,
background-0 = 323643
background-1 = 343845
background-2 = 373c4a
background-3 = 3a3f4d
background-4 = 3d4151
background-5 = 3e4353
background-6 = 404656
background-7 = 424758
background-8 = 464c5d
background-9 = 484e60
foreground
te permite definir el color del textoborder-size
este parámetro define el ancho del borde, que acompañado porborder-color
, te permite definir por completo el borde.
Tipografías
Aunque a esto de las tipografías hay que dedicarle algo mas de tiempo, porque no es tan sencillo como yo me podría haber imaginado inicialmente. Simplemente mencionar que puedes definir distintas fuentes, mediante una lista, que como ya sabes debería comenzar por 0,
font-0 = Ubuntu:style=Regular:size=11:antialias=true;2
font-1 = FontAwesome:style=Regular:size=10:antialias=true;2
Indicar que el último parámetro, que en el caso del ejemplo anterior es ;2
se corresponde con el desplazamiento vertical. En cuanto a antialias=true
, permite que la tipografía se vea bastante mejor.
Además es posible modificar los valores DPI utilizados para renderizar texto. Como te puedes imaginar, esto solo aplica a aquellas fuentes escalables. Por defecto estos valores son dpi-x = 96
y dpi-y = 96
. En el caso de que los establezcas a cero, será Polybar la que se encargue de calcular el DPI para el tamaño de pantalla utilizado.
El área de indicadores.
El área de indicadores, o bandeja, es ese espacio reservado para que los indicadores aparezcan en tu barra de estado. Ya sean indicadores correspondientes a aplicaciones o cualquier otro indicador.
Para incluir el área de indicadores tienes que indicar la posición mediante el parámetro tray-position
que puede tomar los valores left
, right
, center
o none
. En caso de que no esté definido o tenga el valor none
no se cargará. Para los otros valores, el área de indicadores se situará la izquierda, derecha o en el centro respectivamente. Pero además de este parámetro tienes algunos otros que te permiten personalizar el comportamiento del área de indicadores.
tray-maxsize = 16
define el tamaño máximo de los iconos en el área de indicadores.tray-detached = false
si se define atrue
la barra no cambiará el contenido al modificarse el área de indicadores.tray-backgroud
define el color de fondo de la bandeja. Por defecto el color de fondo es el mismo que el de la barra.tray-offset-x
ytray-offset-y
permite modificar la posición en horizontal y vertical del área de indicadores o bandeja. Estos valores se pueden definir tanto en pixel como en porcentaje.tray-padding
permite definir un espacio a cada lado de cada uno de los iconos que aparezcan en la bandeja.tray-scale = 1.0
permite escalar los elementos de la bandeja.
Otros parámetros
Es posible enviar mensajes entre procesos, para esto en necesario habilitar el IPC
. Esto lo puedes hacer utilizando enable-ipc = true
.
También es posible realizar acciones en base a eventos, siempre y cuando ese evento no lo gestione ya algún módulo. Los eventos son los siguientes,
click-left
click-right
click-middle
scroll-up
scroll-down
double-click-left
double-click-right
double-click-middle
Configuración relativa al window manager
Hay una sección que permite ajustar algunos parámetros globales, esto permite establecer el margin-bottom
para barras alineadas en la parte superior, y margin-top
para barras alineadas en la parte inferior. Por defecto esto queda de la siguiente manera,
«`
[global/wm]
margin-bottom = 0
margin-top = 0
Configuración general
Por otro lado también es posible definir una serie de parámetros referentes a la configuración general de la aplicación. Puedes encontrar todos los parámetros en la wiki de Polybar. Sin embargo, si que me interesa indicarte uno de ellos para el caso de que utilices el parámetro radius
. se trata de pseudo-transparency = true
, que te permite trabajar con transparencia sin necesidad de utilizar un compositor
Me encanto el post,está información es muy escasa y más en español, sobre todo con este nivel de detalle.
Gracias, saludos desde México
Muchas gracias Alejandro por tu comentario… lo cierto es que al igual que la información, el feedback es muy escaso, y cuando lo encuentro lo es de muy agradecer. Muchas gracias de nuevo.
Oye, muchas gracias por tomarte tu valioso tiempo para hacer este valioso tutorial. Son escaso, (sobretodo en Español).
Saludos desde Venezuela
Muchas gracias a ti por comentar. Es un placer.
Saludos
saca un modulo para polybar que cambie las canciones de spotify plis