Review of "Minimized Windows Buttons" version 13

Details Page Preview

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.

Extension Homepage
https://github.com/CodeMonkeyIsland/minimized-windows-buttons

No comments.

Diff Against

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

Shexli (experimental) error 1 warning 1

Shexli found 2 issues that may need reviewer attention.

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.

Disconnect all signals

  • 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']

All Versions

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

Previous Reviews on this Version

CodeMonkeyIsland posted a review
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.
JustPerfection active
No problem. Thanks for fixing it.