From b8aff62b38c3f4acd627ec6e4cba34d15ef6338a Mon Sep 17 00:00:00 2001 From: Alice Gaudon Date: Sat, 28 Sep 2019 12:59:41 +0200 Subject: [PATCH] Add tiling shortcuts to move windows between entire screens --- simple/init.lua | 6 ++++++ simple/tiling.lua | 34 ++++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/simple/init.lua b/simple/init.lua index f7d7577..57b63e8 100644 --- a/simple/init.lua +++ b/simple/init.lua @@ -446,6 +446,12 @@ clientkeys = gears.table.join(-- tiling awful.key({ config.keys.modkey, }, "Left", tiling.key.tileLeft, { description = "Tile left", group = "tiling" }), + awful.key({ config.keys.modkey, "Control" }, "Right", + tiling.key.screenRight, + { description = "Screen right", group = "tiling" }), + awful.key({ config.keys.modkey, "Control" }, "Left", + tiling.key.screenLeft, + { description = "Screen left", group = "tiling" }), awful.key({ config.keys.modkey, }, "Up", tiling.key.toggleMaximized, { description = "Toggle maximized", group = "tiling" }), diff --git a/simple/tiling.lua b/simple/tiling.lua index 224a045..8370e09 100644 --- a/simple/tiling.lua +++ b/simple/tiling.lua @@ -32,28 +32,42 @@ local applyTile = function(c, geometry) return not geometryEquals(initialGeometry, newGeometry) end +local screenLeft = function(geo) + return function (c) + local newScreen = c.screen.get_next_in_direction(c.screen, "left") + if newScreen ~= nil then + c.screen = newScreen + applyTile(c, geo) + end + end +end + +local screenRight = function(geo) + return function (c) + local newScreen = c.screen.get_next_in_direction(c.screen, "right") + if newScreen ~= nil then + c.screen = newScreen + applyTile(c, geo) + end + end +end + return { key = { tileRight = function (c) c.maximized = true if not applyTile(c, rightTileGeometry) then - local newScreen = c.screen.get_next_in_direction(c.screen, "right") - if newScreen ~= nil then - c.screen = newScreen - applyTile(c, leftTileGeometry) - end + screenRight(leftTileGeometry)(c) end end, tileLeft = function (c) c.maximized = true if not applyTile(c, leftTileGeometry) then - local newScreen = c.screen.get_next_in_direction(c.screen, "left") - if newScreen ~= nil then - c.screen = newScreen - applyTile(c, rightTileGeometry) - end + screenLeft(rightTileGeometry)(c) end end, + screenLeft = screenLeft(maximizedTileGeometry), + screenRight = screenRight(maximizedTileGeometry), toggleMaximized = function (c) if not c.maximized then c.maximized = true