mirror of
https://git.pumpin.online/funkpower/menologion.git
synced 2026-10-23 03:07:12 +00:00
Nobody installs a desktop widget they have not seen. Three shots go in the README -- the Nativity Fast, where the week runs through three fasting levels; ROCOR on 7 January, where the corner reads 25 December and makes the old-calendar point in one glance; and Great Week, which uses nearly every level there is. shot.qml renders the real widget on a plain backdrop at a fixed position on the overlay layer, so a screen grab of that rectangle is the widget and never whatever was behind it. Typikon gains a forDate property, which is what lets a screenshot show Great Week in September, and is worth having anyway for looking ahead. The header note now always carries the church date instead of repeating the season the line below it already gives.
64 lines
2.0 KiB
QML
64 lines
2.0 KiB
QML
//@ pragma UseQApplication
|
|
|
|
// A harness for taking the README screenshots: the real widget, on a plain
|
|
// backdrop, at a known position. Not part of the shell -- run it with
|
|
//
|
|
// SHOT_JURISDICTION=rocor SHOT_DATE=2027-01-07 quickshell -p quickshell/shot.qml
|
|
//
|
|
// It sits on the overlay layer at a fixed offset so a screen grab of that
|
|
// rectangle is always the widget and never whatever was behind it.
|
|
|
|
import QtQuick
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import Quickshell.Wayland
|
|
import qs
|
|
import qs.modules
|
|
import qs.services
|
|
|
|
ShellRoot {
|
|
PanelWindow {
|
|
id: win
|
|
screen: Quickshell.screens[0]
|
|
|
|
WlrLayershell.layer: WlrLayer.Overlay
|
|
WlrLayershell.namespace: "horologion-shot"
|
|
exclusionMode: ExclusionMode.Ignore
|
|
color: "transparent"
|
|
|
|
anchors { top: true; left: true }
|
|
margins { top: 60; left: 60 }
|
|
|
|
// Fixed, so a screen grab of exactly this rectangle is exactly this
|
|
// window and never the desktop underneath it. The widget is shorter
|
|
// than this; the crop takes care of the difference.
|
|
implicitWidth: Config.width + 68
|
|
implicitHeight: 700
|
|
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
gradient: Gradient {
|
|
GradientStop { position: 0.0; color: "#1b2016" }
|
|
GradientStop { position: 1.0; color: "#0e100c" }
|
|
}
|
|
|
|
ColumnLayout {
|
|
id: body
|
|
anchors.top: parent.top
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.topMargin: 34
|
|
width: Config.width
|
|
|
|
Horologion {
|
|
Component.onCompleted: {
|
|
const j = Quickshell.env("SHOT_JURISDICTION");
|
|
const d = Quickshell.env("SHOT_DATE");
|
|
if (j && j !== "") Typikon.jurisdiction = j;
|
|
if (d && d !== "") Typikon.forDate = d;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|