mirror of
https://github.com/FranP-code/wintile.git
synced 2025-10-13 00:33:46 +00:00
Added grid of 3 columns
This commit is contained in:
128
extension.js
128
extension.js
@@ -36,11 +36,7 @@ let settings = new Gio.Settings({
|
|||||||
});
|
});
|
||||||
|
|
||||||
function updateSettings() {
|
function updateSettings() {
|
||||||
// 0 = 2 cols, 1 = 4 cols
|
config.cols = (settings.get_value('cols').deep_unpack())+2;
|
||||||
if (settings.get_value('cols').deep_unpack() == 0)
|
|
||||||
config.cols = 2;
|
|
||||||
else
|
|
||||||
config.cols = 4;
|
|
||||||
config.useMaximize = settings.get_value('use-maximize').deep_unpack();
|
config.useMaximize = settings.get_value('use-maximize').deep_unpack();
|
||||||
config.debug = settings.get_value('debug').deep_unpack();
|
config.debug = settings.get_value('debug').deep_unpack();
|
||||||
_log(JSON.stringify(config));
|
_log(JSON.stringify(config));
|
||||||
@@ -191,6 +187,29 @@ function sendMove(direction) {
|
|||||||
app.minimize();
|
app.minimize();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else if (config.cols == 3) {
|
||||||
|
// Ultrawide 3x2 grid
|
||||||
|
switch (direction) {
|
||||||
|
case "left":
|
||||||
|
// Move to the left most column at full height
|
||||||
|
initApp(app);
|
||||||
|
moveApp(app, { "row": 0, "col": 0, "height": 2, "width": 1 });
|
||||||
|
break;
|
||||||
|
case "right":
|
||||||
|
// Move to the right most column at full height
|
||||||
|
initApp(app);
|
||||||
|
moveApp(app, { "row": 0, "col": 1, "height": 2, "width": 1 });
|
||||||
|
break;
|
||||||
|
case "up":
|
||||||
|
// 1st Maximize
|
||||||
|
initApp(app);
|
||||||
|
moveApp(app, { "row": 0, "col": 0, "height": 2, "width": 3 });
|
||||||
|
break;
|
||||||
|
case "down":
|
||||||
|
// Minimize
|
||||||
|
app.minimize();
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Ultrawide 4x2 grid
|
// Ultrawide 4x2 grid
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
@@ -320,6 +339,105 @@ function sendMove(direction) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else if (config.cols == 3) {
|
||||||
|
// Ultrawide 3x2 grid
|
||||||
|
switch (direction) {
|
||||||
|
case "left":
|
||||||
|
_log('left')
|
||||||
|
if (app.wintile.col > 0) {
|
||||||
|
// We can move left on this monitor and keep our size
|
||||||
|
_log('left - 1')
|
||||||
|
moveApp(app, { "row": app.wintile.row, "col": app.wintile.col-1, "height": app.wintile.height, "width": app.wintile.width });
|
||||||
|
} else if (app.wintile.col == 0 && app.wintile.width > 1) {
|
||||||
|
// We are not yet to smallest width, so shrink
|
||||||
|
_log('left - 2')
|
||||||
|
moveApp(app, { "row": app.wintile.row, "col": 0, "height": app.wintile.height, "width": app.wintile.width-1 });
|
||||||
|
} else if (monitorToLeft != -1) {
|
||||||
|
// There is a monitor to the left, so let's go there
|
||||||
|
_log('left - 3')
|
||||||
|
app.move_to_monitor(monitorToLeft);
|
||||||
|
moveApp(app, { "row": app.wintile.row, "col": 4, "height": app.wintile.height, "width": 1 });
|
||||||
|
} else {
|
||||||
|
// We are already on the left, and there is no other monitor to the left
|
||||||
|
// Move to the left most column at full height
|
||||||
|
_log('left - 4')
|
||||||
|
moveApp(app, { "row": 0, "col": 0, "height": 2, "width": 1 });
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "right":
|
||||||
|
_log('right')
|
||||||
|
if (app.wintile.col+app.wintile.width-1 < 2) {
|
||||||
|
// We can move right on this monitor and keep our size
|
||||||
|
_log('right - 1')
|
||||||
|
moveApp(app, { "row": app.wintile.row, "col": app.wintile.col+1, "height": app.wintile.height, "width": app.wintile.width });
|
||||||
|
} else if (app.wintile.col+app.wintile.width-1 == 2 && app.wintile.width > 1) {
|
||||||
|
// We are not yet to smallest width, so shrink
|
||||||
|
_log('right - 2')
|
||||||
|
moveApp(app, { "row": app.wintile.row, "col": app.wintile.col+1, "height": app.wintile.height, "width": app.wintile.width-1 });
|
||||||
|
} else if (monitorToRight != -1) {
|
||||||
|
// There is a monitor to the right, so let's go there
|
||||||
|
_log('right - 3')
|
||||||
|
app.move_to_monitor(monitorToRight);
|
||||||
|
moveApp(app, { "row": app.wintile.row, "col": 0, "height": app.wintile.height, "width": 1 });
|
||||||
|
} else {
|
||||||
|
// We are already on the left, and there is no other monitor to the right
|
||||||
|
// Move to the right most column at full height
|
||||||
|
_log('right - 4')
|
||||||
|
moveApp(app, { "row": 0, "col": 2, "height": 2, "width": 1 });
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "up":
|
||||||
|
_log('up')
|
||||||
|
if (app.wintile.height == 2) {
|
||||||
|
// We are full height on half, go to top while keeping width
|
||||||
|
// This changed from 2x2
|
||||||
|
_log('up - 1')
|
||||||
|
moveApp(app, { "row": 0, "col": app.wintile.col, "height": 1, "width": app.wintile.width });
|
||||||
|
} else if (app.wintile.row == 1) {
|
||||||
|
// We are bottom half, go to full height, keeping width
|
||||||
|
// This changed from 2x2
|
||||||
|
_log('up - 2')
|
||||||
|
moveApp(app, { "row": 0, "col": app.wintile.col, "height": 2, "width": app.wintile.width });
|
||||||
|
} else {
|
||||||
|
// We are top half, go straight to 2nd maximize
|
||||||
|
// This changed from 2x2
|
||||||
|
_log('up - 3')
|
||||||
|
moveApp(app, { "row": 0, "col": 0, "height": 2, "width": 3 });
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "down":
|
||||||
|
_log('down')
|
||||||
|
if (app.wintile.col == 0 && app.wintile.width == 3 && app.wintile.height == 2) {
|
||||||
|
// We are maximized, go to bottom half
|
||||||
|
// This is different from 2x2
|
||||||
|
_log('down - 1')
|
||||||
|
moveApp(app, { "row": 1, "col": 0, "height": 1, "width": 3 });
|
||||||
|
} else if (app.wintile.col == 0 && app.wintile.width == 3 && app.wintile.row == 0) {
|
||||||
|
// We are top half, go to bottom half
|
||||||
|
// This is different from 2x2
|
||||||
|
_log('down - 2')
|
||||||
|
moveApp(app, { "row": 1, "col": 0, "height": app.wintile.height, "width": app.wintile.width });
|
||||||
|
} else if (app.wintile.height == 2) {
|
||||||
|
// We are full height, go to half height
|
||||||
|
// This changed from 2x3
|
||||||
|
_log('down - 3')
|
||||||
|
moveApp(app, { "row": 1, "col": app.wintile.col, "height": 1, "width": app.wintile.width });
|
||||||
|
} else if (app.wintile.row == 0) {
|
||||||
|
// We are top half, go to full height
|
||||||
|
// This changed from 2x2
|
||||||
|
_log('down - 4')
|
||||||
|
moveApp(app, { "row": 0, "col": app.wintile.col, "height": 2, "width": app.wintile.width });
|
||||||
|
} else if (app.wintile.width != 3) {
|
||||||
|
// We are not full bottom but are a tile, go full width
|
||||||
|
_log('down - 5')
|
||||||
|
moveApp(app, { "row": 1, "col": 0, "height": 1, "width": 3 });
|
||||||
|
} else {
|
||||||
|
// We are bottom half, minimize
|
||||||
|
_log('down - 6')
|
||||||
|
app.minimize();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Ultrawide 4x2 grid
|
// Ultrawide 4x2 grid
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
|
|||||||
1
prefs.js
1
prefs.js
@@ -16,6 +16,7 @@ function init() {
|
|||||||
function createColOptions(){
|
function createColOptions(){
|
||||||
let options = [
|
let options = [
|
||||||
{ name: _("2") },
|
{ name: _("2") },
|
||||||
|
{ name: _("3") },
|
||||||
{ name: _("4"),}
|
{ name: _("4"),}
|
||||||
];
|
];
|
||||||
let liststore = new Gtk.ListStore();
|
let liststore = new Gtk.ListStore();
|
||||||
|
|||||||
Binary file not shown.
@@ -3,9 +3,9 @@
|
|||||||
<schema id="org.gnome.shell.extensions.wintile" path="/org/gnome/shell/extensions/wintile/">
|
<schema id="org.gnome.shell.extensions.wintile" path="/org/gnome/shell/extensions/wintile/">
|
||||||
<key name="cols" type="i">
|
<key name="cols" type="i">
|
||||||
<default>0</default>
|
<default>0</default>
|
||||||
<summary>Number of columns (2 or 4 only)</summary>
|
<summary>Number of columns</summary>
|
||||||
<description></description>
|
<description></description>
|
||||||
<range min="0" max="1"/>
|
<range min="0" max="2"/>
|
||||||
</key>
|
</key>
|
||||||
<key name="use-maximize" type="b">
|
<key name="use-maximize" type="b">
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
|
|||||||
Reference in New Issue
Block a user