diff --git a/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/code/script.js b/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/code/script.js
index 303b68d6..ece99133 100644
--- a/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/code/script.js
+++ b/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/code/script.js
@@ -69,6 +69,7 @@ class KWinConfig {
this.maximizeSoleTile = KWIN.readConfig("maximizeSoleTile", false);
this.tileLayoutInitialAngle = KWIN.readConfig("tileLayoutInitialRotationAngle", "0");
this.columnsLayoutInitialAngle = KWIN.readConfig("columnsLayoutInitialRotationAngle", "0");
+ this.columnsBalanced = KWIN.readConfig("columnsBalanced", false);
this.monocleMaximize = KWIN.readConfig("monocleMaximize", true);
this.monocleMinimizeRest = KWIN.readConfig("monocleMinimizeRest", false);
this.stairReverse = KWIN.readConfig("stairReverse", false);
@@ -171,7 +172,7 @@ class KWinDriver {
}
addWindow(client) {
if (!client.deleted &&
- client.pid > 1 &&
+ client.pid >= 0 &&
!client.popupWindow &&
client.normalWindow &&
!client.hidden &&
@@ -582,6 +583,9 @@ class KWinWindow {
KWINCONFIG.floatingClass.indexOf(resourceName) >= 0 ||
matchWords(this.window.caption, KWINCONFIG.floatingTitle) >= 0);
}
+ get minimized() {
+ return this.window.minimized;
+ }
get surface() {
let activity;
if (this.window.activities.length === 0)
@@ -799,6 +803,7 @@ class TestWindow {
this.geometry = geometry || new Rect(0, 0, 100, 100);
this.keepAbove = false;
this.maximized = false;
+ this.minimized = false;
this.noBorder = false;
}
commit(geometry, noBorder, keepAbove) {
@@ -880,8 +885,7 @@ class TilingController {
window.setDraggingState();
}
if (window.state === WindowState.Dragging) {
- const wr = toRect(windowRect);
- if (layout.drag(new EngineContext(ctx, this.engine), wr.activationPoint, window, srf.workingArea)) {
+ if (layout.drag(new EngineContext(ctx, this.engine), toRect(windowRect), window, srf.workingArea)) {
this.engine.arrange(ctx);
}
this.dragCompleteTime = Date.now();
@@ -1440,6 +1444,9 @@ class EngineContext {
return;
this.engine.windows.moveNew(window, target, after);
}
+ getWindowById(id) {
+ return this.engine.windows.getWindowById(id);
+ }
showNotification(text) {
this.drvctx.showNotification(text);
}
@@ -1490,11 +1497,12 @@ class LayoutStoreEntry {
return this.loadLayout(this.currentID);
}
setLayout(targetID) {
- const targetLayout = this.loadLayout(targetID);
+ let targetLayout = this.loadLayout(targetID);
if (targetLayout instanceof MonocleLayout &&
this.currentLayout instanceof MonocleLayout) {
this.currentID = this.previousID;
this.previousID = targetID;
+ targetLayout = this.loadLayout(this.currentID);
}
else if (this.currentID !== targetID) {
this.previousID = this.currentID;
@@ -1691,6 +1699,9 @@ class WindowClass {
visible(srf) {
return this.window.visible(srf);
}
+ get minimized() {
+ return this.window.minimized;
+ }
toString() {
return "Window(" + String(this.window) + ")";
}
@@ -1937,6 +1948,11 @@ class ColumnLayout {
this.windowIds = new Set();
this.renderedWindowsIds = [];
this.renderedWindowsRects = [];
+ this.numberFloatedOrMinimized = 0;
+ this.timestamp = 0;
+ }
+ get size() {
+ return this.windowIds.size - this.numberFloatedOrMinimized;
}
set isHorizontal(value) {
if (value)
@@ -1944,6 +1960,9 @@ class ColumnLayout {
else
this.parts.angle = 0;
}
+ isEmpty() {
+ return this.windowIds.size === this.numberFloatedOrMinimized;
+ }
apply(ctx, tileables, area) {
this.renderedWindowsIds = [];
let columnTileables = tileables.filter((w) => {
@@ -1970,12 +1989,38 @@ class ColumnLayout {
return null;
return this.renderedWindowsIds[winId + 1];
}
+ getWindowIdOnRight(x) {
+ for (let i = 0; i < this.renderedWindowsIds.length; i++) {
+ if (x < this.renderedWindowsRects[i].center[0] + 10)
+ return this.renderedWindowsIds[i];
+ }
+ return null;
+ }
+ getWindowIdOnTop(y) {
+ for (let i = 0; i < this.renderedWindowsIds.length; i++) {
+ if (y < this.renderedWindowsRects[i].center[1] + 10)
+ return this.renderedWindowsIds[i];
+ }
+ return null;
+ }
adjust(area, tiles, basis, delta) {
let columnTiles = tiles.filter((t) => this.windowIds.has(t.id));
this.parts.adjust(area, columnTiles, basis, delta);
}
- actualizeWindowIds(ids) {
- this.windowIds = new Set([...this.windowIds].filter((id) => ids.has(id)));
+ actualizeWindowIds(ctx, ids) {
+ let window;
+ let floatedOrMinimized = 0;
+ this.windowIds = new Set([...this.windowIds].filter((id) => {
+ window = ctx.getWindowById(id);
+ if (ids.has(id))
+ return true;
+ else if (window !== null && (window.minimized || window.floating)) {
+ floatedOrMinimized += 1;
+ return true;
+ }
+ return false;
+ }));
+ this.numberFloatedOrMinimized = floatedOrMinimized;
}
}
ColumnLayout.id = "Column";
@@ -1983,9 +2028,13 @@ class ColumnsLayout {
get description() {
return "Columns";
}
+ get columns() {
+ return this._columns;
+ }
constructor() {
this.classID = ColumnsLayout.id;
this.parts = [new ColumnLayout()];
+ this._columns = [];
this.direction = new windRose(CONFIG.columnsLayoutInitialAngle);
}
adjust(area, tiles, basis, delta) {
@@ -1993,24 +2042,24 @@ class ColumnsLayout {
if (columnId === null)
return;
let isReverse = this.direction.east || this.direction.south;
- let columnsLength = this.parts.length;
+ let columnsLength = this.columns.length;
if (((this.direction.east || this.direction.west) &&
(delta.east !== 0 || delta.west !== 0)) ||
((this.direction.north || this.direction.south) &&
(delta.north !== 0 || delta.south !== 0))) {
let oldWeights;
if (isReverse) {
- oldWeights = this.parts
+ oldWeights = this.columns
.slice(0)
.reverse()
.map((column) => column.weight);
}
else {
- oldWeights = this.parts.map((column) => column.weight);
+ oldWeights = this.columns.map((column) => column.weight);
}
const weights = LayoutUtils.adjustAreaWeights(area, oldWeights, CONFIG.tileLayoutGap, isReverse ? columnsLength - 1 - columnId : columnId, delta, this.direction.east || this.direction.west);
weights.forEach((weight, i) => {
- this.parts[isReverse ? columnsLength - 1 - i : i].weight =
+ this.columns[isReverse ? columnsLength - 1 - i : i].weight =
weight * columnsLength;
});
}
@@ -2018,69 +2067,73 @@ class ColumnsLayout {
(this.direction.east || this.direction.west)) ||
((delta.east !== 0 || delta.west !== 0) &&
(this.direction.north || this.direction.south))) {
- this.parts[columnId].adjust(area, tiles, basis, delta);
+ this.columns[columnId].adjust(area, tiles, basis, delta);
}
}
apply(ctx, tileables, area) {
- print(`columnsApply: ${this.direction}`);
- this.arrangeTileables(tileables);
+ this.arrangeTileables(ctx, tileables);
+ if (this.columns.length === 0)
+ return;
let weights;
if (this.direction.east || this.direction.south) {
- weights = this.parts
+ weights = this.columns
.slice(0)
.reverse()
.map((tile) => tile.weight);
}
else {
- weights = this.parts.map((tile) => tile.weight);
+ weights = this.columns.map((tile) => tile.weight);
}
const rects = LayoutUtils.splitAreaWeighted(area, weights, CONFIG.tileLayoutGap, this.direction.east || this.direction.west);
if (this.direction.east || this.direction.south) {
let i = 0;
- for (var idx = this.parts.length - 1; idx >= 0; idx--) {
- this.parts[idx].isHorizontal = this.direction.south;
- this.parts[idx].apply(ctx, tileables, rects[i]);
+ for (var idx = this.columns.length - 1; idx >= 0; idx--) {
+ this.columns[idx].isHorizontal = this.direction.south;
+ this.columns[idx].apply(ctx, tileables, rects[i]);
i++;
}
}
else {
- for (var idx = 0; idx < this.parts.length; idx++) {
- this.parts[idx].isHorizontal = this.direction.north;
- this.parts[idx].apply(ctx, tileables, rects[idx]);
+ for (var idx = 0; idx < this.columns.length; idx++) {
+ this.columns[idx].isHorizontal = this.direction.north;
+ this.columns[idx].apply(ctx, tileables, rects[idx]);
}
}
}
- drag(ctx, activationPoint, window, workingArea) {
- if (this.parts.length === 1 && this.parts[0].windowIds.size === 1)
+ drag(ctx, draggingRect, window, workingArea) {
+ const activationPoint = draggingRect.activationPoint;
+ const middlePoint = draggingRect.center;
+ if (this.columns.length === 0 ||
+ (this.columns.length === 1 && this.columns[0].windowIds.size === 1))
return false;
let columnId = this.getColumnId(window);
let windowId = window.id;
if (((this.direction.north && workingArea.isTopZone(activationPoint)) ||
- (this.direction.south && workingArea.isBottomZone(activationPoint)) ||
+ (this.direction.south && workingArea.isBottomZone(middlePoint)) ||
(this.direction.west && workingArea.isLeftZone(activationPoint)) ||
(this.direction.east && workingArea.isRightZone(activationPoint))) &&
- !(this.parts[0].windowIds.size === 1 &&
- this.parts[0].windowIds.has(windowId))) {
+ !(this.columns[0].windowIds.size === 1 &&
+ this.columns[0].windowIds.has(windowId))) {
if (columnId !== null)
- this.parts[columnId].windowIds.delete(windowId);
- this.insertColumn(0);
- this.parts[0].windowIds.add(windowId);
+ this.columns[columnId].windowIds.delete(windowId);
+ const column = this.insertColumn(true);
+ column.windowIds.add(windowId);
return true;
}
- if (((this.direction.north && workingArea.isBottomZone(activationPoint)) ||
+ if (((this.direction.north && workingArea.isBottomZone(middlePoint)) ||
(this.direction.south && workingArea.isTopZone(activationPoint)) ||
(this.direction.west && workingArea.isRightZone(activationPoint)) ||
(this.direction.east && workingArea.isLeftZone(activationPoint))) &&
- !(this.parts[this.parts.length - 1].windowIds.size === 1 &&
- this.parts[this.parts.length - 1].windowIds.has(windowId))) {
+ !(this.columns[this.columns.length - 1].windowIds.size === 1 &&
+ this.columns[this.columns.length - 1].windowIds.has(windowId))) {
if (columnId !== null)
- this.parts[columnId].windowIds.delete(windowId);
- this.insertColumn(this.parts.length);
- this.parts[this.parts.length - 1].windowIds.add(windowId);
+ this.columns[columnId].windowIds.delete(windowId);
+ const column = this.insertColumn(false);
+ column.windowIds.add(windowId);
return true;
}
- for (let colIdx = 0; colIdx < this.parts.length; colIdx++) {
- const column = this.parts[colIdx];
+ for (let colIdx = 0; colIdx < this.columns.length; colIdx++) {
+ const column = this.columns[colIdx];
for (let i = 0; i < column.renderedWindowsRects.length; i++) {
const renderedRect = column.renderedWindowsRects[i];
if ((this.direction.west &&
@@ -2097,7 +2150,7 @@ class ColumnsLayout {
return false;
const renderedId = column.renderedWindowsIds[i];
if (columnId !== null && columnId !== colIdx)
- this.parts[columnId].windowIds.delete(windowId);
+ this.columns[columnId].windowIds.delete(windowId);
column.windowIds.add(windowId);
ctx.moveWindowByWinId(window, renderedId);
return true;
@@ -2117,7 +2170,7 @@ class ColumnsLayout {
return false;
const renderedId = column.renderedWindowsIds[i];
if (columnId !== null && columnId !== colIdx)
- this.parts[columnId].windowIds.delete(windowId);
+ this.columns[columnId].windowIds.delete(windowId);
column.windowIds.add(windowId);
ctx.moveWindowByWinId(window, renderedId, true);
return true;
@@ -2126,51 +2179,68 @@ class ColumnsLayout {
}
return false;
}
- arrangeTileables(tileables) {
+ arrangeTileables(ctx, tileables) {
let latestTimestamp = 0;
- let columnId = null;
- let newWindows = new Set();
+ let partId = null;
+ let newWindows = [];
let tileableIds = new Set();
let currentColumnId = 0;
tileables.forEach((tileable) => {
tileable.state = WindowState.Tiled;
- columnId = this.getColumnId(tileable);
- if (columnId !== null) {
- if (tileable.timestamp > latestTimestamp) {
+ partId = this.getPartsId(tileable);
+ if (partId !== null) {
+ if (this.parts[partId].timestamp < tileable.timestamp) {
+ this.parts[partId].timestamp = tileable.timestamp;
+ }
+ if (this.parts[partId].timestamp > latestTimestamp) {
latestTimestamp = tileable.timestamp;
- currentColumnId = columnId;
+ currentColumnId = partId;
}
}
else {
- newWindows.add(tileable.id);
+ newWindows.push(tileable.id);
}
tileableIds.add(tileable.id);
});
- this.parts[currentColumnId].windowIds = new Set([
- ...this.parts[currentColumnId].windowIds,
- ...newWindows,
- ]);
+ if (CONFIG.columnsBalanced) {
+ for (var [_, id] of newWindows.entries()) {
+ let minSizeColumn = this.parts.reduce((prev, curr) => {
+ return prev.size < curr.size ? prev : curr;
+ });
+ minSizeColumn.windowIds.add(id);
+ }
+ }
+ else {
+ this.parts[currentColumnId].windowIds = new Set([
+ ...this.parts[currentColumnId].windowIds,
+ ...newWindows,
+ ]);
+ }
this.parts.forEach((column) => {
- column.actualizeWindowIds(tileableIds);
+ column.actualizeWindowIds(ctx, tileableIds);
});
this.parts = this.parts.filter((column) => column.windowIds.size !== 0);
if (this.parts.length === 0)
- this.parts.push(new ColumnLayout());
+ this.insertColumn(true);
this.applyColumnsPosition();
}
getColumnId(t) {
+ for (var i = 0; i < this.columns.length; i++) {
+ if (this.columns[i].windowIds.has(t.id))
+ return i;
+ }
+ return null;
+ }
+ getPartsId(t) {
for (var i = 0; i < this.parts.length; i++) {
if (this.parts[i].windowIds.has(t.id))
return i;
}
return null;
}
- getCurrentWinId(ctx) {
- return ctx.currentWindow === null ? null : ctx.currentWindow.id;
- }
- getCurrentColumnIdx(currentWindowId) {
+ getCurrentColumnId(currentWindowId) {
if (currentWindowId !== null) {
- for (const [i, column] of this.parts.entries()) {
+ for (const [i, column] of this.columns.entries()) {
if (column.windowIds.has(currentWindowId))
return i;
}
@@ -2178,141 +2248,199 @@ class ColumnsLayout {
return null;
}
applyColumnsPosition() {
- const length = this.parts.length;
- if (length === 1) {
- this.parts[0].position = "single";
+ this._columns = this.parts.filter((column) => !column.isEmpty());
+ const columnsLength = this.columns.length;
+ if (columnsLength === 1) {
+ this.columns[0].position = "single";
}
- else if (length > 1) {
- this.parts[0].position = "left";
- this.parts[length - 1].position = "right";
- for (let i = 1; i < length - 1; i++) {
- this.parts[i].position = "middle";
+ else if (columnsLength > 1) {
+ this.columns[0].position = "left";
+ this.columns[columnsLength - 1].position = "right";
+ for (let i = 1; i < columnsLength - 1; i++) {
+ this.columns[i].position = "middle";
}
}
}
toColumnWithBiggerIndex(ctx) {
- let currentWindowId = this.getCurrentWinId(ctx);
- let activeColumnId = this.getCurrentColumnIdx(currentWindowId);
- if (currentWindowId === null ||
+ const currentWindow = ctx.currentWindow;
+ const currentWindowId = currentWindow !== null ? currentWindow.id : null;
+ const activeColumnId = this.getCurrentColumnId(currentWindowId);
+ if (currentWindow === null ||
+ currentWindowId === null ||
activeColumnId === null ||
- (this.parts[activeColumnId].windowIds.size < 2 &&
- (this.parts[activeColumnId].position === "right" ||
- this.parts[activeColumnId].position === "single")))
- return;
- if (this.parts[activeColumnId].position === "single" ||
- this.parts[activeColumnId].position === "right") {
- this.insertColumn(this.parts.length);
- }
- this.parts[activeColumnId].windowIds.delete(currentWindowId);
- this.parts[activeColumnId + 1].windowIds.add(currentWindowId);
- }
- toColumnWithSmallerIndex(ctx) {
- let currentWindowId = this.getCurrentWinId(ctx);
- let activeColumnId = this.getCurrentColumnIdx(currentWindowId);
- if (currentWindowId === null ||
- activeColumnId === null ||
- (this.parts[activeColumnId].windowIds.size < 2 &&
- (this.parts[activeColumnId].position === "left" ||
- this.parts[activeColumnId].position === "single")))
- return;
- if (this.parts[activeColumnId].position === "single" ||
- this.parts[activeColumnId].position === "left") {
- this.insertColumn(0);
- this.parts[1].windowIds.delete(currentWindowId);
- this.parts[0].windowIds.add(currentWindowId);
+ (this.columns[activeColumnId].size < 2 &&
+ (this.columns[activeColumnId].position === "right" ||
+ this.columns[activeColumnId].position === "single")))
+ return false;
+ let targetColumn;
+ const column = this.columns[activeColumnId];
+ const center = column.renderedWindowsRects[column.renderedWindowsIds.indexOf(currentWindowId)].center;
+ column.windowIds.delete(currentWindowId);
+ if (column.position === "single" || column.position === "right") {
+ targetColumn = this.insertColumn(false);
+ targetColumn.windowIds.add(currentWindowId);
}
else {
- this.parts[activeColumnId].windowIds.delete(currentWindowId);
- this.parts[activeColumnId - 1].windowIds.add(currentWindowId);
+ targetColumn = this.columns[activeColumnId + 1];
+ targetColumn.windowIds.add(currentWindowId);
}
+ let idOnTarget;
+ if (this.direction.north || this.direction.south)
+ idOnTarget = targetColumn.getWindowIdOnRight(center[0]);
+ else
+ idOnTarget = targetColumn.getWindowIdOnTop(center[1]);
+ if (idOnTarget !== null)
+ ctx.moveWindowByWinId(currentWindow, idOnTarget);
+ else {
+ const targetId = targetColumn.renderedWindowsIds[targetColumn.renderedWindowsIds.length - 1];
+ ctx.moveWindowByWinId(currentWindow, targetId);
+ }
+ this.applyColumnsPosition();
+ return true;
+ }
+ toColumnWithSmallerIndex(ctx) {
+ const currentWindow = ctx.currentWindow;
+ const currentWindowId = currentWindow !== null ? currentWindow.id : null;
+ const activeColumnId = this.getCurrentColumnId(currentWindowId);
+ if (currentWindow === null ||
+ currentWindowId === null ||
+ activeColumnId === null ||
+ (this.columns[activeColumnId].windowIds.size < 2 &&
+ (this.columns[activeColumnId].position === "left" ||
+ this.columns[activeColumnId].position === "single")))
+ return false;
+ let targetColumn;
+ const column = this.columns[activeColumnId];
+ const center = column.renderedWindowsRects[column.renderedWindowsIds.indexOf(currentWindowId)].center;
+ column.windowIds.delete(currentWindowId);
+ if (column.position === "single" || column.position === "left") {
+ targetColumn = this.insertColumn(true);
+ targetColumn.windowIds.add(currentWindowId);
+ }
+ else {
+ targetColumn = this.columns[activeColumnId - 1];
+ targetColumn.windowIds.add(currentWindowId);
+ }
+ let idOnTarget;
+ if (this.direction.north || this.direction.south)
+ idOnTarget = targetColumn.getWindowIdOnRight(center[0]);
+ else
+ idOnTarget = targetColumn.getWindowIdOnTop(center[1]);
+ if (idOnTarget !== null)
+ ctx.moveWindowByWinId(currentWindow, idOnTarget);
+ else {
+ const targetId = targetColumn.renderedWindowsIds[targetColumn.renderedWindowsIds.length - 1];
+ ctx.moveWindowByWinId(currentWindow, targetId);
+ }
+ this.applyColumnsPosition();
+ return true;
}
toUpOrLeft(ctx) {
let currentWindow = ctx.currentWindow;
let currentWindowId = currentWindow !== null ? currentWindow.id : null;
- let activeColumnId = this.getCurrentColumnIdx(currentWindowId);
+ let activeColumnId = this.getCurrentColumnId(currentWindowId);
if (currentWindow === null ||
currentWindowId === null ||
activeColumnId === null ||
- this.parts[activeColumnId].windowIds.size < 2)
- return;
- let upperWinId = this.parts[activeColumnId].getUpperWindowId(currentWindowId);
+ this.columns[activeColumnId].windowIds.size < 2)
+ return false;
+ let upperWinId = this.columns[activeColumnId].getUpperWindowId(currentWindowId);
if (upperWinId === null)
- return;
+ return false;
ctx.moveWindowByWinId(currentWindow, upperWinId);
+ return true;
}
toBottomOrRight(ctx) {
let currentWindow = ctx.currentWindow;
let currentWindowId = currentWindow !== null ? currentWindow.id : null;
- let activeColumnId = this.getCurrentColumnIdx(currentWindowId);
+ let activeColumnId = this.getCurrentColumnId(currentWindowId);
if (currentWindow === null ||
currentWindowId === null ||
activeColumnId === null ||
- this.parts[activeColumnId].windowIds.size < 2)
- return;
- let lowerWinId = this.parts[activeColumnId].getLowerWindowId(currentWindowId);
+ this.columns[activeColumnId].windowIds.size < 2)
+ return false;
+ let lowerWinId = this.columns[activeColumnId].getLowerWindowId(currentWindowId);
if (lowerWinId === null)
- return;
+ return false;
ctx.moveWindowByWinId(currentWindow, lowerWinId, true);
+ return true;
+ }
+ showDirection(ctx) {
+ let notification;
+ if (this.direction.east)
+ notification = "vertical ⟰";
+ else if (this.direction.north)
+ notification = "horizontal ⭆";
+ else if (this.direction.west)
+ notification = "vertical ⟱";
+ else if (this.direction.south)
+ notification = "horizontal ⭅";
+ else
+ notification = "";
+ ctx.showNotification(notification);
}
handleShortcut(ctx, input) {
+ let isApply = false;
switch (input) {
case Shortcut.SwapLeft:
if (this.direction.north || this.direction.south) {
- this.toUpOrLeft(ctx);
+ isApply = this.toUpOrLeft(ctx);
}
else if (this.direction.east) {
- this.toColumnWithBiggerIndex(ctx);
+ isApply = this.toColumnWithBiggerIndex(ctx);
}
else
- this.toColumnWithSmallerIndex(ctx);
+ isApply = this.toColumnWithSmallerIndex(ctx);
break;
case Shortcut.SwapRight:
if (this.direction.north || this.direction.south) {
- this.toBottomOrRight(ctx);
+ isApply = this.toBottomOrRight(ctx);
}
else if (this.direction.east) {
- this.toColumnWithSmallerIndex(ctx);
+ isApply = this.toColumnWithSmallerIndex(ctx);
}
else
- this.toColumnWithBiggerIndex(ctx);
+ isApply = this.toColumnWithBiggerIndex(ctx);
break;
case Shortcut.SwapUp:
if (this.direction.north) {
- this.toColumnWithSmallerIndex(ctx);
+ isApply = this.toColumnWithSmallerIndex(ctx);
}
else if (this.direction.south) {
- this.toColumnWithBiggerIndex(ctx);
+ isApply = this.toColumnWithBiggerIndex(ctx);
}
else
- this.toUpOrLeft(ctx);
+ isApply = this.toUpOrLeft(ctx);
break;
case Shortcut.SwapDown:
if (this.direction.north) {
- this.toColumnWithBiggerIndex(ctx);
+ isApply = this.toColumnWithBiggerIndex(ctx);
}
else if (this.direction.south) {
- print("hello");
- this.toColumnWithSmallerIndex(ctx);
+ isApply = this.toColumnWithSmallerIndex(ctx);
}
else
- this.toBottomOrRight(ctx);
+ isApply = this.toBottomOrRight(ctx);
break;
case Shortcut.Rotate:
this.direction.cwRotation();
- print(`cwRotation: north:${this.direction.north},east:${this.direction.east},south:${this.direction.south},west:${this.direction.west}`);
+ this.showDirection(ctx);
+ isApply = true;
break;
case Shortcut.RotatePart:
this.direction.ccwRotation();
- print(`ccwRotation: north:${this.direction.north},east:${this.direction.east},south:${this.direction.south},west:${this.direction.west}`);
+ this.showDirection(ctx);
+ isApply = true;
break;
default:
return false;
}
- return true;
+ return isApply;
}
- insertColumn(index) {
- this.parts.splice(index, 0, new ColumnLayout());
- this.applyColumnsPosition();
+ insertColumn(onTop) {
+ let column = new ColumnLayout();
+ this.parts.splice(onTop ? 0 : this.parts.length, 0, column);
+ return column;
}
}
ColumnsLayout.id = "Columns";
diff --git a/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/config/main.xml b/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/config/main.xml
index 703b90f6..284d9934 100644
--- a/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/config/main.xml
+++ b/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/config/main.xml
@@ -64,11 +64,17 @@
true
+
0
+
+
+ false
+
+
false
diff --git a/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/ui/config.ui b/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/ui/config.ui
index 64941598..9f5f5835 100644
--- a/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/ui/config.ui
+++ b/roles/config/files/.local/share/kwin/scripts/krohnkite/contents/ui/config.ui
@@ -7,7 +7,7 @@
0
0
440
- 755
+ 1109
@@ -258,6 +258,19 @@
+ -
+
+
+ Qt::Orientation::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
-
-
@@ -299,18 +312,15 @@
- -
-
-
- Qt::Orientation::Horizontal
+
-
+
+
+ Creating a new window in the shortest column
-
-
- 40
- 20
-
+
+ Balanced
-
+
diff --git a/roles/config/files/.local/share/kwin/scripts/krohnkite/metadata.json b/roles/config/files/.local/share/kwin/scripts/krohnkite/metadata.json
index 9a2786ee..163f4dc8 100644
--- a/roles/config/files/.local/share/kwin/scripts/krohnkite/metadata.json
+++ b/roles/config/files/.local/share/kwin/scripts/krohnkite/metadata.json
@@ -2,7 +2,7 @@
"KPackageStructure": "KWin/Script",
"KPlugin": {
"Name": "Krohnkite",
- "Description": "A dynamic tiling script for KWin (96a3502)",
+ "Description": "A dynamic tiling script for KWin (f1ef1cf)",
"Icon": "dialog-tile-clones",
"Authors": [
@@ -12,7 +12,7 @@
}
],
"Id": "krohnkite",
- "Version": "0.9.8.2",
+ "Version": "0.9.8.3",
"License": "MIT",
"Website": "https://github.com/anametologin/krohnkite#readme"
},