{"id":22293569,"url":"https://github.com/xi/notification-hub","last_synced_at":"2025-03-25T22:18:13.766Z","repository":{"id":150048347,"uuid":"286946847","full_name":"xi/notification-hub","owner":"xi","description":"distraction-free notification daemon for simple linux desktops.","archived":false,"fork":false,"pushed_at":"2024-09-04T06:49:37.000Z","size":21,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-30T19:23:47.129Z","etag":null,"topics":["notifications","statusnotifieritem"],"latest_commit_sha":null,"homepage":"","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/xi.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":"2020-08-12T07:28:26.000Z","updated_at":"2024-09-05T11:48:44.000Z","dependencies_parsed_at":"2023-05-04T08:46:21.229Z","dependency_job_id":null,"html_url":"https://github.com/xi/notification-hub","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xi%2Fnotification-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xi%2Fnotification-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xi%2Fnotification-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xi%2Fnotification-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xi","download_url":"https://codeload.github.com/xi/notification-hub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245550681,"owners_count":20633883,"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":["notifications","statusnotifieritem"],"created_at":"2024-12-03T17:29:40.911Z","updated_at":"2025-03-25T22:18:13.745Z","avatar_url":"https://github.com/xi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Notification Hub\n\nDistraction-free notification daemon for simple linux desktops.\n\n-\tNotifications are never displayed directly on screen to avoid distraction.\n-\tIf there are notifications, a status indicator is displayed. Clicking on that\n\tindicator reveals the current notifications in a menu.\n-\tNotifications are grouped by application. Only the latest notification for\n\teach application is shown.\n-\tClicking on a notification removes it from the menu.\n\n## Dependencies\n\n-\t[python3-gi](https://docs.gtk.org/gio/)\n-\tgir1.2-gtk-3.0\n-\t[gir1.2-ayatanaappindicator3-0.1](https://lazka.github.io/pgi-docs/AyatanaAppIndicator3-0.1/classes/Indicator.html)\n\n## Known Limitations\n\n-\tOnly supports `app_name` and `summary`. Everything else\n\t(expiration, icons, HTML body, actions) is ignored.\n-\tLies about the supported features to other software to avoid fallbacks (e.g.\n\tin firefox)\n-\tDoes not display the summary of the previous notification if the latest one is\n\tclosed.\n-\tApplications rarely close notifications that are no longer relevant (e.g.\n\tbecause you have just looked at the your new messages). So you have to close\n\tthem manually.\n\n## Background\n\nI hate notifications. They are totally distracting and sometimes even leak\nprivate information when they display the entirety of a private message while\nsomeone else is looking at my screen.\n\nStatus indicators on the other hand are great. Tiny bits of information that I\ncan access at any time. Am I connected to the network? Are my speakers muted?\nWhat is my current keyboard layout? Do I have unread messages? So easy to see\nand completely non-distracting. A changing status indicator is just subtle\nenough to be noticeable while staying out of the way.\n\nUnfortunately, while the linux world has pretty much settled on a [standard for\nnotifications](https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html),\nstatus indicators are in peril:\n\nX11 protocols such as\n[`_NET_WM_STATE_DEMANDS_ATTENTION`](https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html)\nand [system\ntray](https://specifications.freedesktop.org/systemtray-spec/systemtray-spec-latest.html)\nhave been out of fashion for a while, but wayland will probably be the final\nblow. Ubuntu toyed with something called [app\nindicators](https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators)\nfor a while which was picked up by KDE and is now called\n[StatusNotifierItem](https://freedesktop.org/wiki/Specifications/StatusNotifierItem/).\nThe original GTK implementation is now maintained by a small team under the name\nof [AyatanaAppIndicator](https://sunweavers.net/blog/node/67). Gnome on the\nother hand decided to [ditch status indicators\ncompletly](https://blogs.gnome.org/aday/2017/08/31/status-icons-and-gnome/). In\ntheir official documentation they even suggest to use notifications instead of\nstatus indicators. Preposterous!\n\nIrony aside, I can understand much of the criticism towards both the old system\ntray and status indicators in general. I also agree that there are many cases\nwhere status indicators are not the right tool and something else should be used\ninstead. But still, for some cases they are just perfect.\n\nWhat ever the reasons, we now have a situation where application authors have no\nclear guidance on how to implement status indicators and therefore don't do it.\nSo if you disable notifications (because you hate them) and a chat program has\nno status indicator, there is just no way to get notified of new messages.\n\nThe silver lining here is that notifications and status are somewhat related.\nFor example, you can have a status indicator that only displays whether there\nare any new notifications. This project is an experiment around exactly that\nidea.\n\n## Similar projects\n\n-\t[Rofication](https://github.com/DaveDavenport/Rofication) has similar goals\n\tbut does not use StatusNotifierItem\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxi%2Fnotification-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxi%2Fnotification-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxi%2Fnotification-hub/lists"}