Compare commits

...

2 commits

Author SHA1 Message Date
Damocles
4a5b629b8d screen corner radius back to 15 2026-04-12 20:26:49 +02:00
Damocles
971e44aaf1 bar: offset content below gradient, fade gradient to bar bottom 2026-04-12 20:26:25 +02:00
2 changed files with 25 additions and 8 deletions

View file

@ -31,7 +31,7 @@ PanelWindow {
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: Math.max(M.Theme.screenRadius + 2, 4)
height: parent.height
onPaint: {
const ctx = getContext("2d");
@ -42,21 +42,37 @@ PanelWindow {
ctx.clearRect(0, 0, w, height);
// Opaque backing behind the stroke so it's not transparent
ctx.fillStyle = M.Theme.base00.toString();
// Vertical fade from stroke color into bar background
const h = height;
const vGrad = ctx.createLinearGradient(0, 0, 0, h);
const hGrad = ctx.createLinearGradient(0, 0, w, 0);
hGrad.addColorStop(0, M.Theme.base0C.toString());
hGrad.addColorStop(1, M.Theme.base09.toString());
// Draw the fade: full opacity at top, transparent at bottom
ctx.globalAlpha = 0.15;
ctx.fillStyle = hGrad;
ctx.beginPath();
if (r > lw) {
if (r > 0) {
ctx.moveTo(0, r);
ctx.arc(r, r, r, Math.PI, -Math.PI / 2);
ctx.lineTo(w - r, 0);
ctx.arc(w - r, r, r, -Math.PI / 2, 0);
ctx.lineTo(w, lw);
ctx.lineTo(0, lw);
ctx.lineTo(w, h);
ctx.lineTo(0, h);
} else {
ctx.rect(0, 0, w, lw);
ctx.rect(0, 0, w, h);
}
ctx.fill();
// Fade out towards bottom
ctx.globalAlpha = 1;
const fadeGrad = ctx.createLinearGradient(0, lw, 0, h);
fadeGrad.addColorStop(0, "transparent");
fadeGrad.addColorStop(1, M.Theme.base00.toString());
ctx.fillStyle = fadeGrad;
ctx.fillRect(0, lw, w, h - lw);
// Gradient stroke
const grad = ctx.createLinearGradient(0, 0, w, 0);
grad.addColorStop(0, M.Theme.base0C.toString());
@ -80,6 +96,7 @@ PanelWindow {
Item {
anchors.fill: parent
anchors.topMargin: 3
anchors.leftMargin: Math.max(M.Theme.barPadding, M.Theme.screenRadius)
anchors.rightMargin: Math.max(M.Theme.barPadding, M.Theme.screenRadius)

View file

@ -34,7 +34,7 @@ QtObject {
property int barSpacing: 12
property int moduleSpacing: 4
property int radius: 4
property int screenRadius: 20
property int screenRadius: 15
property FileView _themeFile: FileView {
path: (Quickshell.env("XDG_CONFIG_HOME") || (Quickshell.env("HOME") + "/.config")) + "/nova-shell/theme.json"