https://github.com/dacampsss/polybar-i3-dynamic-trayoffset
A bunch of scripts able to create a "dynamic traybar" experience for Polybar in i3wm, making it behave kinda like a module.
https://github.com/dacampsss/polybar-i3-dynamic-trayoffset
i3wm i3wm-dotfiles polybar polybar-config polybar-module polybar-scripts
Last synced: 10 months ago
JSON representation
A bunch of scripts able to create a "dynamic traybar" experience for Polybar in i3wm, making it behave kinda like a module.
- Host: GitHub
- URL: https://github.com/dacampsss/polybar-i3-dynamic-trayoffset
- Owner: dacampsss
- License: lgpl-2.1
- Created: 2021-03-14T03:04:14.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-08-21T10:38:21.000Z (over 4 years ago)
- Last Synced: 2025-03-27T00:54:58.197Z (11 months ago)
- Topics: i3wm, i3wm-dotfiles, polybar, polybar-config, polybar-module, polybar-scripts
- Language: Shell
- Homepage:
- Size: 43.9 KB
- Stars: 8
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# polybar-i3-dynamic-trayoffset
*For an english version of this readme, click here.*
Apenas alguns scripts capazes de criar a experiência de uma "traybar dinâmica" para a Polybar no i3wm, fazendo-a com que se comporte *tipo* um módulo.
## Requisitos
1. Versão recente da [Polybar](https://github.com/polybar/polybar/);
2. i3wm (preferencialmente v.4.17+);
3. Instalar os scripts e o módulo corretamente.
## Instalação
1. Baixe a release mais recente ou clone este repositório com ```git clone https://github.com/daltroaugusto/polybar-dynamic-trayoffset.git```, depois navegue para a pasta extraída;
2. Execute ```sudo ./install``` (script de instalação com privilégios de superusuário), ou copie os scripts para uma pasta em seu ```$PATH```;
3. Insira o módulo ```polybar_trayoffset``` na posição em que desejar, no arquivo de configuração da Polybar:
[module/trayoffset]
type = custom/script
interval = 1.0
exec = polybar_trayoffset echo
format =
4. Certifique-se de, também, configurar corretamente o offset da traybar. A tray deve estar posicionada de modo que sobreponha o módulo.
Perceba como a tray está fora de posição. O módulo está posicionado à direita do relógio. Devemos corrigir isso configurando de modo que a tray esteja exatamente onde o módulo fará seu trabalho (nesse caso, mais à direita do relógio), usando as configurações ```tray-offset-x``` e ```tray-position```:

5. Agora que o módulo está exatamente na posição em que a tray é invocada pela Polybar, devemos, manualmente, configurar *hooks* para cada programa que vá usar a tray. Suponhamos que o programa ```qbittorrent``` (um cliente torrent em Qt) deseje usar espaço em nossa traybar. Devemos adicionar, então, o seguinte trecho de código em nosso arquivo de configuração do i3wm:
```
for_window [class="qbittorrent"] exec watchps_tray qbittorrent
```
Esse comando fará com que, a cada vez que se detecte uma janela da classe do aplicativo (que também ocupará espaço na tray), se inicie um processo que mantém espaço no lugar do módulo previamente configurado, fazendo com que o resultado seja uma traybar *mais ou menos* dinâmica, conforme a imagem:
## Configuração adicional
* Por meio das configurações de fontes da Polybar, é possível, em conjunto com ```format-prefix``` e ```format-suffix```, definir uma fonte de largura fixa para o módulo (como Consolas), fazendo com que a largura acrescentada para cada aplicação da tray seja igualmente fixa. É uma opção não recomendada, pessoalmente.
* Com um número inteiro e positivo ao lado do nome da aplicação em ```watchps_tray ```, é possível definir manualmente o tamanho de espaçamento criado na tray.
* Para situações excepcionais, o comando ```polybar_trayoffset remove-all``` pode ser executado globalmente, e todo espaçamento acrescentado no módulo será imediatamente removido.
## A fazer
- [ ] Centralizar a gestão de aplicações que usam da tray no próprio script ```polybar_trayoffset```.
- [ ] Encontrar alguma ferramenta ou mecanismo similar ao que o wmctrl é para janelas, porém para elementos da tray, o que possibilitaria um fluxo/funcionamento mais automático.