Close open windows gracefully and save them as a session. And you can restore them when necessary manually or automatically at startup. Most importantly, it supports both X11 and Wayland! Main features: - Restore the previous session at startup. disabled by default. - Save running apps and windows automatically when necessary, this will be used to restore the previous session at startup. - Close running apps and windows automatically before Log Out, Restart, Power Off. disabled by default. - Close running windows gracefully - Close apps with multiple windows gracefully via ydotool so you don't lose sessions of this app (See also: How to make Close by rules work) - Save running apps and windows manually - Restore a selected session at startup (See also: #9). disabled by default. - Restore a saved session manually - Restore window state, including Always on Top, Always on Visible Workspace and maximization - Restore window workspace, size and position - Restore 2 column window tiling - Stash all supported window states so that those states will be restored after gnome shell restarts via Alt+F2 -> r or killall -3 gnome-shell. - Move windows to their own workspace according to a saved session - Support multi-monitor - Remove saved session to trash - Search saved session by the session name fuzzily For more information, please visit https://github.com/nlpsuge/gnome-shell-extension-another-window-session-manager/blob/feature-close-save-session-while-logout/README.md. Please report issues on Github.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
| Version | Status |
|---|---|
| 50 | Active |
| 49 | Active |
| 48 | Active |
| 47 | Active |
| 46 | Active |
| 45 | Rejected |
| 44 | Rejected |
| 43 | Rejected |
| 42 | Rejected |
| 41 | Active |
| 40 | Active |
| 39 | Active |
| 38 | Active |
| 37 | Active |
| 36 | Active |
| 35 | Active |
| 34 | Active |
| 33 | Inactive |
| 32 | Rejected |
| 31 | Active |
| 30 | Active |
| 29 | Active |
| 28 | Active |
| 27 | Active |
| 26 | Active |
| 25 | Active |
| 24 | Active |
| 23 | Active |
| 22 | Active |
| 21 | Active |
| 20 | Active |
| 19 | Active |
| 18 | Active |
| 17 | Rejected |
| 16 | Active |
| 15 | Active |
| 14 | Rejected |
| 13 | Active |
| 12 | Rejected |
| 11 | Active |
| 10 | Active |
| 9 | Active |
| 8 | Inactive |
| 7 | Active |
| 6 | Active |
| 5 | Rejected |
| 4 | Active |
| 3 | Rejected |
| 2 | Rejected |
| 1 | Active |
1. Rejected because you forgot to remove the timeout (utils/tooltip.js line 251) in destroy. 2. Instead of doing this: ```js if (this._prefsUtils.isDebug()) { log('...'); } ``` Create a log function and use that: ```js function logDebug(text) { if (this._prefsUtils.isDebug()) { log(text); } } ``` now you only need to do `logDebug('my text');`
Hi JP, I'm preferring to hold all logs operation in a single file by adding a log.js under utils/ and code is: ```js 'use strict'; const ExtensionUtils = imports.misc.extensionUtils; const Me = ExtensionUtils.getCurrentExtension(); const PrefsUtils = Me.imports.utils.prefsUtils; const _prefsUtils = new PrefsUtils.PrefsUtils(); function debug(logContent) { if (_prefsUtils.isDebug()) { log(`[Another window session manager] ${logContent}`); } } ``` And I use the above function to debug like this: ```js ... const Log = Me.imports.utils.log; ... Log.debug(`Saved open windows as a session in ${session_file_path}!`); ``` It's working, but does it meet the guidelines? Can I create an object (const _prefsUtils = new PrefsUtils.PrefsUtils();) in log.js?
I'll create a Log class in log.js and create object in constructor() and destroy it in destroy() instead of above code. This should be a better way :)
You can do that but don't create objects in global scope, if they need to be initiated, you can create them in enable() and null the variable in disable().