diff --git a/package.json b/package.json index 9e6cbc5f..25863455 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@babel/generator": "^7.28.3", "@babel/parser": "^7.28.4", "@babel/traverse": "^7.28.4", - "esbuild": "^0.25.10", + "esbuild": "^0.27.3", "esbuild-sass-plugin": "^3.3.1", "eslint": "^9.39.1", "eslint-config-prettier": "^10.1.8", diff --git a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml index 67fe8399..82246eb4 100644 --- a/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml +++ b/resources/schemas/org.gnome.shell.extensions.tilingshell.gschema.xml @@ -107,6 +107,11 @@ Enable auto tiling Automatically tile a new window to the best tile according to the current layout. + + true + Always maximize with move up + When using the Move Window Up shortcut, always maximize on the current monitor instead of moving to the monitor above. + false Raise tiled windows together diff --git a/src/components/tilingsystem/tilingManager.ts b/src/components/tilingsystem/tilingManager.ts index 4bc1a683..6b8df3a4 100644 --- a/src/components/tilingsystem/tilingManager.ts +++ b/src/components/tilingsystem/tilingManager.ts @@ -362,7 +362,8 @@ export class TilingManager { if ( direction === KeyBindingsDirection.UP && extWin.assignedTile && - extWin.assignedTile?.y === 0 + extWin.assignedTile?.y === 0 && + (Settings.ALWAYS_MAXIMIZE_WITH_UP || clamp) ) { maximizeWindow(window); return true; @@ -428,7 +429,8 @@ export class TilingManager { // handle maximize of window if ( direction === KeyBindingsDirection.UP && - window.can_maximize() + window.can_maximize() && + (Settings.ALWAYS_MAXIMIZE_WITH_UP || clamp) ) { maximizeWindow(window); return true; diff --git a/src/prefs.ts b/src/prefs.ts index 16abe499..a310f8c2 100644 --- a/src/prefs.ts +++ b/src/prefs.ts @@ -275,6 +275,15 @@ export default class TilingShellExtensionPreferences extends ExtensionPreference ); behaviourGroup.add(autoTilingRow); + const alwaysMaximizeWithUpRow = this._buildSwitchRow( + Settings.KEY_ALWAYS_MAXIMIZE_WITH_UP, + _('Always maximize with Move Up'), + _( + 'When enabled, Move Up always maximizes on the current monitor instead of moving to the monitor above', + ), + ); + behaviourGroup.add(alwaysMaximizeWithUpRow); + const resizeComplementingRow = this._buildSwitchRow( Settings.KEY_RESIZE_COMPLEMENTING_WINDOWS, _('Enable auto-resize of the complementing tiled windows'), diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 59ff551c..53d7d9da 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -102,6 +102,7 @@ export default class Settings { static KEY_ENABLE_BLUR_SELECTED_TILEPREVIEW = 'enable-blur-selected-tilepreview'; static KEY_ENABLE_MOVE_KEYBINDINGS = 'enable-move-keybindings'; static KEY_ENABLE_AUTO_TILING = 'enable-autotiling'; + static KEY_ALWAYS_MAXIMIZE_WITH_UP = 'always-maximize-with-up'; static KEY_RAISE_TOGETHER = 'raise-together'; static KEY_ACTIVE_SCREEN_EDGES = 'active-screen-edges'; static KEY_TOP_EDGE_MAXIMIZE = 'top-edge-maximize'; @@ -341,6 +342,14 @@ export default class Settings { set_boolean(Settings.KEY_ENABLE_AUTO_TILING, val); } + static get ALWAYS_MAXIMIZE_WITH_UP(): boolean { + return get_boolean(Settings.KEY_ALWAYS_MAXIMIZE_WITH_UP); + } + + static set ALWAYS_MAXIMIZE_WITH_UP(val: boolean) { + set_boolean(Settings.KEY_ALWAYS_MAXIMIZE_WITH_UP, val); + } + static get RAISE_TOGETHER(): boolean { return get_boolean(Settings.KEY_RAISE_TOGETHER); }