Move windows to existing monitors
This commit is contained in:
@@ -12,21 +12,17 @@ local function setup_monitors()
|
|||||||
local monitors = hl.get_monitors()
|
local monitors = hl.get_monitors()
|
||||||
local monitor_count = #monitors
|
local monitor_count = #monitors
|
||||||
|
|
||||||
-- Move active window to a workspace with SUPER + SHIFT + [1-5]
|
|
||||||
for i = 1, #workspace_map do
|
for i = 1, #workspace_map do
|
||||||
for j = monitor_count, 1, -1 do
|
for j = monitor_count, 1, -1 do
|
||||||
local monitor = monitors[j]
|
local monitor = monitors[j]
|
||||||
-- local workspace_id = "name:" .. workspace_map[i] .. "_" .. j
|
|
||||||
local workspace_id = (i - 1) * monitor_count + j
|
|
||||||
local workspace_name = workspace_map[i] .. '_' .. j
|
local workspace_name = workspace_map[i] .. '_' .. j
|
||||||
hl.workspace_rule {
|
hl.workspace_rule {
|
||||||
-- workspace = (i - 1) * monitor_count + j,
|
|
||||||
-- default_name = workspace_name,
|
|
||||||
workspace = 'name:' .. workspace_name,
|
workspace = 'name:' .. workspace_name,
|
||||||
monitor = monitor.name,
|
monitor = monitor.name,
|
||||||
default = i == 1,
|
default = i == 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- Move to a workspace with SUPER + [1-5]
|
||||||
hl.bind(
|
hl.bind(
|
||||||
'SUPER + code:1' .. (i - 1),
|
'SUPER + code:1' .. (i - 1),
|
||||||
hl.dsp.focus { workspace = 'name:' .. workspace_name },
|
hl.dsp.focus { workspace = 'name:' .. workspace_name },
|
||||||
@@ -34,6 +30,7 @@ local function setup_monitors()
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Move active window to a workspace with SUPER + SHIFT + [1-5]
|
||||||
hl.bind('SUPER + SHIFT + code:1' .. (i - 1), function()
|
hl.bind('SUPER + SHIFT + code:1' .. (i - 1), function()
|
||||||
notify('Moving', 2000)
|
notify('Moving', 2000)
|
||||||
local active_window = hl.get_active_window()
|
local active_window = hl.get_active_window()
|
||||||
@@ -58,6 +55,27 @@ local function setup_monitors()
|
|||||||
description = 'Move window to workspace ' .. workspace_map[i],
|
description = 'Move window to workspace ' .. workspace_map[i],
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- When removing a monitor move all windows to existing monitors
|
||||||
|
local windows = hl.get_windows()
|
||||||
|
for i = 1, #windows do
|
||||||
|
local window = windows[i]
|
||||||
|
if window and window.workspace then
|
||||||
|
local workspace_name = window.workspace.name
|
||||||
|
local monitor_suffix = workspace_name:match '_(%d+)$' or '0'
|
||||||
|
if tonumber(monitor_suffix) > monitor_count then
|
||||||
|
local new_workspace = 'name:'
|
||||||
|
.. workspace_name:match '^%w+'
|
||||||
|
.. '_1'
|
||||||
|
|
||||||
|
hl.dispatch(hl.dsp.window.move {
|
||||||
|
workspace = new_workspace,
|
||||||
|
window = window,
|
||||||
|
follow = false,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
hl.on('monitor.added', setup_monitors)
|
hl.on('monitor.added', setup_monitors)
|
||||||
|
|||||||
Reference in New Issue
Block a user