diff --git a/Components/PathViewMenu.qml b/Components/PathViewMenu.qml index 898dd4b..111b236 100644 --- a/Components/PathViewMenu.qml +++ b/Components/PathViewMenu.qml @@ -29,6 +29,7 @@ Elevation { level: root.expanded ? 2 : 0 radius: itemHeight / 2 visible: implicitHeight > 0 + z: root.expanded ? 100 : 0 Behavior on implicitHeight { Anim { @@ -68,6 +69,7 @@ Elevation { anchors.fill: parent color: DynamicColors.palette.m3surfaceContainer radius: parent.radius + z: root.z // Main visible spinner: normal/outside text color PathView { diff --git a/Config/Config.qml b/Config/Config.qml index b3f2bac..9946f0b 100644 --- a/Config/Config.qml +++ b/Config/Config.qml @@ -177,6 +177,7 @@ Singleton { wallust: general.color.wallust, mode: general.color.mode, smart: general.color.smart, + scheduleDark: general.color.scheduleDark, schemeGeneration: general.color.schemeGeneration, scheduleDarkStart: general.color.scheduleDarkStart, scheduleDarkEnd: general.color.scheduleDarkEnd, diff --git a/Config/General.qml b/Config/General.qml index ce9d5f9..318faec 100644 --- a/Config/General.qml +++ b/Config/General.qml @@ -21,6 +21,7 @@ JsonObject { component Color: JsonObject { property string mode: "dark" property bool neovimColors: false + property bool scheduleDark: false property int scheduleDarkEnd: 0 property int scheduleDarkStart: 0 property bool schemeGeneration: true diff --git a/Greeter/Config/Config.qml b/Greeter/Config/Config.qml index 78eee49..a50b814 100644 --- a/Greeter/Config/Config.qml +++ b/Greeter/Config/Config.qml @@ -357,7 +357,7 @@ Singleton { FileView { id: fileView - path: `${Paths.config}/config.json` + path: "/etc/zshell-greeter/config.json" watchChanges: true onFileChanged: { diff --git a/Greeter/Helpers/WallpaperPath.qml b/Greeter/Helpers/WallpaperPath.qml index 1ccb9f9..955a0ad 100644 --- a/Greeter/Helpers/WallpaperPath.qml +++ b/Greeter/Helpers/WallpaperPath.qml @@ -6,5 +6,5 @@ import Quickshell.Io Singleton { id: root - property string lockscreenBg: `${Quickshell.shellDir}/images/greeter_bg.png` + property string lockscreenBg: "/etc/zshell-greeter/images/greeter_bg.png" } diff --git a/Greeter/UserImage.qml b/Greeter/UserImage.qml index d433e3d..cc3bdfd 100644 --- a/Greeter/UserImage.qml +++ b/Greeter/UserImage.qml @@ -15,7 +15,7 @@ Item { anchors.fill: parent asynchronous: true fillMode: Image.PreserveAspectCrop - source: `${Quickshell.shellDir}/images/.face` + source: "/etc/zshell-greeter/images/face" sourceSize.height: parent.height sourceSize.width: parent.width } diff --git a/Greeter/scripts/greeter-config.toml b/Greeter/scripts/greeter-config.toml new file mode 100644 index 0000000..5fc1c18 --- /dev/null +++ b/Greeter/scripts/greeter-config.toml @@ -0,0 +1,7 @@ +[terminal] +vt = 1 +switch = true + +[default_session] +command = "/usr/bin/start-zshell-greeter" +user = "greeter" diff --git a/Greeter/scripts/start-zshell-greeter b/Greeter/scripts/start-zshell-greeter index a4c125a..8fa9a59 100755 --- a/Greeter/scripts/start-zshell-greeter +++ b/Greeter/scripts/start-zshell-greeter @@ -7,7 +7,7 @@ export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 export EGL_PLATFORM=gbm if command -v start-hyprland >/dev/null 2>&1; then - exec start-hyprland -- -c /etc/xdg/quickshell/zshell-greeter/scripts/zshell-hyprland.conf + exec start-hyprland -- -c /etc/zshell-greeter/zshell-hyprland.conf else - exec Hyprland -c /etc/xdg/quickshell/zshell-greeter/scripts/zshell-hyprland.conf + exec Hyprland -c /etc/zshell-greeter/zshell-hyprland.conf fi diff --git a/Modules/Settings/Categories/General.qml b/Modules/Settings/Categories/General.qml index 0c0bf0b..bf5e962 100644 --- a/Modules/Settings/Categories/General.qml +++ b/Modules/Settings/Categories/General.qml @@ -161,7 +161,7 @@ SettingsPage { SettingSpinner { name: "Schedule dark mode" object: Config.general.color - settings: ["scheduleDarkStart", "scheduleDarkEnd"] + settings: ["scheduleDarkStart", "scheduleDarkEnd", "scheduleDark"] } } diff --git a/Modules/Settings/Controls/SettingSpinner.qml b/Modules/Settings/Controls/SettingSpinner.qml index 2663343..60c5c26 100644 --- a/Modules/Settings/Controls/SettingSpinner.qml +++ b/Modules/Settings/Controls/SettingSpinner.qml @@ -62,25 +62,84 @@ Item { } } - SpinnerButton { - Layout.preferredHeight: Appearance.font.size.large + Appearance.padding.smaller * 2 - Layout.preferredWidth: height * 2 - currentIndex: root.object[root.settings[0]] - text: root.formattedValue(root.settings[0]) + ColumnLayout { + id: optionLayout - menu.onItemSelected: item => { - root.commitChoice(item, root.settings[0]); + Layout.fillHeight: true + Layout.preferredWidth: 100 + + RowLayout { + Layout.preferredWidth: optionLayout.width + + CustomText { + Layout.alignment: Qt.AlignLeft | Qt.AlignHCenter + Layout.fillWidth: true + text: qsTr("Enabled: ") + } + + CustomSwitch { + id: enabledSwitch + + Layout.alignment: Qt.AlignRight | Qt.AlignHCenter + checked: root.object[root.settings[2]] + + onToggled: { + root.object[root.settings[2]] = checked; + Config.save(); + } + } } - } - SpinnerButton { - Layout.preferredHeight: Appearance.font.size.large + Appearance.padding.smaller * 2 - Layout.preferredWidth: height * 2 - currentIndex: root.object[root.settings[1]] - text: root.formattedValue(root.settings[1]) + RowLayout { + Layout.preferredWidth: optionLayout.width + z: setting2.expanded ? -1 : 1 - menu.onItemSelected: item => { - root.commitChoice(item, root.settings[1]); + CustomText { + Layout.alignment: Qt.AlignLeft | Qt.AlignHCenter + Layout.fillWidth: true + text: qsTr("Start: ") + } + + SpinnerButton { + id: setting1 + + Layout.alignment: Qt.AlignRight | Qt.AlignHCenter + Layout.preferredHeight: Appearance.font.size.large + Appearance.padding.smaller * 2 + Layout.preferredWidth: height * 2 + currentIndex: root.object[root.settings[0]] + enabled: enabledSwitch.checked + text: root.formattedValue(root.settings[0]) + + menu.onItemSelected: item => { + root.commitChoice(item, root.settings[0]); + } + } + } + + RowLayout { + Layout.preferredWidth: optionLayout.width + z: setting1.expanded ? -1 : 1 + + CustomText { + Layout.alignment: Qt.AlignLeft | Qt.AlignHCenter + Layout.fillWidth: true + text: qsTr("End: ") + } + + SpinnerButton { + id: setting2 + + Layout.alignment: Qt.AlignRight | Qt.AlignHCenter + Layout.preferredHeight: Appearance.font.size.large + Appearance.padding.smaller * 2 + Layout.preferredWidth: height * 2 + currentIndex: root.object[root.settings[1]] + enabled: enabledSwitch.checked + text: root.formattedValue(root.settings[1]) + + menu.onItemSelected: item => { + root.commitChoice(item, root.settings[1]); + } + } } } } diff --git a/Modules/Settings/Controls/SpinnerButton.qml b/Modules/Settings/Controls/SpinnerButton.qml index 7d5bee2..b31ceb3 100644 --- a/Modules/Settings/Controls/SpinnerButton.qml +++ b/Modules/Settings/Controls/SpinnerButton.qml @@ -8,19 +8,21 @@ CustomRect { id: root property alias currentIndex: menu.currentIndex + property bool enabled property alias expanded: menu.expanded property alias label: label property alias menu: menu property alias text: label.text - color: DynamicColors.palette.m3primary + color: enabled ? DynamicColors.palette.m3primary : DynamicColors.layer(DynamicColors.palette.m3surfaceContainerHigh, 2) radius: Appearance.rounding.full + z: expanded ? 100 : 0 CustomText { id: label anchors.centerIn: parent - color: DynamicColors.palette.m3onPrimary + color: root.enabled ? DynamicColors.palette.m3onPrimary : DynamicColors.layer(DynamicColors.palette.m3onSurface, 2) font.pointSize: Appearance.font.size.large } @@ -28,6 +30,8 @@ CustomRect { function onClicked(): void { SettingsDropdowns.toggle(menu, root); } + + visible: root.enabled } PathViewMenu { diff --git a/Modules/TrayItem.qml b/Modules/TrayItem.qml index 50fbf62..263c8d9 100644 --- a/Modules/TrayItem.qml +++ b/Modules/TrayItem.qml @@ -43,7 +43,7 @@ Item { anchors.centerIn: parent color: DynamicColors.palette.m3onSurface implicitSize: 22 - layer.enabled: DynamicColors.light + layer.enabled: Config.general.color.smart || Config.general.color.scheduleDark source: root.item.icon } } diff --git a/scripts/install-bin.sh b/scripts/install-bin.sh index 75bb95a..801fbce 100755 --- a/scripts/install-bin.sh +++ b/scripts/install-bin.sh @@ -1,16 +1,18 @@ #!/usr/bin/env bash -SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" -SCRIPT="./zshell.sh" - -prepare_binary() { - sed -ir "s|QML_ROOT=.*|QML_ROOT=${SCRIPT_DIR}/..|" "$SCRIPT" -} +BINARY="../Greeter/scripts/start-zshell-greeter" +CONFIG="../Greeter/scripts/zshell-hyprland.conf" +GREETD_CONFIG="../Greeter/scripts/greeter-config.toml" +WALLPAPER="$HOME/.local/state/zshell/lockscreen_bg.png" +FACE="$HOME/.face" main() { - prepare_binary - - sudo cp "$SCRIPT" /usr/bin/zshell + sudo mkdir -p "/etc/zshell-greeter/images" + sudo cp "$BINARY" "/usr/bin" + sudo cp "$CONFIG" "/etc/zshell-greeter" + sudo cp "$WALLPAPER" "/etc/zshell-greeter/images/greeter_bg.png" + sudo cp "$FACE" "/etc/zshell-greeter/images/face" + sudo cp "$GREETD_CONFIG" "/etc/greetd/config.toml" } main "$@"