Review of "PaperWM" version 2

Details Page Preview

Tiling window manager with a twist! PaperWM is a Gnome Shell extension which provides scrollable tiling of windows and per monitor workspaces. It's inspired by paper notebooks and tiling window managers. Please see our github page to report issues, understand features, and learn how to configure PaperWM to your liking.

Extension Homepage
https://github.com/paperwm/PaperWM

No comments.

Diff Against

Files

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

All Versions

Version Status
47.1.0 (134) Active
47.0.0 (133) Active
46.17.1 (132) Active
46.17.0 (131) Active
46.16.1 (130) Active
46.16.0 (129) Rejected
46.15.1 (128) Active
46.15.0 (127) Active
46.14.0 (126) Active
46.13.8 (125) Active
46.13.7 (124) Active
46.13.6 (123) Active
46.13.5 (122) Active
46.13.4 (121) Active
46.13.3 (120) Inactive
46.13.2 (119) Active
46.13.1 (118) Active
46.13.0 (117) Active
46.12.1 (116) Active
46.12.0 (115) Active
46.11.2 (114) Active
46.11.1 (113) Active
46.10.2 (112) Active
46.10.1 (111) Active
46.10.0 (110) Rejected
46.9.1 (109) Active
46.9.0 (108) Active
46.8.1 (107) Active
46.8.0 (106) Rejected
46.7.0 (105) Active
46.6.7 (104) Active
46.6.6 (103) Active
46.6.5 (102) Active
44.18.0 (101) Active
46.6.4 (100) Active
46.6.3 (99) Active
46.6.2 (98) Rejected
46.6.1 (97) Rejected
46.6.0 (96) Active
46.5.1 (95) Active
46.5.0 (94) Rejected
46.4.1 (93) Active
46.4.0 (92) Active
46.3.2 (91) Active
46.3.1 (90) Active
46.3.0 (89) Active
46.2.0 (88) Active
46.1.0 (87) Active
46.0.0 (86) Active
46.0.0 (85) Active
45.14.0 (84) Inactive
45.13.0 (83) Inactive
45.12.2 (82) Inactive
45.12.1 (81) Inactive
45.12.0 (80) Inactive
45.11.0 (79) Inactive
45.10.1 (78) Inactive
45.10.0 (77) Inactive
45.9.2 (76) Inactive
45.9.1 (75) Inactive
45.9.0 (74) Inactive
45.8.1 (73) Inactive
45.8.0 (72) Inactive
44.17.0 (71) Active
45.7.0 (70) Inactive
44.16.0 (69) Inactive
45.6.0 (68) Inactive
44.15.2 (67) Inactive
45.5.0 (66) Inactive
45.4.2 (65) Inactive
44.15.1 (64) Inactive
44.15.0 (63) Inactive
45.4.1 (62) Inactive
44.14.0 (61) Inactive
45.4.0 (60) Inactive
59 Inactive
58 Rejected
57 Inactive
56 Inactive
55 Inactive
54 Inactive
53 Inactive
52 Inactive
51 Inactive
50 Inactive
49 Inactive
48 Inactive
47 Inactive
46 Inactive
45 Inactive
44 Inactive
43 Rejected
42 Rejected
41 Inactive
40 Inactive
39 Inactive
38 Inactive
37 Inactive
36 Inactive
35 Inactive
34 Inactive
33 Inactive
32 Inactive
31 Inactive
30 Inactive
29 Inactive
28 Inactive
27 Inactive
26 Inactive
25 Inactive
24 Inactive
23 Inactive
22 Inactive
21 Inactive
20 Inactive
19 Inactive
18 Rejected
17 Inactive
16 Inactive
15 Inactive
14 Inactive
13 Inactive
12 Inactive
11 Inactive
10 Inactive
9 Inactive
8 Inactive
7 Inactive
6 Rejected
5 Inactive
4 Rejected
3 Rejected
2 Rejected
1 Rejected

Previous Reviews on this Version

