Configurando bspwm e dois monitores

Como configurar o gerenciador de janelas bspwm e a barra polybar para exibir áreas de trabalho e barras distintas em dois monitores. Bspwm é um gerenciador de janelas que é configurado utilizando um cliente externo e shell scripts, criando infinitas possibilidades.

[ Hits: 5.314 ]

Por: Cristhyano de Paula em 21/06/2020 | Blog: https://crdpa.net/


Configurando bspwm e dois monitores



Preciso configurar meu gerenciador de janelas para utilizar dois monitores e por um bom tempo venho empurrando isso com a barriga utilizando somente o monitor do laptop ou o monitor externo.

Hoje resolvi mudar isso e documentar aqui toda a empreitada.

Meu desktop padrão contém oito áreas de trabalho. Quando utilizar dois monitores, quero que as quatro primeiras áreas de trabalho fiquem no monitor externo e o restante no monitor do laptop.

O comando para ativar o monitor externo, definir como primário e colocar ao lado esquerdo do meu laptop é

xrandr --output HDMI1 --primary --left-of eDP1 --auto

Assim, quando eu saio com o mouse para a esquerda do monitor do laptop, ele aparece no monitor externo.

Bspwm é um gerenciador de janelas configurado por comandos externos utilizando o cliente bspc e seu arquivo de inicialização é um shell script, portanto é possível fazer infinitas customizações. Criei uma condição que detecta se dois monitores estão definidos logo após iniciar o gerenciador. Caso seja encontrado dois monitores, é executada a configuração para dois, senão a configuração é feita para um monitor somente.

    # checa se existem dois monitores definidos
    MON=$(xrandr --listmonitors | grep Monitors | cut -b 11-)

    # caso tenha, executa o setup para dois
    if [[ $MON == 2 ]] ; then
        xrandr --output HDMI1 --primary --left-of eDP1 --auto &
        bspc monitor HDMI1 -d 1 2 3 4
        bspc monitor eDP1 -d 5 6 7 8
    else
        bspc monitor eDP1 -d 1 2 3 4 5 6 7 8
    fi

O setup para dois monitores define quatro áreas de trabalho para cada monitor, ficando as áreas cinco a oito no laptop.

Agora é hora de criar um script para a barra de informações (polybar). Eu quero que apareçam uma barra diferente em cada monitor. Toda a informação necessária como carga da bateria, relógio, conexão de internet e temperatura ficam no monitor principal. No caso de estar utilizando só o notebook, quero as informações nele, mas se estiver com o monitor externo, quero as informações no monitor externo e a barra no laptop só com o nome das áreas de trabalho.

No script de execução do polybar, bastou colocar isso:

    # termina qualquer instância do programa que esteja rodando
    pkill polybar

    # variável guarda a quantidade de monitores
    MONS=$(polybar --list-monitors | wc -l)

    # caso tenha dois, execute as duas barras
    # A bar1 é a barra com mais informações. Ela irá para o monitor
    # externo (HDMI1) caso ele esteja conectado.
    if [[ "$MONS" == "2" ]] ; then
        MON1=HDMI1 polybar --reload bar1 &
        MON2=eDP1 polybar --reload bar2 &
    else
        MON1=eDP1 polybar --reload bar1 &
    fi

O resultado ficou satisfatório, mas existe um problema. Caso eu resolva desconectar ou conectar o monitor externo com o BSPWM rodando, tudo vira uma bagunça.

Não é algo que faço. Ou ligo o computador com o monitor externo já conectado ou não. Caso venha a fazer de outra maneira, reinicio o Xorg. Pelo pouco que olhei, seria necessário monitorar eventos no udev e reagir. Fiz algumas tentativas, mas acabei deixando de lado.

Se no futuro isso se tornar um problema, pesquiso como resolver e crio outro artigo aqui.

Segue uma foto da área de trabalho para ilustrar o resultado final:
Linux: Configurando bspwm e dois monitores
   

Páginas do artigo
   1. Configurando bspwm e dois monitores
Outros artigos deste autor

Instalação Minimalista do Void Linux

Leitura recomendada

Administrando Memória SWAP no GNU/Linux

Como converter sua partição de ext2 para ext3

zsh (Z shell) - Uma alternativa ao bash

ZRAM (Compressed RAM) no Debian

Fedora Core 1 :: Starter Kit

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts