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.273 ]

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

Servidor de email: Postfix + Courier IMAP + RoundCube e usuários virtuais (Debian e derivados)

openSUSE 12.1 - Instalando Oracle Java

Virtualização de sistemas

Pós-instalação do Ubuntu Gnome 13.04

Horário de verão brasileiro até 2038 (Atualização 2017)

  
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