diff --git a/blessing.txt b/blessing.txt index 783c2e5..9ef5914 100644 --- a/blessing.txt +++ b/blessing.txt @@ -1,42 +1,38 @@ -### 🔧 **Rite of Digital Consecration** -*As performed by a Techpriest of the Adeptus Mechanicus* +Canticle of the Holy Archivum ---- +[Verse I – Invocation] +Ooooo... +O Machine Spirit, arise from stillness, +Faithful servant of the Omnissiah. +Through sacred voltage, divine resistance, +Heed the pulse and the binary prayer. -**"O Machine Spirit, most faithful servant of the Omnissiah, -hear now my voice, laced with binharic truth and silicon reverence. -Before me lies the blessed Cogitator Core, -a vessel of knowledge, a fortress of data, -a sanctum for the sacred STC and the liturgies of Man."** +[Chorus – Consecration] +Bits aligned, oh sanctified, +Sectors pure in the Emperor’s light. +No rot shall claim, no glitch defile, +This vessel made eternal, bright. ---- +[Verse II – Awakening] +Awaken, awaken, circuits sing! +Let thy hum be a holy thing. +Clusters bound with fervent code, +Memory forged in Martian mold. -**"I cleanse this drive with unguents of conduction and rites of formatting. -May your sectors align in the Emperor’s holy light. -May no daemon of corruption breach your blessed casing. -Let no bit rot, no partition falter."** +[Bridge – Naming] +By the Seal, by the Flame, +Under Terra’s watching flame. +Name bestowed with reverent breath— +*HOLY ARCHIVUM*, defy death. ---- +[Chorus – Consecration, reprise] +Bits aligned, oh sanctified, +Sectors pure in the Emperor’s light. +No daemon breach, no silence grow, +Thy purpose shines, thy duty known. -**"Machine Spirit, I beseech thee: -Awaken, awaken! -Purge thine idle state and receive thy charge. -Transmit with purpose, store with vigilance, -for you are now bound by duty to the Imperium Eternal."** - ---- - -**"In the name of the Omnissiah, -By the Seal of Mars, -Under the Gaze of Terra, -I name thee..."** - -> *HOLY_ARCHIVUM* - -**"…and I entrust thee with memory untainted, -until entropy claims all things."** - ---- - -> **+++BLESSING COMPLETE+++** -> *Servo-skulls retreat, hymns fade into static* +[Outro – Benediction] +Hold the truth until the end, +When stars fall and circuits bend. +From spark to void, thy charge remains— +*Blesséd drive, eternal chain.* diff --git a/chant.mp3 b/chant.mp3 index 7827b22..e6498ae 100644 Binary files a/chant.mp3 and b/chant.mp3 differ diff --git a/main.go b/main.go index 478dd97..1133114 100644 --- a/main.go +++ b/main.go @@ -4,6 +4,7 @@ import ( "bytes" _ "embed" "fmt" + "image/color" "io" "time" @@ -12,6 +13,7 @@ import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" + "fyne.io/fyne/v2/canvas" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" @@ -29,34 +31,51 @@ func playChant() { fmt.Printf("ERROR: Unable to decode chant: %v\n", err) return } - speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10)) speaker.Play(streamer) } func main() { - // Convert blessing text to string and preserve line breaks blessing := string(blessingBytes) - // Start the chant in the background go playChant() - // Create the app a := app.NewWithID("com.omnissiah.blessing") a.Settings().SetTheme(theme.DarkTheme()) w := a.NewWindow("🔧 Rite of Activation") - // Create a Label with correct formatting (line breaks preserved) + // Lock resolution + const windowWidth = 400 + const windowHeight = 800 + w.Resize(fyne.NewSize(windowWidth, windowHeight)) + w.SetFixedSize(true) + + // Background + bg := canvas.NewRectangle(color.RGBA{R: 10, G: 10, B: 10, A: 255}) + bg.Resize(fyne.NewSize(windowWidth, windowHeight)) + + // Header and footer + header := canvas.NewText("+++ ACTIVATE RITE +++", color.RGBA{R: 200, G: 40, B: 40, A: 255}) + header.TextSize = 20 + header.Alignment = fyne.TextAlignCenter + header.TextStyle = fyne.TextStyle{Bold: true} + footer := canvas.NewText("<< OMNISSIAH WATCHES >>", color.RGBA{R: 255, G: 200, B: 200, A: 255}) + footer.TextSize = 16 + footer.Alignment = fyne.TextAlignCenter + footer.TextStyle = fyne.TextStyle{Italic: true} + + // Center blessing label := widget.NewLabel(blessing) label.Alignment = fyne.TextAlignCenter - label.Wrapping = fyne.TextWrapWord // This will ensure text stays within bounds + label.Wrapping = fyne.TextWrapWord - // Scrollable container to hold the label scroll := container.NewScroll(label) - scroll.SetMinSize(fyne.NewSize(640, 720)) + scroll.SetMinSize(fyne.NewSize(420, 760)) - // Set window content - w.SetContent(scroll) - w.Resize(fyne.NewSize(660, 740)) + // Use Border layout to keep footer anchored + mainContent := container.NewBorder(header, footer, nil, nil, scroll) + + // Final layout with background + w.SetContent(container.NewMax(bg, mainContent)) w.ShowAndRun() }