WinTile is a hotkey driven window tiling system for GNOME that imitates the standard Win-Arrow keys of Windows 10, allowing you to maximize, maximize to sides, or 1/4 sized to corner across a single or multiple monitors using just Super+Arrow. As of v14, WinTile also supports: - 2-5 columns and 1-4 rows for standard or ultrawide monitors - Top/bottom half support - Mouse preview and snapping for placing windows - 'Maximize' mode, which adds/removes GNOME animations - 'Ultrawide-only' mode, to allow standard screens to have different cols/row than ultrawides - Portrait screens will automatically swap columns and rows - Add gaps around tiles to avoid the 'crowded elevator' feeling' - Ctrl+Super+Arrow to grow a tile in that direction if space is available - Ctrl+drag to drop a tile in a specific spot - Ctrl+Super+drag to draw a grid for the new tile
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
Version | Status |
---|---|
15 | Active |
14 | Active |
13 | Active |
12 | Active |
11 | Rejected |
10 | Rejected |
9 | Rejected |
8 | Rejected |
7 | Active |
6 | Active |
5 | Active |
4 | Active |
3 | Inactive |
2 | Active |
1 | Rejected |
The general idea here looks okay, however you are not disconnecting any signals in the `disable()` hook that are connected in `enable()`. Unfortunately this is grounds for rejection; extensions must clean up after themselves in `disable()`. Additionally, it would be preferable to use GSettings directly, rather than shipping the external shell script `setHotkeys.sh`.
Ahh, I used ShellTile as a basis, and there were no disconnects on the hotkeys for disable there either (I thought hotkey bindings we're disabled by default). I will have to find an example of that (None of the other extensions I look at seem to have an unbind) but I'm sure I'll find one. As for Gsettings, I didn't realize that was possible, so I will investigate that, too.
This is what I use in one of my extensions: https://github.com/andyholmes/gnome-shell-extension-gsconnect/blob/master/src/shell/keybindings.js You can copy/paste that file if you like. For GSettings you'd want to create a Gio.Settings object for each schema and use it something like so: let settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.wm.keybindings' }); settings.set_strv('unmaximize', ['<Super>Down', '<Alt>F5']);
Oh perfect, thanks for the help! I'll see if I can get this updated today.
Ok, I've updated and you can see changes here: https://github.com/Fmstrat/wintile/commit/4488d9e97a6b761851f80928ab885f992121c2e0 However, I don't see a way to upload a new ZIP here?
Your revision looks good, with one exception. You should call `keybindingManager.destroy()` since that method also disconnects from `global.display`. So I'd do something like: let keyManager = null; function enable () { if (!keyManager) { keyManager = new Keybinding.Manager(); // setup stuff } } function disable () { if (keyManager) { keyManager.destroy(); keyManager = null; } } To push an updated extension, just increment "version" in metadata.json, then upload it like the first time using the "Add yours" link above ^
Alright, v2 is up. Thanks!