Shows a button on the edge of the screen for each minimized window. Click to maximize again. Includes settings that let you customize it: - Position: top, bottom, left and right - Cover behaviour: front, leave space, autohide and autohide always - Button Style - Margins - Show in Overview (or not) - Per Workspace Buttons (or always show all buttons) - Drag-and-Drop behaviour Touch support: With the right settings, the extension is actually becoming quite usable on touch-only devices: - enable drag scroll hack(Settings/Misc.): use button drag movement to control container scroll, since touch scroll is not working on the button-container. - autohide global event hook(Settings/Misc.): for autohide on touch devices. its insanity, but works fine. But only use it for touch AND autohide. - Autohide: set detect container size (Settings/Cover Options). Size 1 works for nicely calibrated touch display, especially with a pen. Adjust size if that is not working for you. - enable snapback (Settings/Misc.): snap back button if dropped outside the buttoncontainer. lets not have windows open on lazy swiping.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-L-003 warning
signals connected by extension should be disconnected in disable()
Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.
extension.js:30
this.#settingsConnector.connect()
EGO-M-004 error
metadata shell-version must only include plausible stable releases and at most one development release
Field `shell-version` contains invalid values, more than one development release, or implausible future releases.
metadata.json must be well-formed
metadata.json
shell-version=['48', '49', '50', '51']
| Version | Status |
|---|---|
| 13 | Active |
| 12 | Rejected |
| 11 | Active |
| 10 | Active |
| 9 | Active |
| 8 | Active |
| 7 | Rejected |
| 6 | Rejected |
| 5 | Active |
| 4 | Rejected |
| 3 | Active |
| 2 | Active |
| 1 | Rejected |
sorry about the unremoved GLib timeouts, I should know better by now. I had another look at the timeouts and was able to get rid of most of them by hooking things to the right events. Just the one in displayManager remaining for now. So, the correct cleanup for a SOURCE_REMOVE-timeout seems to be to set source_id to null inside the timeout-lambda, but still check for source_id on disable() and remove it if necessary. In this case, im only setting this once during init, so i dont need to check before i set it(but still check and remove on disable()). But if i would set it multiple times during normal execution like the ones i had in CoreLogic, i would have to check and remove existing timeouts before setting a new one. I got a bit confused, setting the source_id to null inside the timeout-lambda itself felt a bit like cheating. But it makes sense, otherwise you would call remove on a already removed timeout in disable(). Hope i got it right. Also, i removed more try-catch-blocks that never triggered in an uploaded version.