agsdotfilesdotshyprlandhyprland-configricerofirofi-configshell-scriptsswwwwallustwaybarwaybar-modulewaybar-themes
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
1.0 KiB
28 lines
1.0 KiB
import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; |
|
import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js'; |
|
|
|
function moveClientToWorkspace(address, workspace) { |
|
Utils.execAsync(['bash', '-c', `hyprctl dispatch movetoworkspacesilent ${workspace},address:${address} &`]); |
|
} |
|
|
|
export function dumpToWorkspace(from, to) { |
|
if (from == to) return; |
|
Hyprland.clients.forEach(client => { |
|
if (client.workspace.id == from) { |
|
moveClientToWorkspace(client.address, to); |
|
} |
|
}); |
|
} |
|
|
|
export function swapWorkspace(workspaceA, workspaceB) { |
|
if (workspaceA == workspaceB) return; |
|
const clientsA = []; |
|
const clientsB = []; |
|
Hyprland.clients.forEach(client => { |
|
if (client.workspace.id == workspaceA) clientsA.push(client.address); |
|
if (client.workspace.id == workspaceB) clientsB.push(client.address); |
|
}); |
|
|
|
clientsA.forEach((address) => moveClientToWorkspace(address, workspaceB)); |
|
clientsB.forEach((address) => moveClientToWorkspace(address, workspaceA)); |
|
} |