<blockquote>
<p>Probably not, the callback calls main_quit() which asks about unsaved files, so unless its a fast user or everything is saved, even longer is probably not enough.</p>
</blockquote>
<p>Like I said, we should fix this code then. At the very least Geany could save anything that doesn't require user-intervention, like the list of open files, preferences, etc.</p>
<blockquote>
<p>IIUC the systemd timeout only applies to services it starts, interactive GUI processes get theirs from the session manager, which IIUC is only required to give time to apps that registered for a "save yourself" call, which Geany is not.</p>
</blockquote>
<p>I'm certainly no expert here, but as I understand it, the "session managers" in X, Win, Macos, etc. are to allow applications to inhibit shutting down until the user can respond to request to save work (or some timeout expires, presumably). But I do not believe that they, even in the absence of any special hooks, just <code>SIGKILL</code> every process immediately. Graphical environments like X would presumably try to close the windows (as if the user clicked the X button), allowing them to save some state, or at the very least send a <code>SIGTERM</code> and give them N seconds to cleanup. Again, not an expert here, but the <code>SIGKILL</code> seems like the least likely thing "session managers" or any sane user-space process manager would do on shutdown (on a desktop/server/etc).</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/geany/geany/pull/1860#issuecomment-391570735">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABDrJ78nLknKupgsMzpHYv8EtL74FHBIks5t1h_IgaJpZM4UKt8l">mute the thread</a>.<img src="https://github.com/notifications/beacon/ABDrJ_EFGQ4mSBPSJ8LgqTqJw9sl0lcTks5t1h_IgaJpZM4UKt8l.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","potentialAction":{"@type":"ViewAction","target":"https://github.com/geany/geany/pull/1860#issuecomment-391570735","url":"https://github.com/geany/geany/pull/1860#issuecomment-391570735","name":"View Pull Request"},"description":"View this Pull Request on GitHub","publisher":{"@type":"Organization","name":"GitHub","url":"https://github.com"}}</script>
<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/geany/geany","title":"geany/geany","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/geany/geany"}},"updates":{"snippets":[{"icon":"PERSON","message":"@codebrainz in #1860: \u003e Probably not, the callback calls main_quit() which asks about unsaved files, so unless its a fast user or everything is saved, even longer is probably not enough.\r\n\r\nLike I said, we should fix this code then. At the very least Geany could save anything that doesn't require user-intervention, like the list of open files, preferences, etc.\r\n\r\n\u003e IIUC the systemd timeout only applies to services it starts, interactive GUI processes get theirs from the session manager, which IIUC is only required to give time to apps that registered for a \"save yourself\" call, which Geany is not.\r\n\r\nI'm certainly no expert here, but as I understand it, the \"session managers\" in X, Win, Macos, etc. are to allow applications to inhibit shutting down until the user can respond to request to save work (or some timeout expires, presumably). But I do not believe that they, even in the absence of any special hooks, just `SIGKILL` every process immediately. Graphical environments like X would presumably try to close the windows (as if the user clicked the X button), allowing them to save some state, or at the very least send a `SIGTERM` and give them N seconds to cleanup. Again, not an expert here, but the `SIGKILL` seems like the least likely thing \"session managers\" or any sane user-space process manager would do on shutdown (on a desktop/server/etc)."}],"action":{"name":"View Pull Request","url":"https://github.com/geany/geany/pull/1860#issuecomment-391570735"}}}</script>
<script type="application/ld+json">{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"hideOriginalBody": "false",
"originator": "37567f93-e2a7-4e2a-ad37-a9160fc62647",
"title": "Re: [geany/geany] Save project on file open/close (#1860)",
"sections": [
{
"text": "",
"activityTitle": "**Matthew Brush**",
"activityImage": "https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png",
"activitySubtitle": "@codebrainz",
"facts": [

]
}
],
"potentialAction": [
{
"name": "Add a comment",
"@type": "ActionCard",
"inputs": [
{
"isMultiLine": true,
"@type": "TextInput",
"id": "IssueComment",
"isRequired": false
}
],
"actions": [
{
"name": "Comment",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"IssueComment\",\n\"repositoryFullName\": \"geany/geany\",\n\"issueId\": 1860,\n\"IssueComment\": \"{{IssueComment.value}}\"\n}"
}
]
},
{
"name": "Close pull request",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"PullRequestClose\",\n\"repositoryFullName\": \"geany/geany\",\n\"pullRequestId\": 1860\n}"
},
{
"targets": [
{
"os": "default",
"uri": "https://github.com/geany/geany/pull/1860#issuecomment-391570735"
}
],
"@type": "OpenUri",
"name": "View on GitHub"
},
{
"name": "Unsubscribe",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n\"commandName\": \"MuteNotification\",\n\"threadId\": 338353957\n}"
}
],
"themeColor": "26292E"
}</script>