diff --git a/extension.js b/extension.js index e37108b..9369386 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,17 @@ 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"); + } +} + function moveApp(app, loc) { _log("moveApp: " + JSON.stringify(loc)); var space = null; @@ -252,7 +265,7 @@ function sendMove(direction) { break; case "down": // Minimize - app.minimize(); + requestMinimize(app); break; } } else if (config.cols == 3) { @@ -275,7 +288,7 @@ function sendMove(direction) { break; case "down": // Minimize - app.minimize(); + requestMinimize(app); break; } } else { @@ -298,7 +311,7 @@ function sendMove(direction) { break; case "down": // Minimize - app.minimize(); + requestMinimize(app); break; } } @@ -402,7 +415,7 @@ function sendMove(direction) { } else { // We are bottom half, minimize _log('down - 6') - app.minimize(); + requestMinimize(app); } break; } @@ -494,7 +507,7 @@ function sendMove(direction) { } else { // We are bottom half, minimize _log('down - 6') - app.minimize(); + requestMinimize(app); } break; } @@ -594,7 +607,7 @@ function sendMove(direction) { } else { // We are bottom half, minimize _log('down - 7') - app.minimize(); + requestMinimize(app); } break; } diff --git a/gschemas.compiled b/gschemas.compiled new file mode 100644 index 0000000..f84f84b Binary files /dev/null and b/gschemas.compiled differ diff --git a/org.gnome.shell.extensions.wintile.gschema.xml b/org.gnome.shell.extensions.wintile.gschema.xml new file mode 100644 index 0000000..6dab216 --- /dev/null +++ b/org.gnome.shell.extensions.wintile.gschema.xml @@ -0,0 +1,48 @@ + + + + + 0 + Number of columns + + + + + true + 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 + When on, dragging windows with the mouse will allow placement into the grid. + + + true + Use double width previews on sides in 4 column mode + When on, dragging a window to the side will preview 2 columns wide instead of 1. + + + 25 + Pixels from edge to start preview + + + + + 500 + Delay in ms before preview displays + + + + + false + Turn on/off debug output + + + + diff --git a/prefs.js b/prefs.js index 054d68b..14ee3ac 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) {