summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2020-12-02 16:54:37 +0100
committerAnton Khirnov <anton@khirnov.net>2020-12-02 16:54:37 +0100
commitce845ee2aa0efbfc0b8706e7933b1dff5749f24f (patch)
treed69f4ca88423e9ab0d8dd0f702c2e8b82f3dfc84
parent26d0f94af5075c631222dd8df71946535cba6eb3 (diff)
bindings: add bindings for moving clients between adjacent desktop pages
-rw-r--r--bindings.lua15
-rw-r--r--workspace.lua10
2 files changed, 25 insertions, 0 deletions
diff --git a/bindings.lua b/bindings.lua
index f23b074..f9db2d7 100644
--- a/bindings.lua
+++ b/bindings.lua
@@ -84,6 +84,21 @@ function M.create(workspace)
awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1) end),
awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end),
+ -- move to upper/lower page
+ awful.key({ modkey, "Shift" }, "j",
+ function ()
+ if client.focus then
+ local c = client.focus
+ workspace:client_move_relative(c, 1)
+ end
+ end),
+ awful.key({ modkey, "Shift" }, "k",
+ function ()
+ if client.focus then
+ local c = client.focus
+ workspace:client_move_relative(c, -1)
+ end
+ end),
-- Prompt
awful.key({ modkey }, "n",
diff --git a/workspace.lua b/workspace.lua
index f0a6dcc..cb0eff1 100644
--- a/workspace.lua
+++ b/workspace.lua
@@ -157,6 +157,16 @@ function Workspace:move_client(client, desk, page)
awful.client.movetotag(dst_page, client)
end
+function Workspace:client_move_relative(client, offset)
+ local state = self.screen_state[mouse.screen]
+ if state then
+ local desk = state.desktop_idx
+ local page = 1 + ((state.page_idx - 1 + offset) % #self.desktops[desk].pages)
+
+ self:move_client(client, desk, page)
+ end
+end
+
function Workspace:new(layouts)
local o = setmetatable({}, self)
self.__index = self