jtaala posted a review
Just noticed I posted the change log notes (addressing the previous issues) to the old review. Re-posting here for convenience: - [x] **1 DONE**. Good pickup and call here - was a bit of a mess. Including a very interesting hard-coding of the `version` var (was written back before Gnome 40). In any case, the first commit here was fixing that and removing old/deprecated code that was for gnome 3.xx. - [x] **2 DONE**. `sessionModes` removed from metadata.json (not needed in PaperWM). Also improved the `safeCall` logging to only log if called method exists in module. - [x] **3 DONE**. I'm not sure of the original reason for setting `Extension` like it was doing. Replaced with a much simpler `var Extension = imports.misc.extensionUtils.getCurrentExtension();`. - [x] **4 DONE**. Removed `convenience.js` as it duplicates current Gnome ExtensionUtils and refactored modules that used it . - [x] **5 DONE**. Removed unneeded check. - [x] **6 DONE.**. did full review of all `mainloop.timeout_add` instances - most were actually (intended) as once off calls (e.g. destroy after first handler execution) - changed these to destroy after handler function execution. - [x] **7 DONE**. Went through and cleaned up `imports.xxx` references (and moving them to top where possible). - [x] **8 DONE**. We were actually delegating the animation through `utils.tweener`... which was actually using `Widget.ease(...)`. This was basically because it was easier to do this when we switched to `ease`. However, this is quite confusing for users/reviews. I've taken the opportunity now to rename `Tweener.addTween(...)` to `Ease.addEase(...)` etc. - [x] **9 DONE** (finally!). This was a very good point in the review. Polyfilling in functions on global gnome objects isn't the best approach here. I've now replaced the polyfills with backwards-compatible utility functions which is a cleaner/safer/better approach and should make this much easier to maintain going forward. - [x] **10 DONE**. Replaced the use of `print(...)` across PaperWM. - [x] **11 DONE**. Moved global scope creation of instances to `enable` in `Kludges.sj`, `liveAltTab.js`, `prefs.js`, `tiling.js`. Also cleaned up and removed unneeded imports dependencies and improved formatting. - [x] **12 DONE**. Hmm - we don't see an issue with importing Gtk and using accelerator_parse etc. But we have cleaned up and removed references to Gtk where not needed. - [x] **13 DONE**. We've removed the hot corner overriding/disabling from PaperWM. This was largely superfluous since hot corner works fine in PaperWM, and if users want to disable it they can do so via the usual gnome setting. Having two functions that disable hot corner (one in gnome and one in PaperWM) seems superfluous. - [x] **14 DONE**. Removed unneeded import in `minimap.js`. - [x] **15 DONE**. `destroy` should not call `dismissDispatcher` since `dismissDispatcher` calls `destroy`... leading to an infinite loop (recursion). - [x] **16 DONE**. All `log(...)` lines reviewed and removed superfluous logging; - [x] **17 DONE**. Lower-cased PaperWM schema id values and recompiled schema. - [x] **18 DONE**. Refactored to NOT call `setSchemas()` on Settings `init` (is now called on `enable`). - [x] **19 DONE**. nulled out vars (that we missed). Good pickup! - [x] **20 DONE**. Now untracking on `destroy()`. - [x] **21 DONE**. Refactored StackOverlay class - added proper destroy method and now removePreview on destroy. - [x] **22 DONE**. Timeouts are now oneshot (remove/destroy timeout after function callback). - [x] **23 DONE**. Added missing semicolons and other cleanup in `virtTiling.js`. - [x] **24 DONE**. Now using `add_style_class_name` and `remove_style_class_name` to not run over other extension styles. - [x] **25 DONE**. Removed Gdk import from Tiling.js. - [x] **26 DONE**. Removed module self reference from `keybindings.js` and `tiling.js`. - [x] **27 DONE**. Replaced `Gdk.Keymap` (which isn't available in Gnome 40+) with `Clutter.get_default_backend().get_default_seat().get_keymap()` and hence removed `Gdk` import from `keybindings.js`. Haven't been able to remove `Gtk` since we need `accelerator_parse` from `Gtk`.
jtaala posted a review
Ah, so, in further testing it turns out that PaperWM definitely does need session mode `unlock-dialog`: **Justification:** PaperWM requires session mode `unlock-dialog` to maintain multi-monitor tiling layouts when locking/unlocking Gnome. Without this, tiled windows can move to different monitors on gnome unlock, which severely impacts/destroys user workflows and window placements. JustPerfection, is there somewhere I add a note for this justification? (in the extension somewhere?). I'm planning on submitting another version with this change to `metadata.json` - should I just submit this now, or would you prefer to finish a review of this version first?
jtaala auto- rejected
Auto-rejected because of new version 3 was uploaded