feat: hidden mode

This commit is contained in:
Kiana Sheibani 2025-12-12 14:39:47 -05:00
parent 589aaaf95f
commit 608854ba03
Signed by: toki
GPG key ID: 6CB106C25E86A9F7
4 changed files with 38 additions and 4 deletions

View file

@ -123,6 +123,26 @@ Scope {
}
}
CustomShortcut {
name: "hidden"
description: "Enable hidden mode"
onPressed: {
States.screens.forEach((uiState, _, _) => {
uiState.hidden = true;
})
}
}
CustomShortcut {
name: "hiddenoff"
description: "Disable hidden mode"
onPressed: {
States.screens.forEach((uiState, _, _) => {
uiState.hidden = false;
})
}
}
CustomShortcut {
name: "session"
description: "Toggle session menu"

View file

@ -9,6 +9,7 @@ Scope {
id: root
required property ShellScreen screen
property bool enabled: true
ExclusionZone {
anchors.left: true
@ -16,7 +17,7 @@ Scope {
ExclusionZone {
anchors.top: true
exclusiveZone: Config.bar.height
exclusiveZone: root.enabled ? Config.bar.height : undefined
}
ExclusionZone {
@ -30,7 +31,8 @@ Scope {
component ExclusionZone: CustomWindow {
screen: root.screen
name: "border-exclusion"
exclusiveZone: Config.border.thickness
exclusionMode: root.enabled ? ExclusionMode.Normal : ExclusionMode.Ignore
exclusiveZone: root.enabled ? Config.border.thickness : undefined
mask: Region {}
}
}

View file

@ -14,6 +14,7 @@ Variants {
Exclusion {
screen: scope.modelData
enabled: !uiState.uiState.hidden
}
CustomWindow {
@ -37,9 +38,13 @@ Variants {
// Exclusion
exclusionMode: ExclusionMode.Ignore
mask: uiState.uiState.blockScreen ? exclusionBlock : exclusion
mask: uiState.uiState.hidden ? exclusionHidden : uiState.uiState.blockScreen ? exclusionBlock : exclusion
WlrLayershell.keyboardFocus: uiState.uiState.blockScreen ? WlrKeyboardFocus.Exclusive : WlrKeyboardFocus.None
Region {
id: exclusionHidden
}
Region {
id: exclusionBlock
intersection: Intersection.Xor
@ -78,7 +83,7 @@ Variants {
anchors.fill: parent
color: Config.colors.overlay
opacity: uiState.uiState.blockScreen ? 0.5 : 0
visible: opacity > 0
visible: !uiState.uiState.hidden && opacity > 0
Behavior on opacity {
Anim {}
@ -90,6 +95,7 @@ Variants {
blurMax: 25
blurMultiplier: 0
glowColor: Config.colors.highlight
visible: !uiState.uiState.hidden
}
Interactions {
@ -97,10 +103,12 @@ Variants {
bar: bar
panels: panels
screen: scope.modelData
visible: !uiState.uiState.hidden
Panels {
id: panels
visible: !uiState.uiState.hidden
uiState: uiState.uiState
screen: scope.modelData
bar: bar
@ -109,11 +117,13 @@ Variants {
Border {
id: border
visible: !uiState.uiState.hidden
}
Bar {
id: bar
visible: !uiState.uiState.hidden
uiState: uiState.uiState
screen: scope.modelData
popouts: panels.popouts

View file

@ -24,6 +24,8 @@ Scope {
property bool osd
property bool session
// Special modes
property bool hidden
property bool blockScreen
// Other state