{"id":13804834,"url":"https://github.com/ttytm/bartender","last_synced_at":"2025-07-13T23:08:48.091Z","repository":{"id":154502130,"uuid":"615401361","full_name":"ttytm/bartender","owner":"ttytm","description":"Customizable progress indicators for V terminal applications.","archived":false,"fork":false,"pushed_at":"2024-11-26T16:56:08.000Z","size":161,"stargazers_count":54,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-04T19:50:40.618Z","etag":null,"topics":["cli","customizable","gluten-free","progress","progress-bar","progressbar","terminal","v","vlang"],"latest_commit_sha":null,"homepage":"","language":"V","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ttytm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"ko_fi":"tobealive"}},"created_at":"2023-03-17T15:56:06.000Z","updated_at":"2025-07-02T19:19:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"a1017d93-0148-4650-a203-18f7a18f7e2f","html_url":"https://github.com/ttytm/bartender","commit_stats":null,"previous_names":["ttytm/bartender","tobealive/bartender"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ttytm/bartender","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttytm%2Fbartender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttytm%2Fbartender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttytm%2Fbartender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttytm%2Fbartender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ttytm","download_url":"https://codeload.github.com/ttytm/bartender/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ttytm%2Fbartender/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265218750,"owners_count":23729528,"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":["cli","customizable","gluten-free","progress","progress-bar","progressbar","terminal","v","vlang"],"created_at":"2024-08-04T01:00:54.438Z","updated_at":"2025-07-13T23:08:48.060Z","avatar_url":"https://github.com/ttytm.png","language":"V","readme":"# bartender\n\n\u003e Customizable bars for v term apps.\n\n![smooth](https://user-images.githubusercontent.com/34311583/228962398-a7db6cea-3be3-4a21-ae95-a78f9e587a9c.gif)\n\n## Getting started\n\nInstall via `v` cli\n\n- From source\n\n  ```\n  v install --git https://github.com/tobealive/bartender\n  ```\n\n  ```v\n  import bartender\n  ```\n\n- As vpm module\n\n  ```\n  v install tobealive.bartender\n  ```\n\n  ```v\n  import tobealive.bartender\n  ```\n\n## Usage examples\n\n- Simple bars\n\n  ```v\n  // Default bar\n  mut b := Bar{}\n  for _ in 0 .. b.iters {\n   \tb.progress()\n  }\n\n  // Customized bar\n  mut b2 := Bar{\n  \twidth: 60\n  \trunes: BarRunes{\n  \t\tprogress: `#`\n   \t\tindicator: `❯`\n  \t\tremaining: `-`\n  \t}\n  \tpre: '|'\n  \tpost: Affix{\n  \t\tpending: '| Loading...'\n  \t\tfinished: '| Done!'\n  \t}\n  }\n  for _ in 0 .. b2.iters {\n   \tb2.progress()\n  }\n  ```\n\n- Smooth bar themes\n\n  ```v\n  mut b := SmoothBar{\n  \ttheme: Theme.pull // Default = Theme.push\n  }\n  for _ in 0 .. b.iters {\n  \tb.progress()\n  }\n\n  b2 = SmoothBar{\n  \ttheme: ThemeVariant{.pull, .drain}\n  }\n  for _ in 0 .. b2.iters {\n  \tb2.progress()\n  }\n\n  // Customized smooth bar\n  mut b3 := SmoothBar{\n  \ttheme: Theme.split\n  \twidth: 80\n  \tpre: '│'\n  \tpost: fn (b SmoothBar) (string, string) {\n  \t\treturn '│ Saving... ${b.pct()}% ${term.blue(b.eta(20))}', '│ Saved!'\n  \t}\n  }\n  b3.colorize(.cyan)\n  for _ in 0 .. b3.iters {\n  \tb3.progress()\n  }\n  ```\n\n- Bar Reader for `io` operations.\n\n  ```v\n  // Returns an `io.BufferedReader` that displays a progressing bar when used in a reader operation.\n  pub fn (b Bar) reader(reader io.Reader, size u64) \u0026io.BufferedReader\n  ```\n\n  ```v\n  mut src_file := os.open(src_file_path)!\n  mut dst_file := os.create(dst_file_path)!\n\n  bar := bartender.Bar{}\n  mut bar_reader := bar.reader(src_file, os.file_size(src_file_path))\n  io.cp(mut bar_reader, mut dst_file)!\n  ```\n\n### Run examples\n\nExtended and executable examples can be found in the `examples` directory.\n\n```\nv run examples/\u003cfile\u003e.v\n```\n\n## Showcase\n\n\u003cdetails open\u003e\u003csummary\u003e\u003cb\u003eSimple bar\u003c/b\u003e \u0026nbsp;\u003csub\u003e\u003csup\u003eToggle visibility...\u003c/sup\u003e\u003c/sub\u003e\u003c/summary\u003e\n\n![simple](https://user-images.githubusercontent.com/34311583/228962887-dbc76f93-4c82-43ed-95a1-964851fe3617.gif)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\n  \u003cb\u003eColor and style customizations.\u003c/b\u003e \u0026nbsp;\u003csub\u003e\u003csup\u003eToggle visibility...\u003c/sup\u003e\u003c/sub\u003e\n\u003c/summary\u003e\n\n![colors](https://user-images.githubusercontent.com/34311583/228962409-a5d9b3cb-b6d2-4b34-a2db-305249e95c82.gif)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eSmooth bars.\u003c/b\u003e \u0026nbsp;\u003csub\u003e\u003csup\u003eToggle visibility...\u003c/sup\u003e\u003c/sub\u003e\u003c/summary\u003e\n\n![download](https://user-images.githubusercontent.com/34311583/228962385-2fd9e185-81a5-481a-aa9c-6101405bf64a.gif)\n\n\u003c/details\u003e\n\n## Disclaimer\n\nUntil a stable version 1.0 is available, new features will be introduced, existing ones may change,\nor breaking changes may occur in minor(`0.\u003cminor\u003e.*`) versions.\n\n## Outlook\n\nBelow are some of the things to look forward to.\n\n- [x] Reader Interface\n- [x] Multiline (Smooth Bar Split Themes are not supported yet)\n- [x] Time Remaining\n- [ ] Dynamic adjustment on term resize for all variants (basic width detection works)\n- [ ] Extend visuals \u0026 customizability\n\n## Anowledgements\n\n- [Waqar144/progressbar][10] inspired the start of project.\n- [console-rs/indicatif][20] serves as inspiration for further development.\n- [ArtemkaKun/v-project-basement][30] served as a base for CI scripts and issue templates\n\n[10]: https://github.com/Waqar144/progressbar\n[20]: https://github.com/console-rs/indicatif\n[30]: https://github.com/ArtemkaKun/v-project-basement\n","funding_links":["https://ko-fi.com/tobealive"],"categories":["Libraries"],"sub_categories":["Command line interface (CLI) / Terminal / Shell"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fttytm%2Fbartender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fttytm%2Fbartender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fttytm%2Fbartender/lists"}