La configuración de la barra de estado con Polybar

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.

barra de estado con Polybar

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 indicar bottom = 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 a true 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 y height 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 y offset-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 utilizar compton o bien, en la configuración general definir el parámetro pseudo-transparency = true. Por otro lado también tienes que tener que en cuenta que no debes utilizar esta característica con border-size, por que el borde no se redondea. Además de aplicar un radio general, también es posible aplicarlo como radius-top, radius-bottom, radius-left y radius-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 como module-margin-left y module-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 texto
  • border-size este parámetro define el ancho del borde, que acompañado por border-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 a true 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 y tray-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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *