{"id":25075095,"url":"https://github.com/sideshowbarker/gh-notify","last_synced_at":"2025-03-31T21:27:02.854Z","repository":{"id":275536549,"uuid":"926369639","full_name":"sideshowbarker/gh-notify","owner":"sideshowbarker","description":"🔔 gh-notify mark-notifications-as-done fork; fzf-built GitHub-CLI TUI ext.","archived":false,"fork":false,"pushed_at":"2025-02-12T08:06:33.000Z","size":432,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T02:38:50.673Z","etag":null,"topics":["fzf","gh-extension","github-cli","github-notifications","tui"],"latest_commit_sha":null,"homepage":"https://sideshowbarker.net/gh-notify/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sideshowbarker.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":"2025-02-03T05:53:48.000Z","updated_at":"2025-02-12T08:06:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"2f9527c2-60e6-4960-a847-421d45f3ffbc","html_url":"https://github.com/sideshowbarker/gh-notify","commit_stats":null,"previous_names":["sideshowbarker/gh-notify"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sideshowbarker%2Fgh-notify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sideshowbarker%2Fgh-notify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sideshowbarker%2Fgh-notify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sideshowbarker%2Fgh-notify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sideshowbarker","download_url":"https://codeload.github.com/sideshowbarker/gh-notify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246543049,"owners_count":20794325,"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":["fzf","gh-extension","github-cli","github-notifications","tui"],"created_at":"2025-02-07T00:29:59.804Z","updated_at":"2025-03-31T21:27:02.848Z","avatar_url":"https://github.com/sideshowbarker.png","language":"Shell","funding_links":[],"categories":["🆕 Recently Updated"],"sub_categories":[],"readme":"# GitHub CLI extension TUI for viewing your notifications\n\n[fzf](https://github.com/junegunn/fzf#installation)-built [GitHub CLI](https://github.com/cli/cli) extension [TUI](https://en.wikipedia.org/wiki/Text-based_user_interface) to view [your GitHub notifications](https://github.com/notifications) from your terminal — _and mark them as done_.\n\n\u003e [!NOTE]\n\u003e This is a [meiji163/gh-notify](https://github.com/meiji163/gh-notify) fork that adds the capability to mark notifications as done.\n\nhttps://github.com/meiji163/gh-notify/assets/92653266/b7d7fcdb-8a25-43fc-8f63-d11f30960084\n\n## Install\n\nMake sure you have the [GitHub CLI](https://github.com/cli/cli#installation) (the `gh` command) and [fzf](https://github.com/junegunn/fzf#installation) installed. Then:\n\n```sh\n# install\ngh ext install sideshowbarker/gh-notify\n# upgrade\ngh ext upgrade sideshowbarker/gh-notify\n# uninstall\ngh ext remove sideshowbarker/gh-notify\n```\n\n\u003e [!IMPORTANT]\n\u003e To actually be able to use `gh notify` as an interactive [TUI](https://en.wikipedia.org/wiki/Text-based_user_interface), you _must_ install [fzf](https://github.com/junegunn/fzf#installation).\n\n## Usage\n\n```\ngh notify [options]\n```\n\n| Options | Description                                             | Example                                              |\n| :------ | :------------------------------------------------------ | :--------------------------------------------------- |\n|  _none_ | show all unread notifications                           | `gh notify`                                            |\n| `-a`      | show all (read/ unread) notifications                   | `gh notify -a`                                         |\n| `-e`      | exclude notifications matching a string (REGEX support) | `gh notify -e \"MyJob\"`                                 |\n| `-f`      | filter notifications matching a string (REGEX support)  | `gh notify -f \"Repo\"`                                  |\n| `-h`      | show the help page                                      | `gh notify -h`                                         |\n| `‑n NUM`  | max number of notifications to show                     | `gh notify -an 10`                                     |\n| `-p`      | show only participating or mentioned notifications      | `gh notify -ap`                                        |\n| `-r`      | mark all notifications as read                          | `gh notify -r`                                         |\n| `-s`      | print a static display                                  | `gh notify -an 10 -s`                                  |\n| `‑u URL`  | (un)subscribe a URL, useful for issues/PRs of interest  | `gh notify -u \u003curl\u003e`                                   |\n| `-w`      | display the preview window at startup                   | `gh notify -an 10 -w`                                  |\n\n### Key bindings fzf\n\n| Key       | Description                                                       | Customization environment variable |\n| :-------- | :--------------------------------------------------               | :--------------------------------- |\n| `?`         | toggle help                                                       | `GH_NOTIFY_TOGGLE_HELP_KEY`          |\n| `↑↓`        | move the pointer up/down                                          |                                    |\n| `ctrl-j/k`  | move the pointer up/down                                          |                                    |\n| `ctrl-n/p`  | move the pointer up/down                                          |                                    |\n| `enter`     | show issue/PR for notification at pointer                         | `GH_NOTIFY_VIEW_KEY`                 |\n| `tab`       | show/hide preview for notification at pointer                     | `GH_NOTIFY_TOGGLE_PREVIEW_KEY`       |\n| `shift‑tab` | resize the preview window                                         | `GH_NOTIFY_RESIZE_PREVIEW_KEY`       |\n| `shift‑↑↓`  | scroll the preview-window contents up/down                        |                                    |\n| `ctrl-a`    | mark all displayed notifications as read, and reload                | `GH_NOTIFY_MARK_ALL_READ_KEY`        |\n| `ctrl-b`    | open in browser                                                   | `GH_NOTIFY_OPEN_BROWSER_KEY`         |\n| `ctrl-d`    | view diff                                                         | `GH_NOTIFY_VIEW_DIFF_KEY`            |\n| `ctrl-f`    | view diff in patch format                                         | `GH_NOTIFY_VIEW_PATCH_KEY`           |\n| `ctrl-r`    | reload                                                            | `GH_NOTIFY_RELOAD_KEY`               |\n| `ctrl-t`    | mark selected notification as read, and reload                | `GH_NOTIFY_MARK_READ_KEY`            |\n| `ctrl-w`    | mark selected notification as read+done, and reload       | `GH_NOTIFY_MARK_READ_KEY`            |\n| `ctrl-x`    | write a comment with the editor and quit                          | `GH_NOTIFY_COMMENT_KEY`              |\n| `ctrl-y`    | toggle the selected notification                                  | `GH_NOTIFY_TOGGLE_KEY`               |\n| `esc`       | quit                                                              |                                    |\n\n### Notifications-list format\n\n![image](https://github.com/user-attachments/assets/f54363a3-9e19-4ab9-b755-bec448e7812a)\n\n| Column                        | Description                                                  |\n| ----------------------        | ------------------------------------------------------------ |\n| `▶` (red)                       | pointer                                                      |\n| `•` (magenta)                   | indicates unread status                                      |\n| `0h ago` / `01 Foo 00:00`         | time of last read for unread; otherwise, time of last update |\n| `foo/bar`                       | repository that generated the notification                   |\n| `Issue`/`PullRequest`/`Discussion`  | issue/PR/discussion number                                   |\n| `#0000`                         | associated number                                            |\n| `subscribed`, etc.              | trigger reason                                               |\n| `Foo the bar baz`               | issue/PR/discussion title                                    |\n\n---\n\n## Customizations\n\n### fzf\n\nYou can customize the `fzf` key bindings by exporting particular environment variables to your environment. For available keys and events, see `man fzf` or the [Environment-variables](https://github.com/junegunn/fzf#environment-variables) section of the `fzf` online docs.\n\n\u003e [!NOTE]\n\u003e [How to use ALT commands in a terminal on macOS?](https://superuser.com/questions/496090/how-to-use-alt-commands-in-a-terminal-on-os-x)\n\n```sh\n# ~/.bashrc or ~/.zshrc\n# The examples below enable you to clear the input query with alt+c,\n# jump to the first/last result with alt+u/d, refresh the preview window with alt+r\n# and scroll the preview in larger steps with ctrl+w/s.\nexport FZF_DEFAULT_OPTS=\"\n--bind 'alt-c:clear-query'\n--bind 'alt-u:first,alt-d:last'\n--bind 'alt-r:refresh-preview'\n--bind 'ctrl-w:preview-half-page-up,ctrl-s:preview-half-page-down'\"\n```\n\n#### GH_NOTIFY_FZF_OPTS\n\nThis environment variable lets you specify additional options and key bindings to customize the search and display of notifications. Unlike `FZF_DEFAULT_OPTS`, `GH_NOTIFY_FZF_OPTS` specifically applies to the `gh notify` extension.\n\n```sh\n# --exact: Enables exact matching instead of fuzzy matching.\nGH_NOTIFY_FZF_OPTS=\"--exact\" gh notify -an 5\n```\n\n```sh\n# With the height flag and ~, fzf adjusts its height based on input size without filling the entire screen.\n# Requires fzf +0.34.0\nGH_NOTIFY_FZF_OPTS=\"--height=~100%\" gh notify -an 5\n```\n\n#### Modify key bindings\n\nYou can also customize the key bindings to your liking. For example, to make `ctrl-o` be the key binding for opening a browser on the notification currently pointed to, you can do this:\n\n```sh\nGH_NOTIFY_OPEN_BROWSER_KEY=\"ctrl-o\" gh notify\n```\n\n\u003e [!NOTE]\n\u003e Any key you assign a binding for must be a key listed as valid in the `fzf` man page:\n\u003e\n\u003e ```sh\n\u003e man --pager='less -p \"AVAILABLE KEYS\"' fzf\n\u003e ```\n\n### Specify preferred editor\n\nIn the `gh` tool's config file, you can specify your preferred editor. This is particularly useful when you use the `ctrl-x` hotkey to comment on a notification.\n\n```sh\n# To see more details\ngh config\n# For example, you can set the editor to Visual Studio Code or Vim.\ngh config set editor \"code --wait\"\ngh config set editor vim\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsideshowbarker%2Fgh-notify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsideshowbarker%2Fgh-notify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsideshowbarker%2Fgh-notify/lists"}