{"id":15533263,"url":"https://github.com/keyweeusr/org-epa-gpg","last_synced_at":"2025-08-10T00:06:41.036Z","repository":{"id":153046474,"uuid":"445755927","full_name":"KeyWeeUsr/org-epa-gpg","owner":"KeyWeeUsr","description":"Enable toggling inline images in org-mode for epa-enabled / encrypted files","archived":false,"fork":false,"pushed_at":"2024-12-07T00:00:26.000Z","size":99,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-16T12:17:00.131Z","etag":null,"topics":["easypg","emacs","emacs-lisp","emacs-package","epa","gpg","gpg-encryption","melpa","melpa-badge","org","org-mode","package"],"latest_commit_sha":null,"homepage":"","language":"Emacs 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/KeyWeeUsr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","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,"zenodo":null},"funding":{"github":"KeyWeeUsr","buy_me_a_coffee":"peterbadida","liberapay":"keyweeusr","custom":["https://paypal.me/peterbadida"]}},"created_at":"2022-01-08T07:40:04.000Z","updated_at":"2025-05-26T06:25:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"4eed70e3-87eb-469f-978c-4bcf19239465","html_url":"https://github.com/KeyWeeUsr/org-epa-gpg","commit_stats":{"total_commits":21,"total_committers":1,"mean_commits":21.0,"dds":0.0,"last_synced_commit":"47357e0dcfb8860d5d5aa9f22c12e547a0eb50e9"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/KeyWeeUsr/org-epa-gpg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KeyWeeUsr%2Forg-epa-gpg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KeyWeeUsr%2Forg-epa-gpg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KeyWeeUsr%2Forg-epa-gpg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KeyWeeUsr%2Forg-epa-gpg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KeyWeeUsr","download_url":"https://codeload.github.com/KeyWeeUsr/org-epa-gpg/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KeyWeeUsr%2Forg-epa-gpg/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269654977,"owners_count":24454351,"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","status":"online","status_checked_at":"2025-08-09T02:00:10.424Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["easypg","emacs","emacs-lisp","emacs-package","epa","gpg","gpg-encryption","melpa","melpa-badge","org","org-mode","package"],"created_at":"2024-10-02T11:35:10.417Z","updated_at":"2025-08-10T00:06:41.000Z","avatar_url":"https://github.com/KeyWeeUsr.png","language":"Emacs Lisp","funding_links":["https://github.com/sponsors/KeyWeeUsr","https://buymeacoffee.com/peterbadida","https://liberapay.com/keyweeusr","https://paypal.me/peterbadida","https://www.buymeacoffee.com/peterbadida"],"categories":[],"sub_categories":[],"readme":"# org-epa-gpg\n[![MELPA][melpa-badge]][melpa-package]\n[![MELPA Stable][melpa-stable-badge]][melpa-stable-package]\n[![CI][ci-badge]][ci-workflow]\n[![Coverage Status][cover-badge]][cover-link]\n[![Buy me a coffee][bmc-badge]][bmc-link]\n[![Liberapay][lp-badge]][lp-link]\n[![PayPal][ppl-badge]][ppl-link]\n\nThis is a patch that attempts to fix image inlining (C-c C-x C-v) in\nthe org-mode for images that are encrypted AND end with \".gpg\" extension.\n\n## How to\n\nInstall it from [Melpa](https://melpa.org/#/getting-started) or clone and\ninstall manually.\n\nTo start, add these mandatory lines to your config file:\n\n```emacs-lisp\n(use-package org-epa-gpg\n  :ensure t\n  :after epa-file\n  :config (org-epa-gpg-enable))\n```\n\n## Notes on purging\n\nThe cleaning of the decrypted content (in /tmp via (make-temp-file) )\nis currently done via patching (org-remove-inline-images) with a custom\nhook (so that it's purged on (C-c C-x C-v) untoggling and via attaching\nto multiple standard hooks.\n\n### Attempted\n\nWhat I attempted to make it less insane:\n* purge the files right after decrypting and loading\n  -\u003e this causes an empty rectangle to be shown in the buffer\n* hook to standard hooks such as:\n  * buffer-list-update-hook\n    -\u003e basically kills Emacs by making it frozen due to too many updates\n    and the initial startup with few hundreds of buffers opened is\n    a time to go for a coffee\n  * change-major-mode / after-change-major-mode-hook / org-mode-hook\n    -\u003e is unreliable from security perspective due to being too slow\n\n### Current behavior\n\nSo I added the purging to these hooks so that an action of \"going away\"\nfrom the org buffer or from Emacs alone, which would potentially endanger\nthe unencrypted data, would also purge them. It's also trying to minimize\ntheir overall presence too `org-epa-gpg-purging-hooks`.\n\nA timer could possibly be added with a very short interval, but it doesn't seem\nfeasible if the amount of images is more than a few (large Org documents) due\nto 1:1 (image:purger) relationship in `list-timers' possibly hogging Emacs down\nreadability-/resource-wise.  Or at least, if turned on by default.\n\n[melpa-badge]: http://melpa.org/packages/org-epa-gpg-badge.svg\n[melpa-package]: http://melpa.org/#/org-epa-gpg\n[melpa-stable-badge]: http://stable.melpa.org/packages/org-epa-gpg-badge.svg\n[melpa-stable-package]: http://stable.melpa.org/#/org-epa-gpg\n[bmc-badge]: https://img.shields.io/badge/-buy_me_a%C2%A0coffee-gray?logo=buy-me-a-coffee\n[bmc-link]: https://www.buymeacoffee.com/peterbadida\n[ppl-badge]: https://img.shields.io/badge/-paypal-grey?logo=paypal\n[ppl-link]: https://paypal.me/peterbadida\n[lp-badge]: https://img.shields.io/badge/-liberapay-grey?logo=liberapay\n[lp-link]: https://liberapay.com/keyweeusr\n[ci-badge]: https://github.com/KeyWeeUsr/org-epa-gpg/actions/workflows/test.yml/badge.svg\n[ci-workflow]: https://github.com/KeyWeeUsr/org-epa-gpg/actions/workflows/test.yml\n[cover-badge]: https://coveralls.io/repos/github/KeyWeeUsr/org-epa-gpg/badge.svg?branch=master\n[cover-link]: https://coveralls.io/github/KeyWeeUsr/org-epa-gpg?branch=master\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeyweeusr%2Forg-epa-gpg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeyweeusr%2Forg-epa-gpg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeyweeusr%2Forg-epa-gpg/lists"}