Hyprland com Waybar

Quase não utilizo o Hyprland, porém estes dias loguei na sessão do Hyprland e vi que algumas coisas mudaram.

Agora o pacote waybar da suporte para hyprland/workspaces, não sendo necessário usar o pacote waybar-hyprland.

Me parece que o arranjo dos workspaces no hyprland+waybar é diferente do Qtile para uso 2 monitores ou mais.

Diferença nas sessões do workspaces:

  • Qtile: tem apenas 1 sessão por workspaces, não podendo ser exibido nos 2 monitores ao mesmo tempo.
  • Hyprland: tem sessões diferentes para o mesmo workspaces nos 2 monitores.

Com isso acabei separando os workspaces por monitor, acrescentando a funcionalidade persistent, porém gostaria de configurar o css para exibir uma cor diferente quando o workspaces estiver com alguma janela aberta, porém não estiver ativo no momento.

Atualmente esta assim:

image

O workspace 6 esta na janela ativa, e os outros estão persistentes, porém não tem diferenciação se o workspaces esta vazio ou não.

Segue as configs do waybar:

Modulo:

"hyprland/workspaces": {
    "format": "{name}",
    "format-icons": {
      "active": "",
      "default": "",
      "persistent": "",
    },
    "on-scroll-up": "hyprctl dispatch workspace e+1",
    "on-scroll-down": "hyprctl dispatch workspace e-1",
    "all-outputs": false,
    "persistent_workspaces": {
      //"*": 10,
      "1": ["eDP-1"],
      "2": ["eDP-1"],
      "3": ["eDP-1"],
      "4": ["eDP-1"],
      "5": ["eDP-1"],
      "6": ["HDMI-A-2"],
      "7": ["HDMI-A-2"],
      "8": ["HDMI-A-2"],
      "9": ["HDMI-A-2"],
      "10": ["HDMI-A-2"]
    },
},

style.css

window#waybar {
    background: rgba(0, 0, 0, 0.6);
    /*border-bottom: 1px solid @unfocused_borders;*/
    /*border-radius: 10px;*/
    /*color: #cba6f7;*/
    /*border: 1px solid #cba6f7;*/
}

window#waybar.hidden {
    opacity: 0.5;
}
   
tooltip {
    background: rgba(0, 0, 0, 0.6);
    border-radius: 10px;
    /*border: 1px solid #cba6f7;*/
}

tooltip label {
    color: #cba6f7;
    margin-right: 2px;
    margin-left: 2px;
}

/*-----module groups----*/
/* .modules-right { */
/*     background-color: rgba(0, 0, 0, 0.6); */
/*     border: 0px solid #b4befe; */
/*     border-radius: 10px; */
/* } */
/**/
/* .modules-center { */
/*     background-color: rgba(0, 0, 0, 0.6); */
/*     border: 0px solid #b4befe; */
/*     border-radius: 10px; */
/* } */
/**/
/* .modules-left { */
/*     background-color: rgba(0, 0, 0, 0.6); */
/*     border: 0px solid #b4befe; */
/*     border-radius: 10px; */
/**/
/* } */

#workspaces button {
    padding: 2px;
    color: #6E6A86;
    margin-right: 5px;
}
   
#workspaces button.active {
    color: #cba6f7;
    border-radius: 15px 15px 15px 15px;
}
  
#workspaces button.focused {
    color: #d8dee9;
}
   
#workspaces button.urgent {
    color: #11111b;
    border-radius: 10px;
}
       
#workspaces button:hover {
    color: #9CCFD8;
    border-radius: 15px;
}

#workspaces button.empty {
  color: #000000;
}

OBS: Não configurei do zero, peguei um dotfiles pronto e apenas retirei os módulos, portanto não faço a menor ideia se é possível e como fazer isso.

Para diferenciar no Waybar workspaces que têm janelas abertas mas não estão ativas, você pode usar classes CSS. Primeiro, verifique se os workspaces que têm janelas, mas que não estão ativos, estão recebendo uma classe específica no Waybar. Por exemplo, vamos imaginar que essa classe seja “occupied”. Isso pode ser algo que o Hyprland envia para o Waybar, então talvez você tenha que olhar um pouco na configuração de ambos.

Agora, se você sabe que os workspaces ocupados recebem essa classe “occupied”, vá até o seu arquivo style.css e adicione uma regra para essa classe. Algo mais ou menos assim:

#workspaces button.occupied {
color: #SUA_COR;
}

Troque #SUA_COR pela cor que você quer usar. Olhando o que você já tem, a cor #6E6A86 parece ser a cor padrão dos botões. Então, se quiser algo que destaque que o workspace está ocupado, mas não ativo, escolha uma cor que esteja entre essa e a #cba6f7, que você usa para workspaces ativos.

Depois de fazer essa alteração, recarregue o Waybar para ver as mudanças.

E aí está! Espero que isso ajude a destacar seus workspaces ocupados. Se o Waybar e o Hyprland não estiverem fornecendo uma classe para workspaces ocupados, a solução pode precisar de alguns ajustes. Boa sorte e espero que funcione bem para você!

1 curtida

Testei o código e não funcionou, pelo que andei vendo, não existe esta classe para o hyprland

Estudei um pouco o código e descobri a lógica:

Quando se define os persistentes no modulo a logica no CSS é a seguinte:

Ativo > Não vazio > Persistente
#workspaces button.active
#workspaces button
#workspaces button.persistent

**O “empty” é sobrescrito pelo “persistent”

1 curtida

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.