{"id":25602871,"url":"https://github.com/dacampsss/polybar-i3-dynamic-trayoffset","last_synced_at":"2025-04-13T09:22:30.869Z","repository":{"id":178684629,"uuid":"347531640","full_name":"dacampsss/polybar-i3-dynamic-trayoffset","owner":"dacampsss","description":"A bunch of scripts able to create a \"dynamic traybar\" experience for Polybar in i3wm, making it behave kinda like a module.","archived":false,"fork":false,"pushed_at":"2021-08-21T10:38:21.000Z","size":45,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T00:54:58.197Z","etag":null,"topics":["i3wm","i3wm-dotfiles","polybar","polybar-config","polybar-module","polybar-scripts"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dacampsss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-14T03:04:14.000Z","updated_at":"2025-01-06T11:08:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"3cc7ccf0-f66a-400e-953b-9a5e881699cc","html_url":"https://github.com/dacampsss/polybar-i3-dynamic-trayoffset","commit_stats":null,"previous_names":["daltroaugusto/polybar-i3-dynamic-trayoffset","dacampsss/polybar-i3-dynamic-trayoffset"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dacampsss%2Fpolybar-i3-dynamic-trayoffset","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dacampsss%2Fpolybar-i3-dynamic-trayoffset/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dacampsss%2Fpolybar-i3-dynamic-trayoffset/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dacampsss%2Fpolybar-i3-dynamic-trayoffset/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dacampsss","download_url":"https://codeload.github.com/dacampsss/polybar-i3-dynamic-trayoffset/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248689383,"owners_count":21145923,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["i3wm","i3wm-dotfiles","polybar","polybar-config","polybar-module","polybar-scripts"],"created_at":"2025-02-21T17:24:20.855Z","updated_at":"2025-04-13T09:22:30.839Z","avatar_url":"https://github.com/dacampsss.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# polybar-i3-dynamic-trayoffset\n*For an english version of this readme, \u003ca href=\"https://github.com/daltroaugusto/polybar-dynamic-trayoffset/blob/main/README_EN.md\"\u003eclick here\u003c/a\u003e.*\n\nApenas 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.\n\n## Requisitos\n1. Versão recente da [Polybar](https://github.com/polybar/polybar/);\n2. i3wm (preferencialmente v.4.17+);\n3. Instalar os scripts e o módulo corretamente.\n\n## Instalação\n1. 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;\n2. Execute ```sudo ./install``` (script de instalação com privilégios de superusuário), ou copie os scripts para uma pasta em seu ```$PATH```;\n3. Insira o módulo ```polybar_trayoffset``` na posição em que desejar, no arquivo de configuração da Polybar:\n\n\u003ctable align=\"center\"\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003e\u003cimg src=\"https://i.imgur.com/Jp2SVAv.png\" /\u003e\u003c/td\u003e\n            \u003ctd\u003e\n                \n    [module/trayoffset]\n    type = custom/script\n    interval = 1.0\n    exec = polybar_trayoffset echo\n    format = \u003clabel\u003e\n                \n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n4. Certifique-se de, também, configurar corretamente o offset da traybar. A tray deve estar posicionada de modo que sobreponha o módulo.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"800\" src=\"https://i.imgur.com/qIO6jeI.png\" alt=\"Imagem mostrando a barra de tray sem posicionamento e ação do módulo trayoffset.\" /\u003e\n\nPerceba 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```:\n\n\u003ctable\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cimg width=\"330\" src=\"https://i.imgur.com/ZH14U9x.png\" /\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"https://i.imgur.com/TBzl2Dm.png\" /\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n5. 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:\n\n```\nfor_window [class=\"qbittorrent\"] exec watchps_tray qbittorrent\n```\n\nEsse 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:\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://i.imgur.com/GDnAOcw.png\" width=\"800\"\u003e\n\u003c/div\u003e\n\n## Configuração adicional\n\n* Por meio das configurações de \u003ca href=\"https://github.com/polybar/polybar/wiki/Fonts\"\u003efontes\u003c/a\u003e 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.\n* Com um número inteiro e positivo ao lado do nome da aplicação em ```watchps_tray \u003caplicação\u003e```, é possível definir manualmente o tamanho de espaçamento criado na tray.\n* 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.\n\n## A fazer\n- [ ] Centralizar a gestão de aplicações que usam da tray no próprio script ```polybar_trayoffset```.\n- [ ] Encontrar alguma ferramenta ou mecanismo similar ao que o \u003ca href=\"https://sites.google.com/site/tstyblo/wmctrl/\"\u003ewmctrl\u003c/a\u003e é para janelas, porém para elementos da tray, o que possibilitaria um fluxo/funcionamento mais automático.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdacampsss%2Fpolybar-i3-dynamic-trayoffset","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdacampsss%2Fpolybar-i3-dynamic-trayoffset","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdacampsss%2Fpolybar-i3-dynamic-trayoffset/lists"}