From cba9f10a24bdcac935fbf30eae37f2e0f9ea828a Mon Sep 17 00:00:00 2001 From: quadbyte Date: Thu, 7 Aug 2025 15:55:56 -0400 Subject: [PATCH] Fix build --- Widgets/SidePanel/PowerMenu.qml | 7 +- Widgets/Sidebar/Config/ProfileSettings.qml | 643 ----------------- Widgets/Sidebar/Config/SettingsModal.qml | 189 ----- Widgets/Sidebar/Config/WallpaperSettings.qml | 722 ------------------- Widgets/Sidebar/Panel/QuickAccess.qml | 199 ----- Widgets/Sidebar/Panel/WallpaperPanel.qml | 170 ----- 6 files changed, 1 insertion(+), 1929 deletions(-) delete mode 100644 Widgets/Sidebar/Config/ProfileSettings.qml delete mode 100644 Widgets/Sidebar/Config/SettingsModal.qml delete mode 100644 Widgets/Sidebar/Config/WallpaperSettings.qml delete mode 100644 Widgets/Sidebar/Panel/QuickAccess.qml delete mode 100644 Widgets/Sidebar/Panel/WallpaperPanel.qml diff --git a/Widgets/SidePanel/PowerMenu.qml b/Widgets/SidePanel/PowerMenu.qml index 8170935..ddcf8db 100644 --- a/Widgets/SidePanel/PowerMenu.qml +++ b/Widgets/SidePanel/PowerMenu.qml @@ -19,12 +19,6 @@ Rectangle { property bool panelVisible: false property var settingsModal: null - Process { - id: logoutProcess - command: ["loginctl", "terminate-user", Quickshell.env("USER")] - running: false - } - function logout() { if (WorkspaceManager.isNiri) logoutProcessNiri.running = true; @@ -152,6 +146,7 @@ Rectangle { onClicked: { if (typeof settingsModal !== 'undefined' && settingsModal && settingsModal.openSettings) settingsModal.openSettings(); + } } diff --git a/Widgets/Sidebar/Config/ProfileSettings.qml b/Widgets/Sidebar/Config/ProfileSettings.qml deleted file mode 100644 index 3451e25..0000000 --- a/Widgets/Sidebar/Config/ProfileSettings.qml +++ /dev/null @@ -1,643 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Effects -import QtQuick.Controls -import Quickshell.Widgets -import qs.Components -import qs.Settings - -Rectangle { - id: profileSettingsCard - Layout.fillWidth: true - Layout.preferredHeight: 690 - color: Theme.surface - radius: 18 - - ColumnLayout { - anchors.fill: parent - anchors.margins: 18 - spacing: 12 - - // Header - RowLayout { - Layout.fillWidth: true - spacing: 12 - Text { - text: "settings" - font.family: "Material Symbols Outlined" - font.pixelSize: 20 - color: Theme.accentPrimary - } - Text { - text: "Profile Settings" - font.family: Theme.fontFamily - font.pixelSize: 16 - font.bold: true - color: Theme.textPrimary - Layout.fillWidth: true - } - } - - // Profile Image Input Section - ColumnLayout { - spacing: 8 - Layout.fillWidth: true - - Text { - text: "Profile Image" - font.family: Theme.fontFamily - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - RowLayout { - spacing: 8 - Layout.fillWidth: true - - // Profile image - Rectangle { - width: 48 - height: 48 - radius: 24 - - // Border - Rectangle { - anchors.fill: parent - color: "transparent" - radius: 24 - border.color: profileImageInput.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 2 - z: 2 - } - - Avatar {} - } - - Rectangle { - Layout.fillWidth: true - Layout.preferredHeight: 40 - radius: 16 - color: Theme.surfaceVariant - border.color: profileImageInput.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 1 - - TextInput { - id: profileImageInput - anchors.fill: parent - anchors.leftMargin: 12 - anchors.rightMargin: 12 - anchors.topMargin: 6 - anchors.bottomMargin: 6 - text: Settings.settings.profileImage - font.family: Theme.fontFamily - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: TextInput.AlignVCenter - clip: true - selectByMouse: true - activeFocusOnTab: true - inputMethodHints: Qt.ImhUrlCharactersOnly - onTextChanged: { - Settings.settings.profileImage = text; - } - MouseArea { - anchors.fill: parent - cursorShape: Qt.IBeamCursor - onClicked: profileImageInput.forceActiveFocus() - } - } - } - } - } - - // Show Active Window Icon Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Show Active Window Icon" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Rectangle { - id: activeWindowIconSwitch - width: 52 - height: 32 - radius: 16 - color: Settings.settings.showActiveWindowIcon ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.showActiveWindowIcon ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: activeWindowIconThumb - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.showActiveWindowIcon ? activeWindowIconSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - } - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.showActiveWindowIcon = !Settings.settings.showActiveWindowIcon; - } - } - } - } - - // Show System Info In Bar Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Show System Info In Bar" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Rectangle { - id: systemInfoSwitch - width: 52 - height: 32 - radius: 16 - color: Settings.settings.showSystemInfoInBar ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.showSystemInfoInBar ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: systemInfoThumb - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.showSystemInfoInBar ? systemInfoSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - } - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.showSystemInfoInBar = !Settings.settings.showSystemInfoInBar; - } - } - } - } - - // Show Corners Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Show Corners" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Rectangle { - id: cornersSwitch - width: 52 - height: 32 - radius: 16 - color: Settings.settings.showCorners ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.showCorners ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: cornersThumb - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.showCorners ? cornersSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - } - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.showCorners = !Settings.settings.showCorners; - } - } - } - } - - // Show Taskbar Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Show Taskbar" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Rectangle { - id: taskbarSwitch - width: 52 - height: 32 - radius: 16 - color: Settings.settings.showTaskbar ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.showTaskbar ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: taskbarThumb - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.showTaskbar ? taskbarSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - } - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.showTaskbar = !Settings.settings.showTaskbar; - } - } - } - } - - // Show Dock Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Show Dock" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Rectangle { - id: dockSwitch - width: 52 - height: 32 - radius: 16 - color: Settings.settings.showDock ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.showDock ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: dockThumb - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.showDock ? taskbarSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - } - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.showDock = !Settings.settings.showDock; - } - } - } - } - - // Show Media In Bar Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Show Media In Bar" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Rectangle { - id: mediaSwitch - width: 52 - height: 32 - radius: 16 - color: Settings.settings.showMediaInBar ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.showMediaInBar ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: mediaThumb - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.showMediaInBar ? mediaSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - } - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.showMediaInBar = !Settings.settings.showMediaInBar; - } - } - } - } - - // Dim Windows Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Dim Desktop" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Rectangle { - id: dimSwitch - width: 52 - height: 32 - radius: 16 - color: Settings.settings.dimPanels ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.dimPanels ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: dimThumb - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.dimPanels ? dimSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - } - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.dimPanels = !Settings.settings.dimPanels; - } - } - } - } - - // Visualizer Type Selection - ColumnLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 16 - - Text { - text: "Visualizer Type" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - ComboBox { - id: visualizerTypeComboBox - Layout.fillWidth: true - Layout.preferredHeight: 40 - model: ["radial", "fire", "diamond"] - currentIndex: model.indexOf(Settings.settings.visualizerType) - - background: Rectangle { - implicitWidth: 120 - implicitHeight: 40 - color: Theme.surfaceVariant - border.color: visualizerTypeComboBox.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 1 - radius: 16 - } - - contentItem: Text { - leftPadding: 12 - rightPadding: visualizerTypeComboBox.indicator.width + visualizerTypeComboBox.spacing - text: visualizerTypeComboBox.displayText.charAt(0).toUpperCase() + visualizerTypeComboBox.displayText.slice(1) - font.family: Theme.fontFamily - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - indicator: Text { - x: visualizerTypeComboBox.width - width - 12 - y: visualizerTypeComboBox.topPadding + (visualizerTypeComboBox.availableHeight - height) / 2 - text: "arrow_drop_down" - font.family: "Material Symbols Outlined" - font.pixelSize: 24 - color: Theme.textPrimary - } - - popup: Popup { - y: visualizerTypeComboBox.height - width: visualizerTypeComboBox.width - implicitHeight: contentItem.implicitHeight - padding: 1 - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: visualizerTypeComboBox.popup.visible ? visualizerTypeComboBox.delegateModel : null - currentIndex: visualizerTypeComboBox.highlightedIndex - - ScrollIndicator.vertical: ScrollIndicator {} - } - - background: Rectangle { - color: Theme.surfaceVariant - border.color: Theme.outline - border.width: 1 - radius: 16 - } - } - - delegate: ItemDelegate { - width: visualizerTypeComboBox.width - contentItem: Text { - text: modelData.charAt(0).toUpperCase() + modelData.slice(1) - font.family: Theme.fontFamily - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - highlighted: visualizerTypeComboBox.highlightedIndex === index - - background: Rectangle { - color: highlighted ? Theme.accentPrimary.toString().replace(/#/, "#1A") : "transparent" - } - } - - onActivated: { - Settings.settings.visualizerType = model[index]; - } - } - } - - // Video Path Input Section - ColumnLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 16 - - Text { - text: "Video Path" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Rectangle { - Layout.fillWidth: true - Layout.preferredHeight: 40 - radius: 16 - color: Theme.surfaceVariant - border.color: videoPathInput.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 1 - - TextInput { - id: videoPathInput - anchors.fill: parent - anchors.leftMargin: 12 - anchors.rightMargin: 12 - anchors.topMargin: 6 - anchors.bottomMargin: 6 - text: Settings.settings.videoPath !== undefined ? Settings.settings.videoPath : "" - font.family: Theme.fontFamily - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: TextInput.AlignVCenter - clip: true - selectByMouse: true - activeFocusOnTab: true - inputMethodHints: Qt.ImhUrlCharactersOnly - onTextChanged: { - Settings.settings.videoPath = text; - } - MouseArea { - anchors.fill: parent - cursorShape: Qt.IBeamCursor - onClicked: videoPathInput.forceActiveFocus() - } - } - } - } - } -} diff --git a/Widgets/Sidebar/Config/SettingsModal.qml b/Widgets/Sidebar/Config/SettingsModal.qml deleted file mode 100644 index 056f6f5..0000000 --- a/Widgets/Sidebar/Config/SettingsModal.qml +++ /dev/null @@ -1,189 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Quickshell -import Quickshell.Wayland -import qs.Settings -import qs.Services -import qs.Components - -PanelWindow { - id: settingsModal - implicitWidth: 480 - implicitHeight: 780 - visible: false - color: "transparent" - anchors.top: true - anchors.right: true - margins.right: 0 - margins.top: 0 - WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand - - Rectangle { - anchors.fill: parent - color: Theme.backgroundPrimary - radius: 20 - z: 0 - - ColumnLayout { - id: content - anchors.fill: parent - anchors.leftMargin: 32 - anchors.rightMargin: 32 - anchors.topMargin: 32 - spacing: 24 - - // Header - ColumnLayout { - id: header - Layout.fillWidth: true - spacing: 4 - RowLayout { - Layout.fillWidth: true - spacing: 20 - Text { - text: "settings" - font.family: "Material Symbols Outlined" - font.pixelSize: 32 - color: Theme.accentPrimary - } - Text { - text: "Settings" - font.pixelSize: 26 - font.bold: true - color: Theme.textPrimary - Layout.fillWidth: true - } - Rectangle { - width: 36 - height: 36 - radius: 18 - color: closeButtonArea.containsMouse ? Theme.accentPrimary : "transparent" - border.color: Theme.accentPrimary - border.width: 1 - Text { - anchors.centerIn: parent - text: "close" - font.family: closeButtonArea.containsMouse ? "Material Symbols Rounded" : "Material Symbols Outlined" - font.pixelSize: 20 - color: closeButtonArea.containsMouse ? Theme.onAccent : Theme.accentPrimary - } - MouseArea { - id: closeButtonArea - anchors.fill: parent - hoverEnabled: true - onClicked: settingsModal.closeSettings() - } - } - } - Rectangle { - Layout.fillWidth: true - height: 1 - color: Theme.outline - opacity: 0.12 - } - } - - // Tabs bar (reordered) - Tabs { - id: settingsTabs - Layout.fillWidth: true - tabsModel: [ - { icon: "settings", label: "System" }, - { icon: "wallpaper", label: "Wallpaper" }, - { icon: "cloud", label: "Weather" } - ] - } - - // Scrollable settings area - Rectangle { - Layout.fillWidth: true - Layout.preferredHeight: content.height - settingsTabs.height - header.height - 128 - color: "transparent" - border.width: 0 - radius: 20 - - Flickable { - id: flick - anchors.fill: parent - contentWidth: width - contentHeight: tabContentLoader.item ? tabContentLoader.item.implicitHeight : 0 - clip: true - - Loader { - id: tabContentLoader - anchors.top: parent.top - width: parent.width - sourceComponent: settingsTabs.currentIndex === 0 ? systemTab : settingsTabs.currentIndex === 1 ? wallpaperTab : weatherTab - } - } - - Component { - id: systemTab - ColumnLayout { - anchors.fill: parent - ProfileSettings { - Layout.fillWidth: true - Layout.alignment: Qt.AlignTop - anchors.margins: 16 - } - } - } - - Component { - id: wallpaperTab - ColumnLayout { - anchors.fill: parent - WallpaperSettings { - id: wallpaperSettings - Layout.fillWidth: true - Layout.alignment: Qt.AlignTop - anchors.margins: 16 - } - } - } - - Component { - id: weatherTab - ColumnLayout { - anchors.fill: parent - WeatherSettings { - Layout.fillWidth: true - Layout.alignment: Qt.AlignTop - anchors.margins: 16 - } - } - } - } - } - } - - // Function to open the modal and initialize temp values - function openSettings() { - visible = true; - focusTimer.start(); - } - - // Function to close the modal and release focus - function closeSettings() { - visible = false; - } - - Timer { - id: focusTimer - interval: 100 - repeat: false - onTriggered: { - if (visible) { - // Focus logic can go here if needed - } - } - } - - // Refresh weather data when hidden - onVisibleChanged: { - if (!visible && typeof weather !== 'undefined' && weather !== null && weather.fetchCityWeather) { - weather.fetchCityWeather(); - } - } -} diff --git a/Widgets/Sidebar/Config/WallpaperSettings.qml b/Widgets/Sidebar/Config/WallpaperSettings.qml deleted file mode 100644 index 2f5b66d..0000000 --- a/Widgets/Sidebar/Config/WallpaperSettings.qml +++ /dev/null @@ -1,722 +0,0 @@ -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts -import qs.Settings - -Rectangle { - id: wallpaperSettingsCard - - Layout.fillWidth: true - Layout.preferredHeight: Settings.settings.useSWWW ? 720 : 360 - color: Theme.surface - radius: 18 - - ColumnLayout { - anchors.fill: parent - anchors.margins: 18 - spacing: 12 - - // Header - RowLayout { - Layout.fillWidth: true - spacing: 12 - - Text { - text: "image" - font.family: "Material Symbols Outlined" - font.pixelSize: 20 - color: Theme.accentPrimary - } - - Text { - text: "Wallpaper Settings" - font.family: Theme.fontFamily - font.pixelSize: 16 - font.bold: true - color: Theme.textPrimary - Layout.fillWidth: true - } - } - - // Wallpaper Path - ColumnLayout { - spacing: 8 - Layout.fillWidth: true - - Text { - text: "Wallpaper Path" - font.family: Theme.fontFamily - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - // Folder Path Input - Rectangle { - Layout.fillWidth: true - Layout.preferredHeight: 40 - radius: 16 - color: Theme.surfaceVariant - border.color: folderInput.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 1 - - TextInput { - id: folderInput - - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.leftMargin: 12 - anchors.rightMargin: 12 - anchors.topMargin: 6 - anchors.bottomMargin: 6 - text: Settings.settings.wallpaperFolder - font.family: Theme.fontFamily - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: TextInput.AlignVCenter - clip: true - selectByMouse: true - activeFocusOnTab: true - inputMethodHints: Qt.ImhUrlCharactersOnly - onTextChanged: { - Settings.settings.wallpaperFolder = text; - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.IBeamCursor - onClicked: folderInput.forceActiveFocus() - } - - } - - } - - } - - - - // Random Wallpaper Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Random Wallpaper" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - // Custom Material 3 Switch - Rectangle { - id: randomWallpaperSwitch - - width: 52 - height: 32 - radius: 16 - color: Settings.settings.randomWallpaper ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.randomWallpaper ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: randomWallpaperThumb - - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.randomWallpaper ? randomWallpaperSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - - } - - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.randomWallpaper = !Settings.settings.randomWallpaper; - } - } - - } - - } - - // Use Wallpaper Theme Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Use Wallpaper Theme" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - // Custom Material 3 Switch - Rectangle { - id: wallpaperThemeSwitch - - width: 52 - height: 32 - radius: 16 - color: Settings.settings.useWallpaperTheme ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.useWallpaperTheme ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: wallpaperThemeThumb - - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.useWallpaperTheme ? wallpaperThemeSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - - } - - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.useWallpaperTheme = !Settings.settings.useWallpaperTheme; - } - } - - } - - } - - // Wallpaper Interval Setting - ColumnLayout { - spacing: 12 - Layout.fillWidth: true - Layout.topMargin: 8 - - RowLayout { - Layout.fillWidth: true - - Text { - text: "Wallpaper Interval (seconds)" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Text { - text: Settings.settings.wallpaperInterval - font.pixelSize: 13 - color: Theme.textPrimary - } - - } - - Slider { - id: intervalSlider - - Layout.fillWidth: true - from: 10 - to: 900 - stepSize: 10 - value: Settings.settings.wallpaperInterval - snapMode: Slider.SnapAlways - onMoved: { - Settings.settings.wallpaperInterval = Math.round(value); - } - - background: Rectangle { - x: intervalSlider.leftPadding - y: intervalSlider.topPadding + intervalSlider.availableHeight / 2 - height / 2 - implicitWidth: 200 - implicitHeight: 4 - width: intervalSlider.availableWidth - height: implicitHeight - radius: 2 - color: Theme.surfaceVariant - - Rectangle { - width: intervalSlider.visualPosition * parent.width - height: parent.height - color: Theme.accentPrimary - radius: 2 - } - - } - - handle: Rectangle { - x: intervalSlider.leftPadding + intervalSlider.visualPosition * (intervalSlider.availableWidth - width) - y: intervalSlider.topPadding + intervalSlider.availableHeight / 2 - height / 2 - implicitWidth: 20 - implicitHeight: 20 - radius: 10 - color: intervalSlider.pressed ? Theme.surfaceVariant : Theme.surface - border.color: Theme.accentPrimary - border.width: 2 - } - - } - - } - - // Use SWWW Setting - RowLayout { - spacing: 8 - Layout.fillWidth: true - Layout.topMargin: 8 - - Text { - text: "Use SWWW" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - // Custom Material 3 Switch - Rectangle { - id: swwwSwitch - - width: 52 - height: 32 - radius: 16 - color: Settings.settings.useSWWW ? Theme.accentPrimary : Theme.surfaceVariant - border.color: Settings.settings.useSWWW ? Theme.accentPrimary : Theme.outline - border.width: 2 - - Rectangle { - id: swwwThumb - - width: 28 - height: 28 - radius: 14 - color: Theme.surface - border.color: Theme.outline - border.width: 1 - y: 2 - x: Settings.settings.useSWWW ? swwwSwitch.width - width - 2 : 2 - - Behavior on x { - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - - } - - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - Settings.settings.useSWWW = !Settings.settings.useSWWW; - } - } - - } - - } - - // Resize Mode Setting - ColumnLayout { - spacing: 12 - Layout.fillWidth: true - Layout.topMargin: 16 - visible: Settings.settings.useSWWW - - Text { - text: "Resize Mode" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - ComboBox { - id: resizeComboBox - - Layout.fillWidth: true - Layout.preferredHeight: 40 - model: ["no", "crop", "fit", "stretch"] - currentIndex: model.indexOf(Settings.settings.wallpaperResize) - onActivated: { - Settings.settings.wallpaperResize = model[index]; - } - - background: Rectangle { - implicitWidth: 120 - implicitHeight: 40 - color: Theme.surfaceVariant - border.color: resizeComboBox.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 1 - radius: 16 - } - - contentItem: Text { - leftPadding: 12 - rightPadding: resizeComboBox.indicator.width + resizeComboBox.spacing - text: resizeComboBox.displayText - font.family: Theme.fontFamily - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - indicator: Text { - x: resizeComboBox.width - width - 12 - y: resizeComboBox.topPadding + (resizeComboBox.availableHeight - height) / 2 - text: "arrow_drop_down" - font.family: "Material Symbols Outlined" - font.pixelSize: 24 - color: Theme.textPrimary - } - - popup: Popup { - y: resizeComboBox.height - width: resizeComboBox.width - implicitHeight: contentItem.implicitHeight - padding: 1 - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: resizeComboBox.popup.visible ? resizeComboBox.delegateModel : null - currentIndex: resizeComboBox.highlightedIndex - - ScrollIndicator.vertical: ScrollIndicator { - } - - } - - background: Rectangle { - color: Theme.surfaceVariant - border.color: Theme.outline - border.width: 1 - radius: 16 - } - - } - - delegate: ItemDelegate { - width: resizeComboBox.width - highlighted: resizeComboBox.highlightedIndex === index - - contentItem: Text { - text: modelData - font.family: Theme.fontFamily - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - background: Rectangle { - color: highlighted ? Theme.accentPrimary.toString().replace(/#/, "#1A") : "transparent" - } - - } - - } - - } - - // Transition Type Setting - ColumnLayout { - spacing: 12 - Layout.fillWidth: true - Layout.topMargin: 16 - visible: Settings.settings.useSWWW - - Text { - text: "Transition Type" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - ComboBox { - id: transitionTypeComboBox - - Layout.fillWidth: true - Layout.preferredHeight: 40 - model: ["none", "simple", "fade", "left", "right", "top", "bottom", "wipe", "wave", "grow", "center", "any", "outer", "random"] - currentIndex: model.indexOf(Settings.settings.transitionType) - onActivated: { - Settings.settings.transitionType = model[index]; - } - - background: Rectangle { - implicitWidth: 120 - implicitHeight: 40 - color: Theme.surfaceVariant - border.color: transitionTypeComboBox.activeFocus ? Theme.accentPrimary : Theme.outline - border.width: 1 - radius: 16 - } - - contentItem: Text { - leftPadding: 12 - rightPadding: transitionTypeComboBox.indicator.width + transitionTypeComboBox.spacing - text: transitionTypeComboBox.displayText - font.family: Theme.fontFamily - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - indicator: Text { - x: transitionTypeComboBox.width - width - 12 - y: transitionTypeComboBox.topPadding + (transitionTypeComboBox.availableHeight - height) / 2 - text: "arrow_drop_down" - font.family: "Material Symbols Outlined" - font.pixelSize: 24 - color: Theme.textPrimary - } - - popup: Popup { - y: transitionTypeComboBox.height - width: transitionTypeComboBox.width - implicitHeight: contentItem.implicitHeight - padding: 1 - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: transitionTypeComboBox.popup.visible ? transitionTypeComboBox.delegateModel : null - currentIndex: transitionTypeComboBox.highlightedIndex - - ScrollIndicator.vertical: ScrollIndicator { - } - - } - - background: Rectangle { - color: Theme.surfaceVariant - border.color: Theme.outline - border.width: 1 - radius: 16 - } - - } - - delegate: ItemDelegate { - width: transitionTypeComboBox.width - highlighted: transitionTypeComboBox.highlightedIndex === index - - contentItem: Text { - text: modelData - font.family: Theme.fontFamily - font.pixelSize: 13 - color: Theme.textPrimary - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - background: Rectangle { - color: highlighted ? Theme.accentPrimary.toString().replace(/#/, "#1A") : "transparent" - } - - } - - } - - } - - // Transition FPS Setting - ColumnLayout { - spacing: 12 - Layout.fillWidth: true - Layout.topMargin: 16 - visible: Settings.settings.useSWWW - - RowLayout { - Layout.fillWidth: true - - Text { - text: "Transition FPS" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Text { - text: Settings.settings.transitionFps - font.pixelSize: 13 - color: Theme.textPrimary - } - - } - - Slider { - id: fpsSlider - - Layout.fillWidth: true - from: 30 - to: 500 - stepSize: 5 - value: Settings.settings.transitionFps - snapMode: Slider.SnapAlways - onMoved: { - Settings.settings.transitionFps = Math.round(value); - } - - background: Rectangle { - x: fpsSlider.leftPadding - y: fpsSlider.topPadding + fpsSlider.availableHeight / 2 - height / 2 - implicitWidth: 200 - implicitHeight: 4 - width: fpsSlider.availableWidth - height: implicitHeight - radius: 2 - color: Theme.surfaceVariant - - Rectangle { - width: fpsSlider.visualPosition * parent.width - height: parent.height - color: Theme.accentPrimary - radius: 2 - } - - } - - handle: Rectangle { - x: fpsSlider.leftPadding + fpsSlider.visualPosition * (fpsSlider.availableWidth - width) - y: fpsSlider.topPadding + fpsSlider.availableHeight / 2 - height / 2 - implicitWidth: 20 - implicitHeight: 20 - radius: 10 - color: fpsSlider.pressed ? Theme.surfaceVariant : Theme.surface - border.color: Theme.accentPrimary - border.width: 2 - } - - } - - } - - // Transition Duration Setting - ColumnLayout { - spacing: 12 - Layout.fillWidth: true - Layout.topMargin: 16 - visible: Settings.settings.useSWWW - - RowLayout { - Layout.fillWidth: true - - Text { - text: "Transition Duration (seconds)" - font.pixelSize: 13 - font.bold: true - color: Theme.textPrimary - } - - Item { - Layout.fillWidth: true - } - - Text { - text: Settings.settings.transitionDuration.toFixed(3) - font.pixelSize: 13 - color: Theme.textPrimary - } - - } - - Slider { - id: durationSlider - - Layout.fillWidth: true - from: 0.25 - to: 10 - stepSize: 0.05 - value: Settings.settings.transitionDuration - snapMode: Slider.SnapAlways - onMoved: { - Settings.settings.transitionDuration = value; - } - - background: Rectangle { - x: durationSlider.leftPadding - y: durationSlider.topPadding + durationSlider.availableHeight / 2 - height / 2 - implicitWidth: 200 - implicitHeight: 4 - width: durationSlider.availableWidth - height: implicitHeight - radius: 2 - color: Theme.surfaceVariant - - Rectangle { - width: durationSlider.visualPosition * parent.width - height: parent.height - color: Theme.accentPrimary - radius: 2 - } - - } - - handle: Rectangle { - x: durationSlider.leftPadding + durationSlider.visualPosition * (durationSlider.availableWidth - width) - y: durationSlider.topPadding + durationSlider.availableHeight / 2 - height / 2 - implicitWidth: 20 - implicitHeight: 20 - radius: 10 - color: durationSlider.pressed ? Theme.surfaceVariant : Theme.surface - border.color: Theme.accentPrimary - border.width: 2 - } - - } - - } - - } - -} diff --git a/Widgets/Sidebar/Panel/QuickAccess.qml b/Widgets/Sidebar/Panel/QuickAccess.qml deleted file mode 100644 index e8ba245..0000000 --- a/Widgets/Sidebar/Panel/QuickAccess.qml +++ /dev/null @@ -1,199 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import QtQuick.Effects -import Quickshell -import Quickshell.Io -import qs.Settings - -Rectangle { - id: quickAccessWidget - width: 440 - height: 80 - color: "transparent" - anchors.horizontalCenterOffset: -2 - - required property bool isRecording - - signal recordingRequested() - signal stopRecordingRequested() - signal recordingStateMismatch(bool actualState) - signal settingsRequested() - signal wallpaperRequested() - - Rectangle { - id: card - anchors.fill: parent - color: Theme.surface - radius: 18 - - RowLayout { - anchors.fill: parent - anchors.margins: 18 - spacing: 12 - - // Settings Button - Rectangle { - id: settingsButton - Layout.fillWidth: true - Layout.preferredHeight: 44 - radius: 12 - color: settingsButtonArea.containsMouse ? Theme.accentPrimary : "transparent" - border.color: Theme.accentPrimary - border.width: 1 - - RowLayout { - anchors.fill: parent - anchors.margins: 12 - spacing: 8 - - Text { - text: "settings" - font.family: settingsButtonArea.containsMouse ? "Material Symbols Rounded" : "Material Symbols Outlined" - font.pixelSize: 16 - color: settingsButtonArea.containsMouse ? Theme.onAccent : Theme.accentPrimary - } - - Text { - text: "Settings" - font.family: Theme.fontFamily - font.pixelSize: 14 - font.bold: true - color: settingsButtonArea.containsMouse ? Theme.onAccent : Theme.textPrimary - Layout.fillWidth: true - } - } - - MouseArea { - id: settingsButtonArea - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - hoverEnabled: true - onClicked: { - settingsRequested() - } - } - } - - // Screen Recorder Button - Rectangle { - id: recorderButton - Layout.fillWidth: true - Layout.preferredHeight: 44 - radius: 12 - color: isRecording ? Theme.accentPrimary : - (recorderButtonArea.containsMouse ? Theme.accentPrimary : "transparent") - border.color: Theme.accentPrimary - border.width: 1 - - RowLayout { - anchors.fill: parent - anchors.margins: 12 - spacing: 8 - - Text { - text: isRecording ? "radio_button_checked" : "radio_button_unchecked" - font.family: (isRecording || recorderButtonArea.containsMouse) ? "Material Symbols Rounded" : "Material Symbols Outlined" - font.pixelSize: 16 - color: isRecording || recorderButtonArea.containsMouse ? Theme.onAccent : Theme.accentPrimary - } - - Text { - text: isRecording ? "End" : "Record" - font.family: Theme.fontFamily - font.pixelSize: 14 - font.bold: true - color: isRecording || recorderButtonArea.containsMouse ? Theme.onAccent : Theme.textPrimary - Layout.fillWidth: true - } - } - - MouseArea { - id: recorderButtonArea - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - hoverEnabled: true - onClicked: { - if (isRecording) { - stopRecordingRequested() - } else { - recordingRequested() - } - } - } - } - - // Wallpaper Button - Rectangle { - id: wallpaperButton - Layout.fillWidth: true - Layout.preferredHeight: 44 - radius: 12 - color: wallpaperButtonArea.containsMouse ? Theme.accentPrimary : "transparent" - border.color: Theme.accentPrimary - border.width: 1 - - RowLayout { - anchors.fill: parent - anchors.margins: 12 - spacing: 8 - - Text { - text: "image" - font.family: "Material Symbols Outlined" - font.pixelSize: 16 - color: wallpaperButtonArea.containsMouse ? Theme.onAccent : Theme.accentPrimary - } - - Text { - text: "Wallpaper" - font.family: Theme.fontFamily - font.pixelSize: 14 - font.bold: true - color: wallpaperButtonArea.containsMouse ? Theme.onAccent : Theme.textPrimary - Layout.fillWidth: true - } - } - - MouseArea { - id: wallpaperButtonArea - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - hoverEnabled: true - onClicked: { - wallpaperRequested() - } - } - } - } - } - - // Properties - property bool panelVisible: false - - // Timer to check if recording is active - Timer { - interval: 2000 - repeat: true - running: panelVisible - onTriggered: checkRecordingStatus() - } - - function checkRecordingStatus() { - if (isRecording) { - checkRecordingProcess.running = true - } - } - - // Process to check if gpu-screen-recorder is running - Process { - id: checkRecordingProcess - command: ["pgrep", "-f", "gpu-screen-recorder.*portal"] - onExited: function(exitCode, exitStatus) { - var isActuallyRecording = exitCode === 0 - if (isRecording && !isActuallyRecording) { - recordingStateMismatch(isActuallyRecording) - } - } - } -} \ No newline at end of file diff --git a/Widgets/Sidebar/Panel/WallpaperPanel.qml b/Widgets/Sidebar/Panel/WallpaperPanel.qml deleted file mode 100644 index 0cf3166..0000000 --- a/Widgets/Sidebar/Panel/WallpaperPanel.qml +++ /dev/null @@ -1,170 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import Quickshell -import Quickshell.Io -import Quickshell.Widgets -import Quickshell.Wayland -import qs.Settings -import qs.Services - -PanelWindow { - id: wallpaperPanelModal - implicitWidth: 480 - implicitHeight: 780 - visible: false - color: "transparent" - anchors.top: true - anchors.right: true - margins.right: 0 - margins.top: 0 - WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand - - property var wallpapers: [] - - Connections { - target: WallpaperManager - function onWallpaperListChanged() { - wallpapers = WallpaperManager.wallpaperList - } - } - - onVisibleChanged: { - if (wallpaperPanel.visible) { - wallpapers = WallpaperManager.wallpaperList - } else { - wallpapers = [] - } - } - - Rectangle { - anchors.fill: parent - color: Theme.backgroundPrimary - radius: 20 - ColumnLayout { - anchors.fill: parent - anchors.margins: 32 - spacing: 0 - RowLayout { - Layout.fillWidth: true - spacing: 20 - Layout.preferredHeight: 48 - Text { - text: "image" - font.family: "Material Symbols Outlined" - font.pixelSize: Theme.fontSizeHeader - color: Theme.accentPrimary - } - Text { - text: "Wallpapers" - font.family: Theme.fontFamily - font.pixelSize: Theme.fontSizeHeader - font.bold: true - color: Theme.textPrimary - Layout.fillWidth: true - } - Rectangle { - width: 36 - height: 36 - radius: 18 - color: closeButtonArea.containsMouse ? Theme.accentPrimary : "transparent" - border.color: Theme.accentPrimary - border.width: 1 - Text { - anchors.centerIn: parent - text: "close" - font.family: closeButtonArea.containsMouse ? "Material Symbols Rounded" : "Material Symbols Outlined" - font.pixelSize: Theme.fontSizeBody - color: closeButtonArea.containsMouse ? Theme.onAccent : Theme.accentPrimary - } - MouseArea { - id: closeButtonArea - anchors.fill: parent - hoverEnabled: true - onClicked: { - wallpaperPanel.visible = false; - } - cursorShape: Qt.PointingHandCursor - } - } - } - Rectangle { - Layout.fillWidth: true - height: 1 - color: Theme.outline - opacity: 0.12 - } - // Wallpaper grid area - Item { - Layout.fillWidth: true - Layout.fillHeight: true - anchors.topMargin: 16 - anchors.bottomMargin: 16 - anchors.leftMargin: 0 - anchors.rightMargin: 0 - anchors.margins: 0 - clip: true - ScrollView { - id: scrollView - anchors.fill: parent - clip: true - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - ScrollBar.vertical.policy: ScrollBar.AsNeeded - GridView { - id: wallpaperGrid - anchors.fill: parent - cellWidth: Math.max(120, (scrollView.width / 3) - 12) - cellHeight: cellWidth * 0.6 - model: wallpapers - cacheBuffer: 64 - leftMargin: 8 - rightMargin: 8 - topMargin: 8 - bottomMargin: 8 - delegate: Item { - width: wallpaperGrid.cellWidth - 8 - height: wallpaperGrid.cellHeight - 8 - ClippingRectangle { - id: wallpaperItem - anchors.fill: parent - anchors.margins: 4 - color: Qt.darker(Theme.backgroundPrimary, 1.1) - radius: 12 - border.color: Settings.settings.currentWallpaper === modelData ? Theme.accentPrimary : Theme.outline - border.width: 2 - Image { - id: wallpaperImage - anchors.fill: parent - source: modelData - fillMode: Image.PreserveAspectCrop - asynchronous: true - cache: true - smooth: true - mipmap: true - // Limit memory usage - FullHD/4 on width and height - sourceSize.width: Math.min(width, 480) - sourceSize.height: Math.min(height, 270) - // Opacity animation once image is ready - opacity: (wallpaperImage.status == Image.Ready) ? 1.0 : 0.0 - Behavior on opacity { - NumberAnimation { - duration: 300 - easing.type: Easing.OutCubic - } - } - } - MouseArea { - anchors.fill: parent - hoverEnabled: true - onClicked: { - WallpaperManager.changeWallpaper(modelData); - } - } - } - } - } - } - } - } - } -}