{"id":13751944,"url":"https://github.com/ye11ow/noti","last_synced_at":"2025-04-14T20:16:25.641Z","repository":{"id":46999662,"uuid":"228534218","full_name":"ye11ow/noti","owner":"ye11ow","description":"Noti is a Mac OS X menu bar plugin to show the status of pull requests","archived":false,"fork":false,"pushed_at":"2021-10-01T22:58:04.000Z","size":616,"stargazers_count":12,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T20:16:20.332Z","etag":null,"topics":["github","gitlab","gitlab-ci","macos","travis-ci","xbar-plugin"],"latest_commit_sha":null,"homepage":"https://ye11ow.github.io/noti/","language":"Python","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/ye11ow.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}},"created_at":"2019-12-17T04:43:24.000Z","updated_at":"2024-09-04T11:36:02.000Z","dependencies_parsed_at":"2022-07-21T06:32:18.522Z","dependency_job_id":null,"html_url":"https://github.com/ye11ow/noti","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ye11ow%2Fnoti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ye11ow%2Fnoti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ye11ow%2Fnoti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ye11ow%2Fnoti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ye11ow","download_url":"https://codeload.github.com/ye11ow/noti/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248952357,"owners_count":21188427,"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":["github","gitlab","gitlab-ci","macos","travis-ci","xbar-plugin"],"created_at":"2024-08-03T09:00:57.406Z","updated_at":"2025-04-14T20:16:25.614Z","avatar_url":"https://github.com/ye11ow.png","language":"Python","funding_links":[],"categories":["Developer Utilities"],"sub_categories":["Git \u0026 GitHub"],"readme":"# Noti\n\n[![Build Status](https://github.com/ye11ow/noti/actions/workflows/python-app.yml/badge.svg)](https://github.com/ye11ow/noti/actions)\n[![Coverage Status](https://coveralls.io/repos/github/ye11ow/noti/badge.svg?branch=main)](https://coveralls.io/github/ye11ow/noti?branch=main)\n\nNoti is a Mac OS X menu bar plugin to show the status of pull requests (merge requests). It is distributed as a plugin of [xbar](https://xbarapp.com/)(former **Bitbar**).\n\n![Tutorial](https://github.com/ye11ow/noti/blob/main/docs/images/Bitbar.png?raw=true)\n\n* The background color indicate the status of the CI job behind this pull request\n    * \u003cfont color=\"Green\"\u003eGreen\u003c/font\u003e: Job passed\n    * \u003cfont color=\"blue\"\u003eBlue\u003c/font\u003e: Job is running\n    * \u003cfont color=\"red\"\u003eRed\u003c/font\u003e: Job failed\n* Emojis:\n    * 👍: Pull request is approved (or approval is optional)\n    * 🏃: The CI job is running\n    * 🙃: Number of pull requests that failed the CI job\n    * 💬: Number of pull reuqest comments\n\n## Installation\n1. Make sure both `xbar` and `python3` (\u003e=3.6) are installed on your machine.\n\n1. Clone this repo and move `noti.py` to your xbar plugin folder as `noti.{time}.py`. The `{time}` is the refresh interval. For instance, renaming to `noti.30s.py` will lead to a  30 seconds' refresh interval. For detailed instruction, you can refer to https://github.com/matryer/xbar-plugins/blob/main/CONTRIBUTING.md#configure-the-refresh-time.\n\n1. Edit the shebang of `noti.{time}.py` to make sure it points to the right Python interpreter (default `/usr/local/bin/python3`). \n\n1. Install the python dependencies `/usr/local/bin/python3 -m pip install -r requirements.txt`.\n\n1. Configure noti to connect to your Gitlab or Github. You can either edit the config file under `$HOME/.noticonfig.json` or select `Configure noti` on the dropdown menu. Please refer to the Configurations section for details.\n\n1. You should be able to see the status on your menubar if everything is setup properly. Enjoy!😃.\n\n## Configurations\n\n```javascript\n// Noti will automatically create this file under $HOME/.noticonfig.json if it doesn't exist\n{\n    // Gitlab related configurations\n    \"gitlab\": {\n        // [REQUIRED] Go to the \"User Settings\" -\u003e \"Access Tokens\" page, create a Personal Access Token with \"api\" Scopes\n        \"token\": \"\",\n\n        // [REQUIRED] Go to the home page of the repo, you will find the Project ID under the name of the repo (in grey).\n        \"project_id\": [],\n\n        // [Optional] The host of the gitlab server. Leave it empty to use the public Gitlab server.\n        \"host\": \"\",\n\n        // [Optional] Filters\n        \"filters\": {\n            \n            // Filter by the usernames. The username here is the @ ID\n            \"usernames\": []\n        }\n    },\n\n    // Github related configurations\n    \"github\": {\n        // [REQUIRED] Go to Github \"Settings\" -\u003e \"Developer settings\" -\u003e \"Personal access tokens\" and \"Generate new token\" with \"repo\" scopes\n        \"token\": \"\",\n\n        // [REQUIRED] The name of the repo. e.g. \"ye11ow/noti\"\n        \"repo\": [],\n\n        // [Optional] The host of the github server. Leave it empty to use the public Github server.\n        \"host\": \"\",\n\n        // [Optional] Filters\n        \"filters\": {\n            \n            // Filter by the usernames. The username here is the ID. e.g. https://github.com/ye11ow ye11ow is the username.\n            \"usernames\": []\n        }\n    },\n\n    // [Optional] Customize the emoji\n    \"emoji\": {\n\n        // Show on the title when there isn't any status\n        \"good_day\": \"😃\",\n\n        // The MR is approved\n        \"approved\": \"👍\",\n\n        // The pipeline behind this MR is currently running\n        \"running\": \"🏃\",\n\n        // The pipeline is failed\n        \"failed\": \"🙃\",\n\n        // Number of comments\n        \"comments\": \"💬\"\n    }\n}\n```\n\n## Features\n\n### Supported VCS\n\n- [X] Gitlab + Gitlab pipeline\n- [X] Github + Travis CI\n- [ ] Github + Github Action\n- [ ] Bitbucket + Bitbucket pipeline\n\n### Supported GUI\n\n- [X] xbar\n- [ ] Native Mac app\n- [ ] VS Code\n- [ ] Terminal ([WTF](https://wtfutil.com/) maybe?)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fye11ow%2Fnoti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fye11ow%2Fnoti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fye11ow%2Fnoti/lists"}