forked from Shinonome/dots-hyprland
lock screen: unfuck resolution
This commit is contained in:
@@ -6,8 +6,6 @@ import qs.modules.common.functions
|
|||||||
import qs.modules.common.panels.lock
|
import qs.modules.common.panels.lock
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Io
|
|
||||||
import Quickshell.Wayland
|
|
||||||
import Quickshell.Hyprland
|
import Quickshell.Hyprland
|
||||||
|
|
||||||
LockScreen {
|
LockScreen {
|
||||||
@@ -18,24 +16,7 @@ LockScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Push everything down
|
// Push everything down
|
||||||
property var windowData: []
|
property var lastWorkspaceId: 1
|
||||||
function saveWindowPositionAndTile() {
|
|
||||||
Quickshell.execDetached(["hyprctl", "keyword", "dwindle:pseudotile", "true"]);
|
|
||||||
root.windowData = HyprlandData.windowList.filter(w => (w.floating && w.workspace.id === HyprlandData.activeWorkspace.id));
|
|
||||||
root.windowData.forEach(w => {
|
|
||||||
Hyprland.dispatch(`pseudo address:${w.address}`);
|
|
||||||
Hyprland.dispatch(`settiled address:${w.address}`);
|
|
||||||
Hyprland.dispatch(`movetoworkspacesilent ${w.workspace.id},address:${w.address}`);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function restoreWindowPositionAndTile() {
|
|
||||||
root.windowData.forEach(w => {
|
|
||||||
Hyprland.dispatch(`setfloating address:${w.address}`);
|
|
||||||
Hyprland.dispatch(`movewindowpixel exact ${w.at[0]} ${w.at[1]}, address:${w.address}`);
|
|
||||||
Hyprland.dispatch(`pseudo address:${w.address}`);
|
|
||||||
});
|
|
||||||
Quickshell.execDetached(["hyprctl", "keyword", "dwindle:pseudotile", "false"]);
|
|
||||||
}
|
|
||||||
Variants {
|
Variants {
|
||||||
model: Quickshell.screens
|
model: Quickshell.screens
|
||||||
delegate: Scope {
|
delegate: Scope {
|
||||||
@@ -46,11 +27,11 @@ LockScreen {
|
|||||||
property int horizontalSqueeze: modelData.width * 0.2
|
property int horizontalSqueeze: modelData.width * 0.2
|
||||||
onShouldPushChanged: {
|
onShouldPushChanged: {
|
||||||
if (shouldPush) {
|
if (shouldPush) {
|
||||||
root.saveWindowPositionAndTile();
|
root.lastWorkspaceId = HyprlandData.activeWorkspace.id;
|
||||||
Quickshell.execDetached(["bash", "-c", `hyprctl keyword monitor ${targetMonitorName}, addreserved, ${verticalMovementDistance}, ${-verticalMovementDistance}, ${horizontalSqueeze}, ${horizontalSqueeze}`]);
|
// Set anim to vertical and move to very very big workspace for a sliding up effect
|
||||||
|
Quickshell.execDetached(["hyprctl", "--batch", "keyword animation workspaces,1,7,menu_decel,slidevert; dispatch workspace 2147483647"]);
|
||||||
} else {
|
} else {
|
||||||
Quickshell.execDetached(["bash", "-c", `hyprctl keyword monitor ${targetMonitorName}, addreserved, 0, 0, 0, 0`]);
|
Quickshell.execDetached(["hyprctl", "--batch", `dispatch workspace ${root.lastWorkspaceId}; reload`]);
|
||||||
root.restoreWindowPositionAndTile();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user