{"action":"created","issue":{"url":"https://api.github.com/repos/AppImage/libappimage/issues/28","repository_url":"https://api.github.com/repos/AppImage/libappimage","labels_url":"https://api.github.com/repos/AppImage/libappimage/issues/28/labels{/name}","comments_url":"https://api.github.com/repos/AppImage/libappimage/issues/28/comments","events_url":"https://api.github.com/repos/AppImage/libappimage/issues/28/events","html_url":"https://github.com/AppImage/libappimage/issues/28","id":388541028,"node_id":"MDU6SXNzdWUzODg1NDEwMjg=","number":28,"title":"Move to/delete from $HOME/.local/share transactionally (all at once)","user":{"login":"probonopd","id":2480569,"node_id":"MDQ6VXNlcjI0ODA1Njk=","avatar_url":"https://avatars3.githubusercontent.com/u/2480569?v=4","gravatar_id":"","url":"https://api.github.com/users/probonopd","html_url":"https://github.com/probonopd","followers_url":"https://api.github.com/users/probonopd/followers","following_url":"https://api.github.com/users/probonopd/following{/other_user}","gists_url":"https://api.github.com/users/probonopd/gists{/gist_id}","starred_url":"https://api.github.com/users/probonopd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/probonopd/subscriptions","organizations_url":"https://api.github.com/users/probonopd/orgs","repos_url":"https://api.github.com/users/probonopd/repos","events_url":"https://api.github.com/users/probonopd/events{/privacy}","received_events_url":"https://api.github.com/users/probonopd/received_events","type":"User","site_admin":false},"labels":[{"id":1083445755,"node_id":"MDU6TGFiZWwxMDgzNDQ1NzU1","url":"https://api.github.com/repos/AppImage/libappimage/labels/PRs%20welcome","name":"PRs welcome","color":"e8007b","default":false},{"id":1027715290,"node_id":"MDU6TGFiZWwxMDI3NzE1Mjkw","url":"https://api.github.com/repos/AppImage/libappimage/labels/enhancement","name":"enhancement","color":"a2eeef","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2018-12-07T07:45:41Z","updated_at":"2018-12-07T18:08:23Z","closed_at":null,"author_association":"MEMBER","body":"Currently libappimage directly extracts e.g., desktop files directly to `$HOME/.local/share` (or deletes them from) on each invocation of\r\n\r\n* appimage_type1_register_in_system\r\n* appimage_type2_register_in_system\r\n* appimage_unregister_in_system \r\n\r\nEach change in `/.local/share` can trigger local caches such as Sycoca to be re-generated, which results in a _lot_ of CPU activity.\r\n\r\nSo we should also apply the same logic that @rszibele used in https://github.com/AppImage/appimaged/pull/50 to all files (desktop files, icon files, mime type files and such) that get copied to `HOME/.local/share` for system integration.\r\n\r\nWe should only _atomically_ (=everything in one go) move files to (from a temporary location to which they get extracted and modified in) or delete files from `$HOME/.local/share` after a certain timer of inactivity has passed.\r\n\r\nWe should do all editing/rewriting of desktop files outside of `HOME/.local/share` in a separate directory.\r\n\r\nThis will solve:\r\n\r\n* https://github.com/AppImage/appimaged/issues/12\r\n* https://github.com/AppImage/appimaged/issues/19"},"comment":{"url":"https://api.github.com/repos/AppImage/libappimage/issues/comments/445316712","html_url":"https://github.com/AppImage/libappimage/issues/28#issuecomment-445316712","issue_url":"https://api.github.com/repos/AppImage/libappimage/issues/28","id":445316712,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0NTMxNjcxMg==","user":{"login":"TheAssassin","id":4503202,"node_id":"MDQ6VXNlcjQ1MDMyMDI=","avatar_url":"https://avatars3.githubusercontent.com/u/4503202?v=4","gravatar_id":"","url":"https://api.github.com/users/TheAssassin","html_url":"https://github.com/TheAssassin","followers_url":"https://api.github.com/users/TheAssassin/followers","following_url":"https://api.github.com/users/TheAssassin/following{/other_user}","gists_url":"https://api.github.com/users/TheAssassin/gists{/gist_id}","starred_url":"https://api.github.com/users/TheAssassin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TheAssassin/subscriptions","organizations_url":"https://api.github.com/users/TheAssassin/orgs","repos_url":"https://api.github.com/users/TheAssassin/repos","events_url":"https://api.github.com/users/TheAssassin/events{/privacy}","received_events_url":"https://api.github.com/users/TheAssassin/received_events","type":"User","site_admin":false},"created_at":"2018-12-07T18:08:23Z","updated_at":"2018-12-07T18:08:23Z","author_association":"MEMBER","body":"No, all these implicitnesses are actually _really_ bad design. These kinds of usages are something to be handled on a higher level, as they don't fit every use case (only appimaged could make use of this, but for e.g., AppImageLauncher, we want a prompt result, and the application might even _exit_ before that timer expires...). appimagelauncherd for instance handles this just fine on such a higher level, but could definitely benefit from a batch integrator."}}
{"actor":{"display_login":"TheAssassin"}}