forked from Shinonome/dots-hyprland
automatic transparency
This commit is contained in:
@@ -15,9 +15,26 @@ Singleton {
|
|||||||
property QtObject sizes
|
property QtObject sizes
|
||||||
property string syntaxHighlightingTheme
|
property string syntaxHighlightingTheme
|
||||||
|
|
||||||
// Extremely conservative transparency values for consistency and readability
|
// Transparency. The quadratic functions were derived from analysis of hand-picked transparency values.
|
||||||
property real transparency: Config.options?.appearance.transparency ? (m3colors.darkmode ? 0.1 : 0.07) : 0
|
ColorQuantizer {
|
||||||
property real contentTransparency: Config.options?.appearance.transparency ? (m3colors.darkmode ? 0.55 : 0.55) : 0
|
id: wallColorQuant
|
||||||
|
source: Qt.resolvedUrl(Config.options.background.wallpaperPath)
|
||||||
|
depth: 0 // 2^0 = 1 color
|
||||||
|
rescaleSize: 10
|
||||||
|
}
|
||||||
|
property real wallpaperVibrancy: (wallColorQuant.colors[0]?.hslSaturation + wallColorQuant.colors[0]?.hslLightness) / 2
|
||||||
|
property real autoBackgroundTransparency: { // y = 0.5768x^2 - 0.759x + 0.2896
|
||||||
|
let x = wallpaperVibrancy
|
||||||
|
let y = 0.5768 * (x * x) - 0.759 * (x) + 0.2896
|
||||||
|
return Math.max(0, Math.min(0.22, y))
|
||||||
|
}
|
||||||
|
property real autoContentTransparency: { // y = -10.1734x^2 + 3.4457x + 0.1872
|
||||||
|
let x = autoBackgroundTransparency
|
||||||
|
let y = -10.1734 * (x * x) + 3.4457 * (x) + 0.1872
|
||||||
|
return Math.max(0, Math.min(0.6, y))
|
||||||
|
}
|
||||||
|
property real backgroundTransparency: Config?.options.appearance.transparency.enable ? Config?.options.appearance.transparency.automatic ? autoBackgroundTransparency : Config?.options.appearance.transparency.backgroundTransparency : 0
|
||||||
|
property real contentTransparency: Config?.options.appearance.transparency.enable ? Config?.options.appearance.transparency.automatic ? autoContentTransparency : Config?.options.appearance.transparency.contentTransparency : 0
|
||||||
|
|
||||||
m3colors: QtObject {
|
m3colors: QtObject {
|
||||||
property bool darkmode: false
|
property bool darkmode: false
|
||||||
@@ -100,26 +117,30 @@ Singleton {
|
|||||||
|
|
||||||
colors: QtObject {
|
colors: QtObject {
|
||||||
property color colSubtext: m3colors.m3outline
|
property color colSubtext: m3colors.m3outline
|
||||||
property color colLayer0: ColorUtils.mix(ColorUtils.transparentize(m3colors.m3background, root.transparency), m3colors.m3primary, Config.options.appearance.extraBackgroundTint ? 0.99 : 1)
|
property color colLayer0: ColorUtils.mix(ColorUtils.transparentize(m3colors.m3background, root.backgroundTransparency), m3colors.m3primary, Config.options.appearance.extraBackgroundTint ? 0.99 : 1)
|
||||||
property color colOnLayer0: m3colors.m3onBackground
|
property color colOnLayer0: m3colors.m3onBackground
|
||||||
property color colLayer0Hover: ColorUtils.transparentize(ColorUtils.mix(colLayer0, colOnLayer0, 0.9, root.contentTransparency))
|
property color colLayer0Hover: ColorUtils.transparentize(ColorUtils.mix(colLayer0, colOnLayer0, 0.9, root.contentTransparency))
|
||||||
property color colLayer0Active: ColorUtils.transparentize(ColorUtils.mix(colLayer0, colOnLayer0, 0.8, root.contentTransparency))
|
property color colLayer0Active: ColorUtils.transparentize(ColorUtils.mix(colLayer0, colOnLayer0, 0.8, root.contentTransparency))
|
||||||
property color colLayer0Border: ColorUtils.mix(root.m3colors.m3outlineVariant, colLayer0, 0.4)
|
property color colLayer0Border: ColorUtils.mix(root.m3colors.m3outlineVariant, colLayer0, 0.4)
|
||||||
property color colLayer1: ColorUtils.transparentize(ColorUtils.mix(m3colors.m3surfaceContainerLow, m3colors.m3background, 0.8), root.contentTransparency);
|
property color colLayer1: ColorUtils.transparentize(m3colors.m3surfaceContainerLow, root.contentTransparency);
|
||||||
property color colOnLayer1: m3colors.m3onSurfaceVariant;
|
property color colOnLayer1: m3colors.m3onSurfaceVariant;
|
||||||
property color colOnLayer1Inactive: ColorUtils.mix(colOnLayer1, colLayer1, 0.45);
|
property color colOnLayer1Inactive: ColorUtils.mix(colOnLayer1, colLayer1, 0.45);
|
||||||
property color colLayer2: ColorUtils.transparentize(ColorUtils.mix(m3colors.m3surfaceContainer, m3colors.m3surfaceContainerHigh, 0.1), root.contentTransparency)
|
property color colLayer2: ColorUtils.transparentize(m3colors.m3surfaceContainer, root.contentTransparency)
|
||||||
property color colOnLayer2: m3colors.m3onSurface;
|
property color colOnLayer2: m3colors.m3onSurface;
|
||||||
property color colOnLayer2Disabled: ColorUtils.mix(colOnLayer2, m3colors.m3background, 0.4);
|
property color colOnLayer2Disabled: ColorUtils.mix(colOnLayer2, m3colors.m3background, 0.4);
|
||||||
property color colLayer3: ColorUtils.transparentize(ColorUtils.mix(m3colors.m3surfaceContainerHigh, m3colors.m3onSurface, 0.96), root.contentTransparency)
|
|
||||||
property color colOnLayer3: m3colors.m3onSurface;
|
|
||||||
property color colLayer1Hover: ColorUtils.transparentize(ColorUtils.mix(colLayer1, colOnLayer1, 0.92), root.contentTransparency)
|
property color colLayer1Hover: ColorUtils.transparentize(ColorUtils.mix(colLayer1, colOnLayer1, 0.92), root.contentTransparency)
|
||||||
property color colLayer1Active: ColorUtils.transparentize(ColorUtils.mix(colLayer1, colOnLayer1, 0.85), root.contentTransparency);
|
property color colLayer1Active: ColorUtils.transparentize(ColorUtils.mix(colLayer1, colOnLayer1, 0.85), root.contentTransparency);
|
||||||
property color colLayer2Hover: ColorUtils.transparentize(ColorUtils.mix(colLayer2, colOnLayer2, 0.90), root.contentTransparency)
|
property color colLayer2Hover: ColorUtils.transparentize(ColorUtils.mix(colLayer2, colOnLayer2, 0.90), root.contentTransparency)
|
||||||
property color colLayer2Active: ColorUtils.transparentize(ColorUtils.mix(colLayer2, colOnLayer2, 0.80), root.contentTransparency);
|
property color colLayer2Active: ColorUtils.transparentize(ColorUtils.mix(colLayer2, colOnLayer2, 0.80), root.contentTransparency);
|
||||||
property color colLayer2Disabled: ColorUtils.transparentize(ColorUtils.mix(colLayer2, m3colors.m3background, 0.8), root.contentTransparency);
|
property color colLayer2Disabled: ColorUtils.transparentize(ColorUtils.mix(colLayer2, m3colors.m3background, 0.8), root.contentTransparency);
|
||||||
|
property color colLayer3: ColorUtils.transparentize(m3colors.m3surfaceContainerHigh, root.contentTransparency)
|
||||||
|
property color colOnLayer3: m3colors.m3onSurface;
|
||||||
property color colLayer3Hover: ColorUtils.transparentize(ColorUtils.mix(colLayer3, colOnLayer3, 0.90), root.contentTransparency)
|
property color colLayer3Hover: ColorUtils.transparentize(ColorUtils.mix(colLayer3, colOnLayer3, 0.90), root.contentTransparency)
|
||||||
property color colLayer3Active: ColorUtils.transparentize(ColorUtils.mix(colLayer3, colOnLayer3, 0.80), root.contentTransparency);
|
property color colLayer3Active: ColorUtils.transparentize(ColorUtils.mix(colLayer3, colOnLayer3, 0.80), root.contentTransparency);
|
||||||
|
property color colLayer4: ColorUtils.transparentize(m3colors.m3surfaceContainerHighest, root.contentTransparency)
|
||||||
|
property color colOnLayer4: m3colors.m3onSurface;
|
||||||
|
property color colLayer4Hover: ColorUtils.transparentize(ColorUtils.mix(colLayer4, colOnLayer4, 0.90), root.contentTransparency)
|
||||||
|
property color colLayer4Active: ColorUtils.transparentize(ColorUtils.mix(colLayer4, colOnLayer4, 0.80), root.contentTransparency);
|
||||||
property color colPrimary: m3colors.m3primary
|
property color colPrimary: m3colors.m3primary
|
||||||
property color colOnPrimary: m3colors.m3onPrimary
|
property color colOnPrimary: m3colors.m3onPrimary
|
||||||
property color colPrimaryHover: ColorUtils.mix(colors.colPrimary, colLayer1Hover, 0.87)
|
property color colPrimaryHover: ColorUtils.mix(colors.colPrimary, colLayer1Hover, 0.87)
|
||||||
|
|||||||
@@ -81,7 +81,12 @@ Singleton {
|
|||||||
property JsonObject appearance: JsonObject {
|
property JsonObject appearance: JsonObject {
|
||||||
property bool extraBackgroundTint: true
|
property bool extraBackgroundTint: true
|
||||||
property int fakeScreenRounding: 2 // 0: None | 1: Always | 2: When not fullscreen
|
property int fakeScreenRounding: 2 // 0: None | 1: Always | 2: When not fullscreen
|
||||||
property bool transparency: false
|
property JsonObject transparency: JsonObject {
|
||||||
|
property bool enable: true
|
||||||
|
property bool automatic: true
|
||||||
|
property real backgroundTransparency: 0.11
|
||||||
|
property real contentTransparency: 0.57
|
||||||
|
}
|
||||||
property JsonObject wallpaperTheming: JsonObject {
|
property JsonObject wallpaperTheming: JsonObject {
|
||||||
property bool enableAppsAndShell: true
|
property bool enableAppsAndShell: true
|
||||||
property bool enableQtApps: true
|
property bool enableQtApps: true
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ RippleButton {
|
|||||||
leftPadding: 15
|
leftPadding: 15
|
||||||
rightPadding: 15
|
rightPadding: 15
|
||||||
buttonRadius: Appearance.rounding.small
|
buttonRadius: Appearance.rounding.small
|
||||||
colBackground: (urgency == NotificationUrgency.Critical) ? Appearance.colors.colSecondaryContainer : Appearance.colors.colSurfaceContainerHighest
|
colBackground: (urgency == NotificationUrgency.Critical) ? Appearance.colors.colSecondaryContainer : Appearance.colors.colLayer4
|
||||||
colBackgroundHover: (urgency == NotificationUrgency.Critical) ? Appearance.colors.colSecondaryContainerHover : Appearance.colors.colSurfaceContainerHighestHover
|
colBackgroundHover: (urgency == NotificationUrgency.Critical) ? Appearance.colors.colSecondaryContainerHover : Appearance.colors.colLayer4Hover
|
||||||
colRipple: (urgency == NotificationUrgency.Critical) ? Appearance.colors.colSecondaryContainerActive : Appearance.colors.colSurfaceContainerHighestActive
|
colRipple: (urgency == NotificationUrgency.Critical) ? Appearance.colors.colSecondaryContainerActive : Appearance.colors.colLayer4Active
|
||||||
|
|
||||||
contentItem: StyledText {
|
contentItem: StyledText {
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Rectangle { // App icon
|
|||||||
property real scale: 1
|
property real scale: 1
|
||||||
property real size: 38 * scale
|
property real size: 38 * scale
|
||||||
property real materialIconScale: 0.57
|
property real materialIconScale: 0.57
|
||||||
property real appIconScale: 0.7
|
property real appIconScale: 0.8
|
||||||
property real smallAppIconScale: 0.49
|
property real smallAppIconScale: 0.49
|
||||||
property real materialIconSize: size * materialIconScale
|
property real materialIconSize: size * materialIconScale
|
||||||
property real appIconSize: size * appIconScale
|
property real appIconSize: size * appIconScale
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ Item { // Notification group area
|
|||||||
id: background
|
id: background
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
width: parent.width
|
width: parent.width
|
||||||
color: Appearance.colors.colSurfaceContainer
|
color: Appearance.colors.colLayer2
|
||||||
radius: Appearance.rounding.normal
|
radius: Appearance.rounding.normal
|
||||||
anchors.leftMargin: root.xOffset
|
anchors.leftMargin: root.xOffset
|
||||||
|
|
||||||
|
|||||||
@@ -140,8 +140,8 @@ Item { // Notification item area
|
|||||||
color: (expanded && !onlyNotification) ?
|
color: (expanded && !onlyNotification) ?
|
||||||
(notificationObject.urgency == NotificationUrgency.Critical) ?
|
(notificationObject.urgency == NotificationUrgency.Critical) ?
|
||||||
ColorUtils.mix(Appearance.colors.colSecondaryContainer, Appearance.colors.colLayer2, 0.35) :
|
ColorUtils.mix(Appearance.colors.colSecondaryContainer, Appearance.colors.colLayer2, 0.35) :
|
||||||
(Appearance.colors.colSurfaceContainerHigh) :
|
(Appearance.colors.colLayer3) :
|
||||||
ColorUtils.transparentize(Appearance.colors.colSurfaceContainerHighest)
|
ColorUtils.transparentize(Appearance.colors.colLayer3)
|
||||||
|
|
||||||
implicitHeight: expanded ? (contentColumn.implicitHeight + padding * 2) : summaryRow.implicitHeight
|
implicitHeight: expanded ? (contentColumn.implicitHeight + padding * 2) : summaryRow.implicitHeight
|
||||||
Behavior on implicitHeight {
|
Behavior on implicitHeight {
|
||||||
@@ -168,7 +168,7 @@ Item { // Notification item area
|
|||||||
id: summaryText
|
id: summaryText
|
||||||
visible: !root.onlyNotification
|
visible: !root.onlyNotification
|
||||||
font.pixelSize: root.fontSize
|
font.pixelSize: root.fontSize
|
||||||
color: Appearance.colors.colOnLayer2
|
color: Appearance.colors.colOnLayer3
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
text: root.notificationObject.summary || ""
|
text: root.notificationObject.summary || ""
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,9 +140,9 @@ ContentPage {
|
|||||||
ConfigRow {
|
ConfigRow {
|
||||||
ConfigSwitch {
|
ConfigSwitch {
|
||||||
text: Translation.tr("Enable")
|
text: Translation.tr("Enable")
|
||||||
checked: Config.options.appearance.transparency
|
checked: Config.options.appearance.transparency.enable
|
||||||
onCheckedChanged: {
|
onCheckedChanged: {
|
||||||
Config.options.appearance.transparency = checked;
|
Config.options.appearance.transparency.enable = checked;
|
||||||
}
|
}
|
||||||
StyledToolTip {
|
StyledToolTip {
|
||||||
content: Translation.tr("Might look ass. Unsupported.")
|
content: Translation.tr("Might look ass. Unsupported.")
|
||||||
|
|||||||
Reference in New Issue
Block a user