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