Compare commits
2 commits
51ef4c9fb3
...
c0b3cd9b6f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c0b3cd9b6f | ||
|
|
e5861aa18f |
5 changed files with 27 additions and 18 deletions
|
|
@ -79,6 +79,12 @@ QtObject {
|
|||
property var power: ({
|
||||
enable: true
|
||||
})
|
||||
property var backgroundOverlay: ({
|
||||
enable: true
|
||||
})
|
||||
property var overviewBackdrop: ({
|
||||
enable: true
|
||||
})
|
||||
|
||||
property FileView _file: FileView {
|
||||
path: (Quickshell.env("XDG_CONFIG_HOME") || (Quickshell.env("HOME") + "/.config")) + "/nova-shell/modules.json"
|
||||
|
|
|
|||
|
|
@ -31,10 +31,11 @@ PanelWindow {
|
|||
anchors.fill: parent
|
||||
fragmentShader: Qt.resolvedUrl("hex_wave.frag.qsb")
|
||||
|
||||
// Uniforms
|
||||
property size uResolution: Qt.size(width, height)
|
||||
// Uniforms — order must match shader std140 layout
|
||||
property real uSize: 50.0
|
||||
property real uWavePhase: -200
|
||||
property real _pad0: 0
|
||||
property vector4d uResolution: Qt.vector4d(width, height, 0, 0)
|
||||
property color uC0: M.Theme.base0C
|
||||
property color uC1: M.Theme.base0E
|
||||
property color uC2: M.Theme.base09
|
||||
|
|
|
|||
|
|
@ -6,14 +6,13 @@ layout(location = 0) out vec4 fragColor;
|
|||
layout(std140, binding = 0) uniform buf {
|
||||
mat4 qt_Matrix;
|
||||
float qt_Opacity;
|
||||
|
||||
vec2 uResolution;
|
||||
float uSize;
|
||||
float uWavePhase;
|
||||
float _pad0;
|
||||
vec4 uResolution; // xy = resolution, zw unused
|
||||
vec4 uC0;
|
||||
vec4 uC1;
|
||||
vec4 uC2;
|
||||
|
||||
vec4 uSpinners0;
|
||||
vec4 uSpinners1;
|
||||
vec4 uSpinners2;
|
||||
|
|
@ -37,7 +36,8 @@ float sdHexFlat(vec2 p, float r) {
|
|||
}
|
||||
|
||||
void main() {
|
||||
vec2 frag = qt_TexCoord0 * uResolution;
|
||||
vec2 res = uResolution.xy;
|
||||
vec2 frag = qt_TexCoord0 * res;
|
||||
|
||||
float dx = uSize * 1.5;
|
||||
float dy = uSize * 1.7320508;
|
||||
|
|
@ -47,14 +47,12 @@ void main() {
|
|||
float row = round((frag.y - yoff) / dy);
|
||||
vec2 center = vec2(col * dx, row * dy + yoff);
|
||||
|
||||
// Wave factor
|
||||
float dist = center.x - uWavePhase;
|
||||
float wf = exp(-dist * dist / 9000.0);
|
||||
|
||||
float baseR = uSize * 0.48;
|
||||
float inradius = baseR * (1.0 + 0.35 * wf);
|
||||
|
||||
// Check spinners
|
||||
float spinAngle = 0.0;
|
||||
vec4 spinners[12] = vec4[12](
|
||||
uSpinners0, uSpinners1, uSpinners2, uSpinners3,
|
||||
|
|
@ -81,22 +79,18 @@ void main() {
|
|||
return;
|
||||
}
|
||||
|
||||
// Gradient color
|
||||
float fx = clamp(center.x / uResolution.x, 0.0, 1.0);
|
||||
float fx = clamp(center.x / res.x, 0.0, 1.0);
|
||||
vec3 rgb = fx < 0.5
|
||||
? mix(uC0.rgb, uC1.rgb, fx * 2.0)
|
||||
: mix(uC1.rgb, uC2.rgb, (fx - 0.5) * 2.0);
|
||||
|
||||
// Alpha from distance to center
|
||||
float fy = clamp(center.y / uResolution.y, 0.0, 1.0);
|
||||
float fy = clamp(center.y / res.y, 0.0, 1.0);
|
||||
float dc = length(vec2(fx - 0.5, fy - 0.5));
|
||||
float a = 0.03 + dc * 0.06;
|
||||
|
||||
// Wave brighten
|
||||
rgb = min(rgb + vec3(0.3 * wf), vec3(1.0));
|
||||
a += 0.12 * wf;
|
||||
|
||||
// Anti-alias
|
||||
float aa = 1.0 - smoothstep(-1.0, 0.0, d);
|
||||
a *= aa;
|
||||
|
||||
|
|
|
|||
|
|
@ -86,6 +86,8 @@ in
|
|||
"volume"
|
||||
"idleInhibitor"
|
||||
"power"
|
||||
"backgroundOverlay"
|
||||
"overviewBackdrop"
|
||||
] (name: moduleOpt name { });
|
||||
in
|
||||
simpleModules
|
||||
|
|
|
|||
10
shell.qml
10
shell.qml
|
|
@ -23,13 +23,19 @@ ShellRoot {
|
|||
screen: scope.modelData
|
||||
}
|
||||
|
||||
BackgroundOverlay {
|
||||
Loader {
|
||||
active: Modules.backgroundOverlay.enable
|
||||
sourceComponent: BackgroundOverlay {
|
||||
screen: scope.modelData
|
||||
}
|
||||
}
|
||||
|
||||
OverviewBackdrop {
|
||||
Loader {
|
||||
active: Modules.overviewBackdrop.enable
|
||||
sourceComponent: OverviewBackdrop {
|
||||
screen: scope.modelData
|
||||
}
|
||||
}
|
||||
|
||||
ScreenCorners {
|
||||
screen: scope.modelData
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue