{"id":13618683,"url":"https://github.com/Lautaro-Garcia/cl-notify","last_synced_at":"2025-04-14T13:31:31.006Z","repository":{"id":217074041,"uuid":"370504035","full_name":"Lautaro-Garcia/cl-notify","owner":"Lautaro-Garcia","description":"Send notifications to your desktop session","archived":false,"fork":false,"pushed_at":"2021-05-26T14:55:03.000Z","size":24,"stargazers_count":6,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-11-08T04:38:27.287Z","etag":null,"topics":["common-lisp","dbus","libnotify","lisp"],"latest_commit_sha":null,"homepage":"","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lautaro-Garcia.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":"2021-05-24T22:51:25.000Z","updated_at":"2024-07-07T16:35:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"4978fec8-51d4-4eb5-9458-76939cac2c44","html_url":"https://github.com/Lautaro-Garcia/cl-notify","commit_stats":null,"previous_names":["lautaro-garcia/cl-notify"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lautaro-Garcia%2Fcl-notify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lautaro-Garcia%2Fcl-notify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lautaro-Garcia%2Fcl-notify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lautaro-Garcia%2Fcl-notify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lautaro-Garcia","download_url":"https://codeload.github.com/Lautaro-Garcia/cl-notify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248888628,"owners_count":21178092,"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":["common-lisp","dbus","libnotify","lisp"],"created_at":"2024-08-01T21:00:28.905Z","updated_at":"2025-04-14T13:31:30.642Z","avatar_url":"https://github.com/Lautaro-Garcia.png","language":"Common Lisp","funding_links":[],"categories":["Useful Common Lisp libs"],"sub_categories":[],"readme":"# Show notifications in your desktop\n\nCommon lisp library to send notifications to your desktop through D-Bus (kinda as a `libnotify` replacement).\n\nIt follows the [Desktop Notification Specification](https://developer.gnome.org/notification-spec)\n\n## Examples\n```common-lisp\n;; Send a basic notification\n(send-notification \"Something\" :app-name \"My application\" :timeout-in-millis 10000)\n\n;; Close notification\n(clear *)\n\n;; Send a notification with actions (buttons)\n(send-notification \"With buttons\" :actions '(\"id1\" \"Do this!\" \"id2\" \"Do this other thing!\"))\n\n;; Update previous notification to add a body and an urgency level\n(update * :body '(:b \"If your notification server supports this, this will be bold!\")\n          :hints (list (critical-urgency-hint)))\n\n;; A more complex body\n(send-notification \"This is the title\"\n                   :app-icon \"media-record\"\n                   :body '(\"Look at \" (:u \"this image \") (:br)\n                           (:img \"file://home/user/lisp.png\" \"Common lisp\") (:br)\n                           (:a \"https://github.com/Lautaro-Garcia/cl-notify\" \"click this link to see more info\")))\n\n;; Arbitrary hints (you should check if your implementation actually uses them)\n(send-notification \"A summary\"\n                   :hints (list (make-hint \"action-icons\" '(:boolean) t))\n                   :actions '(\"id\" \"email\"))\n```\n\n## Listen for events (notification closes or buttons were pushed)\n```common-lisp\n;; The signal handling loop starts in the background when you define a callback.\n(define-callback my-callback :action (notification-id action-id)\n  (format t \"The action ~a in the notification ~a was clicked\" action-id notification-id))\n\n(define-callback my-callback :close (notification-id reason)\n  (format t \"The notification ~a was closed! The reason was ~a\" notification-id reason))\n\n;; You could do the same without using the macro\n(register-callback :close 'my-callback\n                   (lambda (notification-id reason)\n                     (format t \"The notification ~a was closed! The reason was ~a\" notification-id reason))))\n\n;; You can unregister a callback by its name and type\n(unregister-callback :close 'my-callback)\n\n;; You can stop handling signals (this also deletes every callback)\n(stop-signal-handling-loop)\n```\n\n## Get information about your notification server\n```common-lisp\n(notification-server-info) ;; =\u003e #\u003cSERVER-INFORMATION name=\"Plasma\" version=\"5.21.5\" vendor=\"5.21.5\" spec-version=\"1.2\"\u003e\n(notification-server-capabilities) ;; =\u003e (\"body\" \"body-hyperlinks\" \"body-markup\" \"body-images\" \"icon-static\" \"actions\")\n```\n\n## Requirements\nYou'll need to have `libfixposix` installed in your system in order to use this library (it's a [dbus](https://github.com/death/dbus) dependency)\n\n## Running the tests\n```common-lisp\n(asdf:test-system :cl-notify)\n```\n\n## Further documentation\nYou should probably read the [Desktop Notification Specification](https://developer.gnome.org/notification-spec) if you'd like to know\nthe actions, signals and values available in this library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLautaro-Garcia%2Fcl-notify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLautaro-Garcia%2Fcl-notify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLautaro-Garcia%2Fcl-notify/lists"}