Compare commits

...

1 Commits

Author SHA1 Message Date
63e360d427 very broken keybinds lol 2026-06-30 15:55:32 +01:00
6 changed files with 142 additions and 2 deletions

34
Bar.qml
View File

@@ -1,8 +1,9 @@
import QtQuick import QtQuick
import QtQuick.Effects
import QtQuick.Layouts
import Quickshell import Quickshell
import Quickshell.Hyprland import Quickshell.Hyprland
import Quickshell.Io
import Quickshell.Wayland
import "./Services/"
import "Bar" import "Bar"
import "Color.js" as Colors import "Color.js" as Colors
@@ -19,6 +20,15 @@ Scope {
required property var modelData required property var modelData
property HyprlandMonitor monitor: Hyprland.monitorFor(modelData) property HyprlandMonitor monitor: Hyprland.monitorFor(modelData)
function refocus() {
if (WlrLayershell == null)
return;
WlrLayershell.keyboardFocus = WlrKeyboardFocus.None;
Qt.callLater(() => {
WlrLayershell.keyboardFocus = WlrKeyboardFocus.Exclusive;
});
}
color: "transparent" color: "transparent"
exclusionMode: ExclusionMode.Normal exclusionMode: ExclusionMode.Normal
exclusiveZone: barExclusionZone exclusiveZone: barExclusionZone
@@ -39,6 +49,26 @@ Scope {
} }
} }
Component.onCompleted: {
if (this.WlrLayershell != null) {
this.WlrLayershell.keyboardFocus = WlrKeyboardFocus.OnDemand;
}
}
Connections {
function onRaiseCancelled() {
win.WlrLayershell.keyboardFocus = WlrKeyboardFocus.OnDemand;
}
function onRaiseRequested() {
// win.WlrLayershell.keyboardFocus = WlrKeyboardFocus.Exclusive;
win.refocus();
}
target: FocusManager
}
anchors { anchors {
left: true left: true
right: true right: true

View File

@@ -3,6 +3,7 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import Quickshell import Quickshell
import Quickshell.Hyprland import Quickshell.Hyprland
import Quickshell.Io
import Quickshell.Services.Mpris import Quickshell.Services.Mpris
import Quickshell.Services.Notifications import Quickshell.Services.Notifications
import "../Color.js" as Colors import "../Color.js" as Colors
@@ -119,6 +120,23 @@ Container {
root.previousState = "notified"; root.previousState = "notified";
} }
} }
},
State {
name: "logout"
PropertyChanges {
root.boxHeight: 90
root.boxRadius: 30
root.boxWidth: 330
root.visibleTopMargin: 20
}
StateChangeScript {
script: {
root.stack.replace(logout);
root.previousState = "logout";
}
}
} }
] ]
@@ -127,6 +145,8 @@ Container {
if (root.state == "notified") { if (root.state == "notified") {
root.state = "notified"; root.state = "notified";
notificationViewTimer.stop(); notificationViewTimer.stop();
} else if (root.state == "logout") {
root.state = "logout";
} else if (MprisManager.getPlaying() == true) { } else if (MprisManager.getPlaying() == true) {
root.state = "mprisToast"; root.state = "mprisToast";
} else { } else {
@@ -134,6 +154,7 @@ Container {
} }
} else { } else {
root.state = ""; root.state = "";
FocusManager.exitRaise();
} }
} }
onLatestNotificationChanged: { onLatestNotificationChanged: {
@@ -148,6 +169,32 @@ Container {
root.state == "hovered" ? root.state = "expanded" : undefined; root.state == "hovered" ? root.state = "expanded" : undefined;
} }
Connections {
function onactivated() {
console.log("some", root.state);
}
target: root.stack
}
Connections {
function onLogoutTriggered() {
if (Hyprland.focusedMonitor == root.exclusiveMonitor) {
root.state = "logout";
}
}
target: IpcManager
}
Connections {
function onRaiseCancelled() {
root.state = "";
}
target: FocusManager
}
Connections { Connections {
function onTrackChanged() { function onTrackChanged() {
if (Hyprland.focusedMonitor == root.monitor) { if (Hyprland.focusedMonitor == root.monitor) {
@@ -260,4 +307,10 @@ Container {
} }
} }
} }
Component {
id: logout
Logout {}
}
} }

18
Bar/Center/Logout.qml Normal file
View File

@@ -0,0 +1,18 @@
import QtQuick
import "../../Components/"
import "../../Services/"
Item {
CenteredText {
text: "some"
}
Shortcut {
sequence: "Escape"
onActivated: {
console.log("shortcut triggered");
FocusManager.exitRaise();
}
}
}

19
Services/FocusManager.qml Normal file
View File

@@ -0,0 +1,19 @@
pragma Singleton
import QtQuick
import Quickshell
Singleton {
id: root
signal raiseCancelled
signal raiseRequested
function exitRaise() {
console.log("exiting raise");
root.raiseCancelled();
}
function requestRaise() {
root.raiseRequested();
}
}

18
Services/IpcManager.qml Normal file
View File

@@ -0,0 +1,18 @@
pragma Singleton
import QtQuick
import Quickshell
import Quickshell.Io
Singleton {
id: root
signal logoutTriggered()
IpcHandler {
function logout() {
root.logoutTriggered();
}
target: "main"
}
}

View File

@@ -4,3 +4,5 @@ singleton NotificationManager 1.0 NotificationManager.qml
singleton WorkspaceManager 1.0 WorkspaceManager.qml singleton WorkspaceManager 1.0 WorkspaceManager.qml
singleton BluetoothManager 1.0 BluetoothManager.qml singleton BluetoothManager 1.0 BluetoothManager.qml
singleton MprisManager 1.0 MprisManager.qml singleton MprisManager 1.0 MprisManager.qml
singleton IpcManager 1.0 IpcManager.qml
singleton FocusManager 1.0 FocusManager.qml