diff --git a/extension.js b/extension.js index 9e4f43b..0de8d85 100644 --- a/extension.js +++ b/extension.js @@ -26,6 +26,7 @@ var _log = function(str) { let config = { cols: 2, useMaximize: true, + useMinimize: true, debug: true, preview: { enabled: true, @@ -51,6 +52,7 @@ function updateSettings() { config.cols = (settings.get_value('cols').deep_unpack())+2; config.preview.doubleWidth = settings.get_value('double-width').deep_unpack(); config.useMaximize = settings.get_value('use-maximize').deep_unpack(); + config.useMinimize = settings.get_value('use-minimize').deep_unpack(); config.preview.enabled = settings.get_value('preview').deep_unpack(); config.preview.distance = settings.get_value('distance').deep_unpack(); config.preview.delay = settings.get_value('delay').deep_unpack(); @@ -79,6 +81,16 @@ var oldbindings = { toggle_tiled_right: [] } +// Minimize app if config allows +function requestMinimize(app) { + _log("useMinimize: "+config.useMinimize); + if (config.useMinimize) { + _log("Minimize"); + app.minimize(); + } else { + _log("Not minimizing due to config"); + } + // Move window to specified location and size. // On paper, the move_resize_frame should not need the preceding move_frame, // but the additional move_frame is known to fix errors with gnome-terminal @@ -264,7 +276,7 @@ function sendMove(direction) { break; case "down": // Minimize - app.minimize(); + requestMinimize(app); break; } } else if (config.cols == 3) { @@ -287,7 +299,7 @@ function sendMove(direction) { break; case "down": // Minimize - app.minimize(); + requestMinimize(app); break; } } else { @@ -310,7 +322,7 @@ function sendMove(direction) { break; case "down": // Minimize - app.minimize(); + requestMinimize(app); break; } } @@ -414,7 +426,7 @@ function sendMove(direction) { } else { // We are bottom half, minimize _log('down - 6') - app.minimize(); + requestMinimize(app); } break; } @@ -506,7 +518,7 @@ function sendMove(direction) { } else { // We are bottom half, minimize _log('down - 6') - app.minimize(); + requestMinimize(app); } break; } @@ -606,7 +618,7 @@ function sendMove(direction) { } else { // We are bottom half, minimize _log('down - 7') - app.minimize(); + requestMinimize(app); } break; } diff --git a/prefs.js b/prefs.js index 4a386fd..1769c6a 100644 --- a/prefs.js +++ b/prefs.js @@ -93,6 +93,21 @@ function buildPrefsWidget() { layout.attach(maximizeLabel, 0, row, 1, 1); layout.attach(maximizeInput, 1, row++, 1, 1); + // Minimize setting + let minimizeLabel = new Gtk.Label({ + label: _("Allow minimizing of windows"), + visible: true, + hexpand: true, + halign: Gtk.Align.START + }); + let minimizeInput = new Gtk.Switch({ + active: gsettings.get_boolean ('use-minimize'), + halign: Gtk.Align.END, + visible: true + }); + layout.attach(minimizeLabel, 0, row, 1, 1); + layout.attach(minimizeInput, 1, row++, 1, 1); + // Preview settings let previewEnabled = gsettings.get_boolean ('preview'); let previewLabel = new Gtk.Label({ @@ -193,6 +208,7 @@ function buildPrefsWidget() { gsettings.bind('cols', colsInput, 'active', Gio.SettingsBindFlags.DEFAULT); gsettings.bind('use-maximize', maximizeInput, 'active', Gio.SettingsBindFlags.DEFAULT); + gsettings.bind('use-minimize', minimizeInput, 'active', Gio.SettingsBindFlags.DEFAULT); gsettings.bind('preview', previewInput, 'active', Gio.SettingsBindFlags.DEFAULT); gsettings.bind('double-width', doubleWidthInput, 'active', Gio.SettingsBindFlags.DEFAULT); previewDistanceSettingInt.connect('value-changed', function(entry) { diff --git a/schemas/gschemas.compiled b/schemas/gschemas.compiled index 3c98933..f84f84b 100644 Binary files a/schemas/gschemas.compiled and b/schemas/gschemas.compiled differ diff --git a/schemas/org.gnome.shell.extensions.wintile.gschema.xml b/schemas/org.gnome.shell.extensions.wintile.gschema.xml index e10f571..6dab216 100644 --- a/schemas/org.gnome.shell.extensions.wintile.gschema.xml +++ b/schemas/org.gnome.shell.extensions.wintile.gschema.xml @@ -12,6 +12,11 @@ Turn on/off use of maximizing windows When on, certain windows that won't resize full screen like Terminal will, however animations may occur between tile shifts. + + true + Turn use of minimizing windows on/off + When off, windows will never be minimized. + true Turn on/off mouse positioning