Added config option to disable minimizing windows.

By default, the extension minimizes windows after some down presses.
This commit makes this behavior configurable: toggling it off stops windows
from being minimized.
This commit is contained in:
Cas Cremers
2021-01-28 14:05:09 +01:00
parent 76c3d91c5b
commit 7b8f11bd1a
4 changed files with 83 additions and 6 deletions

View File

@@ -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;
}

BIN
gschemas.compiled Normal file

Binary file not shown.

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id="org.gnome.shell.extensions.wintile" path="/org/gnome/shell/extensions/wintile/">
<key name="cols" type="i">
<default>0</default>
<summary>Number of columns</summary>
<description></description>
<range min="0" max="2"/>
</key>
<key name="use-maximize" type="b">
<default>true</default>
<summary>Turn on/off use of maximizing windows</summary>
<description>When on, certain windows that won't resize full screen like Terminal will, however animations may occur between tile shifts.</description>
</key>
<key name="use-minimize" type="b">
<default>true</default>
<summary>Turn use of minimizing windows on/off</summary>
<description>When off, windows will never be minimized.</description>
</key>
<key name="preview" type="b">
<default>true</default>
<summary>Turn on/off mouse positioning</summary>
<description>When on, dragging windows with the mouse will allow placement into the grid.</description>
</key>
<key name="double-width" type="b">
<default>true</default>
<summary>Use double width previews on sides in 4 column mode</summary>
<description>When on, dragging a window to the side will preview 2 columns wide instead of 1.</description>
</key>
<key name="distance" type="i">
<default>25</default>
<summary>Pixels from edge to start preview</summary>
<description></description>
<range min="0" max="150"/>
</key>
<key name="delay" type="i">
<default>500</default>
<summary>Delay in ms before preview displays</summary>
<description></description>
<range min="25" max="1000"/>
</key>
<key name="debug" type="b">
<default>false</default>
<summary>Turn on/off debug output</summary>
<description></description>
</key>
</schema>
</schemalist>

View File

@@ -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) {