{"id":15048941,"url":"https://github.com/briandowns/libspinner","last_synced_at":"2025-04-10T01:34:15.173Z","repository":{"id":40325603,"uuid":"171020420","full_name":"briandowns/libspinner","owner":"briandowns","description":"C library with 90 configurable terminal spinner/progress indicators.","archived":false,"fork":false,"pushed_at":"2025-03-14T04:41:36.000Z","size":324,"stargazers_count":31,"open_issues_count":2,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-24T03:12:02.301Z","etag":null,"topics":["c","c-language","indicator","progress","progress-bar","shell","spinner","terminal"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/briandowns.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":"2019-02-16T15:46:20.000Z","updated_at":"2025-03-05T22:20:14.000Z","dependencies_parsed_at":"2025-02-16T08:45:26.265Z","dependency_job_id":null,"html_url":"https://github.com/briandowns/libspinner","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/briandowns%2Flibspinner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/briandowns%2Flibspinner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/briandowns%2Flibspinner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/briandowns%2Flibspinner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/briandowns","download_url":"https://codeload.github.com/briandowns/libspinner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248140909,"owners_count":21054367,"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":["c","c-language","indicator","progress","progress-bar","shell","spinner","terminal"],"created_at":"2024-09-24T21:17:16.364Z","updated_at":"2025-04-10T01:34:15.150Z","avatar_url":"https://github.com/briandowns.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libspinner\n\n[![Build Status](https://travis-ci.org/briandowns/libspinner.svg?branch=master)](https://travis-ci.org/briandowns/libspinner)\n\nlibspinner is a C single-header library that provides terminal spinners and progress indicators. This is a port of the Go library [here](https://github.com/briandowns/spinner).\n\n*NOTE*: Be sure to call `spinner_stop(s)` in any signal handlers or clean up routines so the underlying pthread doesn't leak.\n\nAn example can be found in the `examples` directory.\n\n## Test\n\n```sh\nmake test\n```\n\n## Features\n\n* Start\n* Stop\n* Restart\n* Reverse direction [in progress]\n* Update the spinner character set\n* Update the spinner speed\n* Prefix or append text\n* Change spinner color, background, and text attributes such as bold / italics [in progress]\n* Chain, pipe, redirect output\n* Output final string on spinner/indicator completion\n\n## 90 Character Sets. Some examples below:\n\n(cursor not visible in normal operation)\n\n| index | character set                                                                                                                                                                                                                                                                             | sample gif                 |\n| ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |\n| 0     | ```←↖↑↗→↘↓↙```                                                                                                                                                                                                                                                                            | ![Sample Gif](gifs/0.gif)  |\n| 1     | ```▁▃▄▅▆▇█▇▆▅▄▃▁```                                                                                                                                                                                                                                                                       | ![Sample Gif](gifs/1.gif)  |\n| 2     | ```▖▘▝▗```                                                                                                                                                                                                                                                                                | ![Sample Gif](gifs/2.gif)  |\n| 3     | ```┤┘┴└├┌┬┐```                                                                                                                                                                                                                                                                            | ![Sample Gif](gifs/3.gif)  |\n| 4     | ```◢◣◤◥```                                                                                                                                                                                                                                                                                | ![Sample Gif](gifs/4.gif)  |\n| 5     | ```◰◳◲◱```                                                                                                                                                                                                                                                                                | ![Sample Gif](gifs/5.gif)  |\n| 6     | ```◴◷◶◵```                                                                                                                                                                                                                                                                                | ![Sample Gif](gifs/6.gif)  |\n| 7     | ```◐◓◑◒```                                                                                                                                                                                                                                                                                | ![Sample Gif](gifs/7.gif)  |\n| 8     | ```.oO@*```                                                                                                                                                                                                                                                                               | ![Sample Gif](gifs/8.gif)  |\n| 9     | ```\\|/-\\```                                                                                                                                                                                                                                                                               | ![Sample Gif](gifs/9.gif)  |\n| 10    | ```◡◡⊙⊙◠◠```                                                                                                                                                                                                                                                                              | ![Sample Gif](gifs/10.gif) |\n| 11    | ```⣾⣽⣻⢿⡿⣟⣯⣷```                                                                                                                                                                                                                                                                            | ![Sample Gif](gifs/11.gif) |\n| 12    | ```\u003e))'\u003e \u003e))'\u003e  \u003e))'\u003e   \u003e))'\u003e    \u003e))'\u003e   \u003c'((\u003c  \u003c'((\u003c \u003c'((\u003c```                                                                                                                                                                                                                            | ![Sample Gif](gifs/12.gif) |\n| 13    | ```⠁⠂⠄⡀⢀⠠⠐⠈```                                                                                                                                                                                                                                                                            | ![Sample Gif](gifs/13.gif) |\n| 14    | ```⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏```                                                                                                                                                                                                                                                                          | ![Sample Gif](gifs/14.gif) |\n| 15    | ```abcdefghijklmnopqrstuvwxyz```                                                                                                                                                                                                                                                          | ![Sample Gif](gifs/15.gif) |\n| 16    | ```▉▊▋▌▍▎▏▎▍▌▋▊▉```                                                                                                                                                                                                                                                                       | ![Sample Gif](gifs/16.gif) |\n| 17    | ```■□▪▫```                                                                                                                                                                                                                                                                                | ![Sample Gif](gifs/17.gif) |\n| 18    | ```←↑→↓```                                                                                                                                                                                                                                                                                | ![Sample Gif](gifs/18.gif) |\n| 19    | ```╫╪```                                                                                                                                                                                                                                                                                  | ![Sample Gif](gifs/19.gif) |\n| 20    | ```⇐⇖⇑⇗⇒⇘⇓⇙```                                                                                                                                                                                                                                                                            | ![Sample Gif](gifs/20.gif) |\n| 21    | ```⠁⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈⠈```                                                                                                                                                                                                                                                       | ![Sample Gif](gifs/21.gif) |\n| 22    | ```⠈⠉⠋⠓⠒⠐⠐⠒⠖⠦⠤⠠⠠⠤⠦⠖⠒⠐⠐⠒⠓⠋⠉⠈```                                                                                                                                                                                                                                                            | ![Sample Gif](gifs/22.gif) |\n| 23    | ```⠁⠉⠙⠚⠒⠂⠂⠒⠲⠴⠤⠄⠄⠤⠴⠲⠒⠂⠂⠒⠚⠙⠉⠁```                                                                                                                                                                                                                                                            | ![Sample Gif](gifs/23.gif) |\n| 24    | ```⠋⠙⠚⠒⠂⠂⠒⠲⠴⠦⠖⠒⠐⠐⠒⠓⠋```                                                                                                                                                                                                                                                                   | ![Sample Gif](gifs/24.gif) |\n| 25    | ```ｦｧｨｩｪｫｬｭｮｯｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝ```                                                                                                                                                                                                                             | ![Sample Gif](gifs/25.gif) |\n| 26    | ```. .. ...```                                                                                                                                                                                                                                                                            | ![Sample Gif](gifs/26.gif) |\n| 27    | ```▁▂▃▄▅▆▇█▉▊▋▌▍▎▏▏▎▍▌▋▊▉█▇▆▅▄▃▂▁```                                                                                                                                                                                                                                                      | ![Sample Gif](gifs/27.gif) |\n| 28    | ```.oO°Oo.```                                                                                                                                                                                                                                                                             | ![Sample Gif](gifs/28.gif) |\n| 29    | ```+x```                                                                                                                                                                                                                                                                                  | ![Sample Gif](gifs/29.gif) |\n| 30    | ```v\u003c^\u003e```                                                                                                                                                                                                                                                                                | ![Sample Gif](gifs/30.gif) |\n| 31    | ```\u003e\u003e---\u003e \u003e\u003e---\u003e  \u003e\u003e---\u003e   \u003e\u003e---\u003e    \u003e\u003e---\u003e    \u003c---\u003c\u003c    \u003c---\u003c\u003c   \u003c---\u003c\u003c  \u003c---\u003c\u003c \u003c---\u003c\u003c```                                                                                                                                                                                                | ![Sample Gif](gifs/31.gif) |\n| 32    | ```\\| \\|\\| \\|\\|\\| \\|\\|\\|\\| \\|\\|\\|\\|\\| \\|\\|\\|\\|\\|\\| \\|\\|\\|\\|\\| \\|\\|\\|\\| \\|\\|\\| \\|\\| \\|```                                                                                                                                                                                                  | ![Sample Gif](gifs/32.gif) |\n| 33    | ```[] [=] [==] [===] [====] [=====] [======] [=======] [========] [=========] [==========]```                                                                                                                                                                                             | ![Sample Gif](gifs/33.gif) |\n| 34    | ```(*---------) (-*--------) (--*-------) (---*------) (----*-----) (-----*----) (------*---) (-------*--) (--------*-) (---------*)```                                                                                                                                                   | ![Sample Gif](gifs/34.gif) |\n| 35    | ```█▒▒▒▒▒▒▒▒▒ ███▒▒▒▒▒▒▒ █████▒▒▒▒▒ ███████▒▒▒ ██████████```                                                                                                                                                                                                                              | ![Sample Gif](gifs/35.gif) |\n| 36    | ```[                    ] [=\u003e                  ] [===\u003e                ] [=====\u003e              ] [======\u003e             ] [========\u003e           ] [==========\u003e         ] [============\u003e       ] [==============\u003e     ] [================\u003e   ] [==================\u003e ] [===================\u003e]``` | ![Sample Gif](gifs/36.gif) |\n| 37    | ```🌍 🌎 🌏```                                                                                                                                                                                                                                                                               | ![Sample Gif](gifs/39.gif) |\n| 38    | ```◜ ◝ ◞ ◟```                                                                                                                                                                                                                                                                             | ![Sample Gif](gifs/40.gif) |\n| 39    | ```⬒ ⬔ ⬓ ⬕```                                                                                                                                                                                                                                                                             | ![Sample Gif](gifs/41.gif) |\n| 40    | ```⬖ ⬘ ⬗ ⬙```                                                                                                                                                                                                                                                                             | ![Sample Gif](gifs/42.gif) |\n| 41    | ```[\u003e\u003e\u003e          \u003e] []\u003e\u003e\u003e\u003e        [] []  \u003e\u003e\u003e\u003e      [] []    \u003e\u003e\u003e\u003e    [] []      \u003e\u003e\u003e\u003e  [] []        \u003e\u003e\u003e\u003e[] [\u003e\u003e          \u003e\u003e]```                                                                                                                                                              | ![Sample Gif](gifs/43.gif) |\n\n## Contributing\n\nPlease feel free to open a PR!\n\n## License\n\nlibspinner source code is available under the BSD 2 clause [License](/LICENSE).\n\n## Contact\n\n[@bdowns328](http://twitter.com/bdowns328)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbriandowns%2Flibspinner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbriandowns%2Flibspinner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbriandowns%2Flibspinner/lists"}