mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
quickshell and hyprland additions
This commit is contained in:
169
.config/quickshell/caelestia/modules/background/DesktopClock.qml
Normal file
169
.config/quickshell/caelestia/modules/background/DesktopClock.qml
Normal file
@@ -0,0 +1,169 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import qs.components
|
||||
import qs.services
|
||||
import qs.config
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Effects
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
required property Item wallpaper
|
||||
required property real absX
|
||||
required property real absY
|
||||
|
||||
property real scale: Config.background.desktopClock.scale
|
||||
readonly property bool bgEnabled: Config.background.desktopClock.background.enabled
|
||||
readonly property bool blurEnabled: bgEnabled && Config.background.desktopClock.background.blur && !GameMode.enabled
|
||||
readonly property bool invertColors: Config.background.desktopClock.invertColors
|
||||
readonly property bool useLightSet: Colours.light ? !invertColors : invertColors
|
||||
readonly property color safePrimary: useLightSet ? Colours.palette.m3primaryContainer : Colours.palette.m3primary
|
||||
readonly property color safeSecondary: useLightSet ? Colours.palette.m3secondaryContainer : Colours.palette.m3secondary
|
||||
readonly property color safeTertiary: useLightSet ? Colours.palette.m3tertiaryContainer : Colours.palette.m3tertiary
|
||||
|
||||
implicitWidth: layout.implicitWidth + (Appearance.padding.large * 4 * root.scale)
|
||||
implicitHeight: layout.implicitHeight + (Appearance.padding.large * 2 * root.scale)
|
||||
|
||||
Item {
|
||||
id: clockContainer
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
layer.enabled: Config.background.desktopClock.shadow.enabled
|
||||
layer.effect: MultiEffect {
|
||||
shadowEnabled: true
|
||||
shadowColor: Colours.palette.m3shadow
|
||||
shadowOpacity: Config.background.desktopClock.shadow.opacity
|
||||
shadowBlur: Config.background.desktopClock.shadow.blur
|
||||
}
|
||||
|
||||
Loader {
|
||||
anchors.fill: parent
|
||||
active: root.blurEnabled
|
||||
|
||||
sourceComponent: MultiEffect {
|
||||
source: ShaderEffectSource {
|
||||
sourceItem: root.wallpaper
|
||||
sourceRect: Qt.rect(root.absX, root.absY, root.width, root.height)
|
||||
}
|
||||
maskSource: backgroundPlate
|
||||
maskEnabled: true
|
||||
blurEnabled: true
|
||||
blur: 1
|
||||
blurMax: 64
|
||||
autoPaddingEnabled: false
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
id: backgroundPlate
|
||||
|
||||
visible: root.bgEnabled
|
||||
anchors.fill: parent
|
||||
radius: Appearance.rounding.large * root.scale
|
||||
opacity: Config.background.desktopClock.background.opacity
|
||||
color: Colours.palette.m3surface
|
||||
|
||||
layer.enabled: root.blurEnabled
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: layout
|
||||
|
||||
anchors.centerIn: parent
|
||||
spacing: Appearance.spacing.larger * root.scale
|
||||
|
||||
RowLayout {
|
||||
spacing: Appearance.spacing.small
|
||||
|
||||
StyledText {
|
||||
text: Time.hourStr
|
||||
font.pointSize: Appearance.font.size.extraLarge * 3 * root.scale
|
||||
font.weight: Font.Bold
|
||||
color: root.safePrimary
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: ":"
|
||||
font.pointSize: Appearance.font.size.extraLarge * 3 * root.scale
|
||||
color: root.safeTertiary
|
||||
opacity: 0.8
|
||||
Layout.topMargin: -Appearance.padding.large * 1.5 * root.scale
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: Time.minuteStr
|
||||
font.pointSize: Appearance.font.size.extraLarge * 3 * root.scale
|
||||
font.weight: Font.Bold
|
||||
color: root.safeSecondary
|
||||
}
|
||||
|
||||
Loader {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Layout.topMargin: Appearance.padding.large * 1.4 * root.scale
|
||||
|
||||
active: Config.services.useTwelveHourClock
|
||||
visible: active
|
||||
|
||||
sourceComponent: StyledText {
|
||||
text: Time.amPmStr
|
||||
font.pointSize: Appearance.font.size.large * root.scale
|
||||
color: root.safeSecondary
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StyledRect {
|
||||
Layout.fillHeight: true
|
||||
Layout.preferredWidth: 4 * root.scale
|
||||
Layout.topMargin: Appearance.spacing.larger * root.scale
|
||||
Layout.bottomMargin: Appearance.spacing.larger * root.scale
|
||||
radius: Appearance.rounding.full
|
||||
color: root.safePrimary
|
||||
opacity: 0.8
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
spacing: 0
|
||||
|
||||
StyledText {
|
||||
text: Time.format("MMMM").toUpperCase()
|
||||
font.pointSize: Appearance.font.size.large * root.scale
|
||||
font.letterSpacing: 4
|
||||
font.weight: Font.Bold
|
||||
color: root.safeSecondary
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: Time.format("dd")
|
||||
font.pointSize: Appearance.font.size.extraLarge * root.scale
|
||||
font.letterSpacing: 2
|
||||
font.weight: Font.Medium
|
||||
color: root.safePrimary
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: Time.format("dddd")
|
||||
font.pointSize: Appearance.font.size.larger * root.scale
|
||||
font.letterSpacing: 2
|
||||
color: root.safeSecondary
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on scale {
|
||||
Anim {
|
||||
duration: Appearance.anim.durations.expressiveDefaultSpatial
|
||||
easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on implicitWidth {
|
||||
Anim {
|
||||
duration: Appearance.anim.durations.small
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user