{"id":13753786,"url":"https://github.com/luke-clifton/barbly","last_synced_at":"2026-03-05T22:33:30.766Z","repository":{"id":45883004,"uuid":"199815109","full_name":"luke-clifton/barbly","owner":"luke-clifton","description":"Display output of scripts in the macOS status bar","archived":false,"fork":false,"pushed_at":"2025-02-21T10:05:55.000Z","size":2348,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-09T19:51:40.133Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luke-clifton.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-07-31T08:37:21.000Z","updated_at":"2025-02-21T10:05:57.000Z","dependencies_parsed_at":"2025-04-09T19:48:24.439Z","dependency_job_id":"01fa4a4d-3770-41cc-a209-f8d6a3a93133","html_url":"https://github.com/luke-clifton/barbly","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/luke-clifton/barbly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luke-clifton%2Fbarbly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luke-clifton%2Fbarbly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luke-clifton%2Fbarbly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luke-clifton%2Fbarbly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luke-clifton","download_url":"https://codeload.github.com/luke-clifton/barbly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luke-clifton%2Fbarbly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30152895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T21:15:50.531Z","status":"ssl_error","status_checked_at":"2026-03-05T21:15:11.173Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-08-03T09:01:29.494Z","updated_at":"2026-03-05T22:33:30.745Z","avatar_url":"https://github.com/luke-clifton.png","language":"Haskell","funding_links":[],"categories":["Utilities"],"sub_categories":["Menubar Meta-Apps"],"readme":"# Barbly\n[![](https://img.shields.io/hackage/v/barbly.svg?colorB=%23999\u0026label=barbly)](http://hackage.haskell.org/package/barbly)\n\nBarbly allows you to create status bar menus for macOS. It's similar to\n[bitbar](https://github.com/matryer/bitbar) and supports some of the same\nsyntax.\n\nEach instance of a barbly executable creates only one menu item. You specify\nthe period at which to refresh, and the command to generate the menu contents.\n\n## Sample Scripts\n\nSome sample scripts that are useful to use with barbly can be found in the\n[scripts](./scripts) directory.\n\nHere is an example of running the [`github_issues.sh`](./scripts/github_issues.sh)\nscript with barbly to monitor for new issues.\n\n    barbly -p 60 ./scripts/github_issues.sh nixos nixpkgs\n\n![Example Menu](./doc/demo.png)\n\nClicking on an item will open the issue in your browser.\n\n## Other Features\n\n## Syntax\n\nBarbly can decode either JSON objects or BitBar syntax for the script outputs.\nBy default, it will attempt to auto-detect the format, but you can explicitly\ntell it which format to use with the `--json` and `--bitbar` flags.\n\n### JSON\n\nThe top level object has two fields, `title`, which is a string that will\nbe displayed in the status bar, and `items` which is an array of menu items\nthat will be displayed in the drop down menu when the title is clicked.\n\nEach menu item is either `{}`, which creates a menu separator, or an object\nwith a `label` field, which will be the text for that menu item. Optionally\na menu item can have either an `exec` or a `items` field. An `items` field\nwould contain an array of menu items and would create a sub-menu. An `exec`\nfield would create a clickable menu item which executes the command described\nby the array of strings in the `exec` field.\n\n```json\n{\n  \"title\": \"Example\",\n  \"items\": [\n    {\n      \"label\": \"Say Hello\",\n      \"exec\": [ \"say\", \"Hello\" ]\n    },\n    {},\n    {\n      \"label\": \"Sub Menu\",\n      \"items\": [\n        {\n          \"label\": \"DuckDuckGo\",\n          \"exec\": [ \"open\", \"https://duckduckgo.com/\" ]\n        }\n      ]\n    },\n    { \"label\": \"Information Only\" }\n  ]\n}\n```\n\n### BitBar\n\nThe bitbar simulation is not complete. Only the following features are supported.\n\nThe text that appears in the status bar is the output of the script up until a line\ncontaining only `---`.\n\nAfter this, each line represents an item in a drop down menu. Submenus can be nested\narbitrarily by prefixing the line with `--` (one pair for each level of nesting).\n\nEach line can contain some paramters which appear after the first `|` as key value\npairs separated by an `=`.\n\n| Paramter Name | Effect                                       | Example                        |\n|---------------|----------------------------------------------|--------------------------------|\n| `href`        | Open the given URL or file.                  | href=https://www.google.com    |\n|               |                                              | href=/Applications/Firefox.app |\n| `bash`        | Run the given bash script                    | bash=/my/script.bash           |\n| `paramX`      | Arguments to pass to the bash script above   | bash=/script.sh param1=5 param2=example |\n\nMenu separators can be created with lines containing only `---`.\n\n### Example Scripts\n\nSee the scripts in the [scripts](./scripts) directory for some examples.\n\n### Multiple Menus\n\nBecause each instance of barbly creates just one menu, you need to launch\nmultiple processes to get multiple menus. If you launch them all from a\nscript, this can cause the order of the resulting menu items to depend on\nthe whims of the scheduler. This can be alleviated by yielding between\nspawning each process. A yield can be achieved by sleeping the process\nfor 0 seconds.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluke-clifton%2Fbarbly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluke-clifton%2Fbarbly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluke-clifton%2Fbarbly/lists"}