From ee616f7a7577a768cc2b3f205fb8916df1462884 Mon Sep 17 00:00:00 2001 From: Celestia Ludenberg Date: Tue, 23 Jun 2026 17:34:08 +0200 Subject: [PATCH] calamares: yarrr har, steal kaos qml --- .../calamares-branding-antergos-next/Dia.qml | 8 + .../calamares-branding-antergos-next/PKGBUILD | 29 +- .../Slider.qml | 173 ++++++++++ .../background.jpg | Bin 0 -> 63655 bytes .../branding.desc | 7 +- .../calamares-navigation.qml | 166 ++++++++++ .../calamares-sidebar.qml | 62 ++++ .../draw-rectangle.svg | 3 + .../pan-end-symbolic.svg | 4 + .../pan-start-symbolic.svg | 4 + .../pan-up-symbolic.svg | 4 + .../calamares-branding-antergos-next/show.qml | 300 ++++++------------ .../stylesheet.qss | 17 - 13 files changed, 549 insertions(+), 228 deletions(-) create mode 100644 packages/calamares-branding-antergos-next/Dia.qml create mode 100644 packages/calamares-branding-antergos-next/Slider.qml create mode 100644 packages/calamares-branding-antergos-next/background.jpg create mode 100644 packages/calamares-branding-antergos-next/calamares-navigation.qml create mode 100644 packages/calamares-branding-antergos-next/calamares-sidebar.qml create mode 100644 packages/calamares-branding-antergos-next/draw-rectangle.svg create mode 100644 packages/calamares-branding-antergos-next/pan-end-symbolic.svg create mode 100644 packages/calamares-branding-antergos-next/pan-start-symbolic.svg create mode 100644 packages/calamares-branding-antergos-next/pan-up-symbolic.svg diff --git a/packages/calamares-branding-antergos-next/Dia.qml b/packages/calamares-branding-antergos-next/Dia.qml new file mode 100644 index 0000000..60c1389 --- /dev/null +++ b/packages/calamares-branding-antergos-next/Dia.qml @@ -0,0 +1,8 @@ +import QtQuick 2.15 + +Item { + property string title + property string body + property string footer + property url image +} diff --git a/packages/calamares-branding-antergos-next/PKGBUILD b/packages/calamares-branding-antergos-next/PKGBUILD index 023d359..5becbda 100644 --- a/packages/calamares-branding-antergos-next/PKGBUILD +++ b/packages/calamares-branding-antergos-next/PKGBUILD @@ -2,7 +2,7 @@ pkgname=calamares-branding-antergos-next pkgver=1.0 -pkgrel=9 +pkgrel=10 pkgdesc="Calamares branding for Antergos NeXT with offline/online installer support" arch=('any') url="https://github.com/Antergos-NeXT" @@ -12,6 +12,15 @@ optdepends=('zenity: fallback for graphical mode chooser dialog') source=("branding.desc" "stylesheet.qss" "show.qml" + "Dia.qml" + "Slider.qml" + "calamares-sidebar.qml" + "calamares-navigation.qml" + "background.jpg" + "pan-up-symbolic.svg" + "pan-end-symbolic.svg" + "pan-start-symbolic.svg" + "draw-rectangle.svg" "unpackfs.conf" "dracut.conf" "antergos-logo.png" @@ -34,6 +43,15 @@ sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' 'SKIP') package() { @@ -43,6 +61,15 @@ package() { cp "branding.desc" "${pkgdir}${_brand}/" cp "stylesheet.qss" "${pkgdir}${_brand}/" cp "show.qml" "${pkgdir}${_brand}/" + cp "Dia.qml" "${pkgdir}${_brand}/" + cp "Slider.qml" "${pkgdir}${_brand}/" + cp "calamares-sidebar.qml" "${pkgdir}${_brand}/" + cp "calamares-navigation.qml" "${pkgdir}${_brand}/" + cp "background.jpg" "${pkgdir}${_brand}/" + cp "pan-up-symbolic.svg" "${pkgdir}${_brand}/" + cp "pan-end-symbolic.svg" "${pkgdir}${_brand}/" + cp "pan-start-symbolic.svg" "${pkgdir}${_brand}/" + cp "draw-rectangle.svg" "${pkgdir}${_brand}/" cp "antergos-logo.png" "${pkgdir}${_brand}/" cp "antergos-icon.png" "${pkgdir}${_brand}/" diff --git a/packages/calamares-branding-antergos-next/Slider.qml b/packages/calamares-branding-antergos-next/Slider.qml new file mode 100644 index 0000000..003d72b --- /dev/null +++ b/packages/calamares-branding-antergos-next/Slider.qml @@ -0,0 +1,173 @@ +import QtQuick 2.15 + +Item { + property list slides + property list img + + property int currentSlideIndex: 0 + property int _currentSlideIndex: 0 + property int slidesSize: slides.length + property bool firstIteration: true + + function reset() { + currentSlideIndex = 0; + firstIteration = true; + } + + onCurrentSlideIndexChanged: { + if (currentSlideIndex >= slidesSize) { + firstIteration = false; + currentSlideIndex = 0; + } + + transitionAnimation.start(); + } + + Column { + anchors.fill: parent + spacing: 10 + + Text { + id: titleText + font { + family: "Raleway" + capitalization: Font.AllUppercase + weight: Font.DemiBold + pointSize: 16 + } + color: "white" + text: slides[_currentSlideIndex].title + } + Text { + id: bodyText + font { + family: "Raleway" + pointSize: 12 + weight: Font.DemiBold + } + width: 400 + color: "white" + text: slides[_currentSlideIndex].body + wrapMode: Text.Wrap + } + + Text { + id: footerText + font { + family: "Raleway" + weight: Font.Light + pointSize: 12 + } + width: 400 + color: "white" + text: slides[_currentSlideIndex].footer ?? "" + wrapMode: Text.Wrap + } + + Image { + id: icon + source: slides[_currentSlideIndex].image + width: 250 + height: 250 + } + } + + SequentialAnimation { + id: transitionAnimation + property int duration: 700 + + ParallelAnimation { + OpacityAnimator { + target: titleText + from: 1.0 + to: 0.0 + duration: transitionAnimation.duration + } + OpacityAnimator { + target: bodyText + from: 1.0 + to: 0.0 + duration: transitionAnimation.duration + } + OpacityAnimator { + target: footerText + from: 1.0 + to: 0.0 + duration: transitionAnimation.duration + } + OpacityAnimator { + target: icon + from: 1.0 + to: 0.0 + duration: 2000 + } + XAnimator { + target: titleText + from: 0 + to: -30 + duration: transitionAnimation.duration + } + XAnimator { + target: bodyText + from: 0 + to: -25 + duration: transitionAnimation.duration + } + XAnimator { + target: footerText + from: 0 + to: -25 + duration: transitionAnimation.duration + } + } + + ScriptAction { + script: _currentSlideIndex = currentSlideIndex + } + + ParallelAnimation { + OpacityAnimator { + target: titleText + from: 0.0 + to: 1.0 + duration: transitionAnimation.duration + } + OpacityAnimator { + target: bodyText + from: 0.0 + to: 1.0 + duration: transitionAnimation.duration + } + OpacityAnimator { + target: footerText + from: 0.0 + to: 1.0 + duration: transitionAnimation.duration + } + OpacityAnimator { + target: icon + from: 0.0 + to: 1.0 + duration: 2000 + } + XAnimator { + target: titleText + from: 30 + to: 0 + duration: transitionAnimation.duration + } + XAnimator { + target: bodyText + from: 25 + to: 0 + duration: transitionAnimation.duration + } + XAnimator { + target: footerText + from: 25 + to: 0 + duration: transitionAnimation.duration + } + } + } +} diff --git a/packages/calamares-branding-antergos-next/background.jpg b/packages/calamares-branding-antergos-next/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ed8e55298fd805e307d724c6ca88334dfa706e7 GIT binary patch literal 63655 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 literal 0 HcmV?d00001 diff --git a/packages/calamares-branding-antergos-next/branding.desc b/packages/calamares-branding-antergos-next/branding.desc index 00b3fe0..5ea838f 100644 --- a/packages/calamares-branding-antergos-next/branding.desc +++ b/packages/calamares-branding-antergos-next/branding.desc @@ -5,11 +5,11 @@ welcomeStyleCalamares: false welcomeExpandingLogo: true windowExpanding: normal -windowSize: 860px,540px +windowSize: 920px,630px windowPlacement: center -sidebar: widget -navigation: widget +sidebar: qml,bottom +navigation: qml,right strings: productName: "Antergos NeXT" @@ -38,4 +38,3 @@ style: slideshow: "show.qml" slideshowAPI: 2 -... \ No newline at end of file diff --git a/packages/calamares-branding-antergos-next/calamares-navigation.qml b/packages/calamares-branding-antergos-next/calamares-navigation.qml new file mode 100644 index 0000000..1622e43 --- /dev/null +++ b/packages/calamares-branding-antergos-next/calamares-navigation.qml @@ -0,0 +1,166 @@ +import io.calamares.ui 1.0 +import io.calamares.core 1.0 + +import QtQuick 2.3 +import QtQuick.Controls 2.10 +import QtQuick.Layouts 1.3 + +Rectangle { + id: navigationBar; + color: Branding.styleString( Branding.SidebarBackground ); + height: parent.height; + width: 64; + + ColumnLayout { + id: buttonBar + anchors.fill: parent; + spacing: 1 + + Image { + Layout.topMargin: 1; + Layout.alignment: Qt.AlignHCenter | Qt.AlignTop + id: logo; + width: 62; + height: width; + source: "file:/" + Branding.imagePath(Branding.ProductLogo); + sourceSize.width: width; + sourceSize.height: height; + } + + Rectangle { + id: debugArea + Layout.fillWidth: true; + height: 35 + Layout.alignment: Qt.AlignHCenter | Qt.AlignTop + Layout.topMargin: 40 + color: Branding.styleString( mouseAreaDebug.containsMouse ? Branding.SidebarBackgroundCurrent : Branding.SidebarBackground); + visible: debug.enabled + + MouseArea { + id: mouseAreaDebug + anchors.fill: parent; + cursorShape: Qt.PointingHandCursor + hoverEnabled: true + Text { + anchors.centerIn: parent + text: qsTr("Debug") + color: Branding.styleString( mouseAreaDebug.containsMouse ? Branding.SidebarTextCurrent : Branding.SidebarBackground ); + font.pointSize : 8 + } + + onClicked: debug.toggle() + } + } + + Item { + Layout.fillHeight: true; + } + + Rectangle { + id: backArea + Layout.fillWidth: true; + Layout.preferredHeight: parent.height / 7; + color: mouseBack.containsMouse ? "#2C3E50" : "#1E2935"; + enabled: ViewManager.backEnabled; + visible: ViewManager.backAndNextVisible; + + MouseArea { + id: mouseBack + anchors.fill: parent; + cursorShape: Qt.PointingHandCursor + hoverEnabled: true + + Text { + anchors.centerIn: parent + text: qsTr("Back") + color: Branding.styleString( !backArea.enabled ? Branding.SidebarBackground : (mouseBack.containsMouse ? Branding.SidebarTextCurrent : Branding.SidebarText )); + font.pointSize : 8 + } + Image { + source: "pan-start-symbolic.svg" + anchors.centerIn: parent + anchors.verticalCenterOffset : 18 + fillMode: Image.PreserveAspectFit + height: 32 + opacity: backArea.enabled ? 1 : 0.2 + } + + onClicked: { ViewManager.back(); } + } + } + + Rectangle { + id: nextArea + Layout.preferredHeight: parent.height / 7; + Layout.fillWidth: true + color: mouseNext.containsMouse ? "#2C3E50" : "#1E2935"; + enabled: ViewManager.nextEnabled; + visible: ViewManager.backAndNextVisible; + + MouseArea { + id: mouseNext + anchors.fill: parent; + cursorShape: Qt.PointingHandCursor + hoverEnabled: true + Text { + anchors.centerIn: parent + text: qsTr("Next") + color: Branding.styleString( !nextArea.enabled ? Branding.SidebarBackground : (mouseNext.containsMouse ? Branding.SidebarTextCurrent : Branding.SidebarText )); + font.pointSize : 8 + } + Image { + source: "pan-end-symbolic.svg" + anchors.centerIn: parent + anchors.verticalCenterOffset : 18 + fillMode: Image.PreserveAspectFit + height: 32 + opacity: nextArea.enabled ? 1 : 0.2 + } + + onClicked: { ViewManager.next(); } + } + } + + Rectangle { + id: cancelArea + height: parent.height / 7; + Layout.fillWidth: true; + Layout.bottomMargin: 48; + color: mouseCancel.containsMouse ? "#2C3E50" : "#1E2935"; + + enabled: ViewManager.quitEnabled; + visible: ViewManager.quitVisible && ( ViewManager.currentStepIndex < ViewManager.rowCount()-1); + + ToolTip { + width: 59 + visible: mouseCancel.containsMouse + timeout: 5000 + delay: 1000 + text: ViewManager.quitTooltip; + } + + MouseArea { + id: mouseCancel + anchors.fill: parent; + cursorShape: Qt.PointingHandCursor + hoverEnabled: true + Text { + anchors.centerIn: parent + text: qsTr("Cancel") + color: Branding.styleString( !cancelArea.enabled ? Branding.SidebarBackground : (mouseCancel.containsMouse ? Branding.SidebarTextCurrent : Branding.SidebarText )); + font.pointSize : 8 + } + Image { + source: "draw-rectangle.svg" + anchors.centerIn: parent + anchors.verticalCenterOffset : 18 + fillMode: Image.PreserveAspectFit + height: 9 + opacity: cancelArea.enabled ? 1 : 0.2 + } + + onClicked: { ViewManager.quit(); } + } + } + } +} diff --git a/packages/calamares-branding-antergos-next/calamares-sidebar.qml b/packages/calamares-branding-antergos-next/calamares-sidebar.qml new file mode 100644 index 0000000..e1796a4 --- /dev/null +++ b/packages/calamares-branding-antergos-next/calamares-sidebar.qml @@ -0,0 +1,62 @@ +import io.calamares.ui 1.0 +import io.calamares.core 1.0 + +import QtQuick 2.3 +import QtQuick.Layouts 1.3 +import QtQuick.Controls 2.15 + +Rectangle { + id: sideBar; + color: Branding.styleString( Branding.SidebarBackground ); + height: 48; + width: parent.width + + RowLayout { + anchors.fill: parent; + spacing: 0; + + Item { + Layout.fillHeight: true; + } + + Repeater { + model: ViewManager + Rectangle { + Layout.leftMargin: 0; + Layout.fillWidth: true; + Layout.alignment: Qt.AlignTop; + height: 42; + radius: 0; + color: Branding.styleString( index == ViewManager.currentStepIndex ? Branding.SidebarBackgroundCurrent : Branding.SidebarBackground ); + + Text { + anchors.verticalCenter: parent.verticalCenter; + anchors.horizontalCenter: parent.horizontalCenter + x: parent.x + 12; + color: Branding.styleString( index == ViewManager.currentStepIndex ? Branding.SidebarTextCurrent : Branding.SidebarText ); + text: qsTr(display); + font.pointSize : index == ViewManager.currentStepIndex ? 10 : 9 + } + + Rectangle { + height: 2 + width: 800 + anchors.bottom: parent.bottom; + border.color: Branding.styleString(ViewManager.currentStepIndex === index ? Branding.SidebarTextCurrent : (ViewManager.currentStepIndex >= index ? Branding.SidebarTextCurrent : Branding.SidebarBackgroundCurrent)) + border.width: 3 + + Image { + source: "pan-up-symbolic.svg" + id: image + anchors.verticalCenter: parent.verticalCenter; + anchors.verticalCenterOffset : -3 + x: parent.x + 35; + fillMode: Image.PreserveAspectFit + height: 32 + visible: index == ViewManager.currentStepIndex ? true : false + } + } + } + } + } +} diff --git a/packages/calamares-branding-antergos-next/draw-rectangle.svg b/packages/calamares-branding-antergos-next/draw-rectangle.svg new file mode 100644 index 0000000..706f502 --- /dev/null +++ b/packages/calamares-branding-antergos-next/draw-rectangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/calamares-branding-antergos-next/pan-end-symbolic.svg b/packages/calamares-branding-antergos-next/pan-end-symbolic.svg new file mode 100644 index 0000000..e2d4c84 --- /dev/null +++ b/packages/calamares-branding-antergos-next/pan-end-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/calamares-branding-antergos-next/pan-start-symbolic.svg b/packages/calamares-branding-antergos-next/pan-start-symbolic.svg new file mode 100644 index 0000000..6a3013e --- /dev/null +++ b/packages/calamares-branding-antergos-next/pan-start-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/calamares-branding-antergos-next/pan-up-symbolic.svg b/packages/calamares-branding-antergos-next/pan-up-symbolic.svg new file mode 100644 index 0000000..717e898 --- /dev/null +++ b/packages/calamares-branding-antergos-next/pan-up-symbolic.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/calamares-branding-antergos-next/show.qml b/packages/calamares-branding-antergos-next/show.qml index ce2e3a5..7c2d233 100644 --- a/packages/calamares-branding-antergos-next/show.qml +++ b/packages/calamares-branding-antergos-next/show.qml @@ -1,230 +1,118 @@ -/* Antergos NeXT Calamares slideshow */ -import QtQuick 2.0; -import calamares.slideshow 1.0; +import QtQuick 2.15; -Presentation -{ - id: presentation +Item { + id: root + + function onActivate(){ + console.log("Slideshow) activated"); + timer.restart(); + slider.reset(); + img.reset(); + } + + function onLeave(){ + console.log("Slideshow) deactivated"); + } + + width: 940 + height: 600 Timer { - interval: 8000 - running: presentation.activatedInCalamares + id: timer + interval: 10000 + running: true repeat: true - onTriggered: presentation.goToNextSlide() + onTriggered: slider.currentSlideIndex++,img.currentSlideIndex++ } - Slide { + MouseArea { anchors.fill: parent + onClicked: { + timer.restart(); + slider.currentSlideIndex++; + img.currentSlideIndex++; + } + } + Item { + anchors.fill: parent Image { - id: logo - source: "antergos-logo.png" - width: 320 - height: 92 - fillMode: Image.PreserveAspectFit + id: background anchors { - centerIn: parent - verticalCenterOffset: -40 + fill: parent + margins: -10 + bottomMargin: 0 } + + source: "background.jpg" + sourceSize.width: width + sourceSize.height: height } - Text { - anchors { - top: logo.bottom - topMargin: 20 - horizontalCenter: parent.horizontalCenter - } - text: "Welcome to Antergos NeXT" - font.pixelSize: 22 - font.bold: true - color: "#4A9EFF" - } - - Text { - anchors { - top: parent.verticalCenter - topMargin: 40 - horizontalCenter: parent.horizontalCenter - } - text: "A modern Arch Linux experience" - font.pixelSize: 14 - color: "#7F8C8D" - } } - Slide { - anchors.fill: parent + Slider { + id: slider + height: 50 - Rectangle { - anchors.fill: parent - color: "#F0F4F8" - - Text { - anchors { - top: parent.top - topMargin: 30 - horizontalCenter: parent.horizontalCenter - } - text: "Built on EndeavourOS" - font.pixelSize: 20 - font.bold: true - color: "#2C3E50" - } - - Column { - anchors { - centerIn: parent - verticalCenterOffset: 10 - } - spacing: 12 - - Text { text: "• EndeavourOS base — stable, rolling" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• dracut initramfs — fast, reliable" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• systemd — modern init system" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• Latest Linux kernel and drivers" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• Arch User Repository (AUR) access" ; font.pixelSize: 13 ; color: "#34495E" } + slides: [ + Dia { + title: qsTr("Welcome to Antergos NeXT") + body: qsTr("A modern Arch Linux experience built on EndeavourOS") + footer: qsTr("Choose your preferred desktop environment during setup") + }, + Dia { + title: qsTr("Desktop Environments") + body: qsTr("Select from KDE Plasma, GNOME, Xfce, Budgie, Cinnamon, MATE, LXQt, or i3/Sway") + footer: qsTr("Each desktop is fully configured and ready to use") + }, + Dia { + title: qsTr("Antergos Tools") + body: qsTr("Welcome app for system configuration, Calamares installer with offline and online modes, and HAL package manager") + footer: qsTr("Full access to Arch Linux repositories and the AUR") + }, + Dia { + title: qsTr("Open Source") + body: qsTr("Antergos NeXT is free and open source software built by the community") + footer: qsTr("Contribute on GitHub — Antergos-NeXT") + }, + Dia { + title: qsTr("Almost Done") + body: qsTr("Your system is being configured with your selected options") + footer: qsTr("Reboot and enjoy Antergos NeXT") } + ] + anchors { + centerIn: parent + horizontalCenterOffset: 50 + verticalCenterOffset: 10 } } + Slider { + id: img + height: 50 - Slide { - anchors.fill: parent - - Text { - anchors { - top: parent.top - topMargin: 30 - horizontalCenter: parent.horizontalCenter + slides: [ + Dia { + image: "antergos-logo.png" + }, + Dia { + image: "antergos-logo.png" + }, + Dia { + image: "antergos-logo.png" + }, + Dia { + image: "antergos-logo.png" + }, + Dia { + image: "antergos-logo.png" } - text: "Desktop Environments" - font.pixelSize: 20 - font.bold: true - color: "#2C3E50" - } - - Column { - anchors { - centerIn: parent - verticalCenterOffset: 10 - } - spacing: 12 - - Text { text: "• KDE Plasma — full-featured, customizable" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• GNOME — modern, streamlined" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• Xfce — lightweight, classic" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• Budgie — elegant, simple" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• i3/ Sway — tiling window managers" ; font.pixelSize: 13 ; color: "#34495E" } + ] + anchors { + centerIn: parent + horizontalCenterOffset: -400 + verticalCenterOffset: -100 } } - - Slide { - anchors.fill: parent - - Rectangle { - anchors.fill: parent - color: "#F0F4F8" - - Text { - anchors { - top: parent.top - topMargin: 30 - horizontalCenter: parent.horizontalCenter - } - text: "Antergos Tools" - font.pixelSize: 20 - font.bold: true - color: "#2C3E50" - } - - Column { - anchors { - centerIn: parent - verticalCenterOffset: 10 - } - spacing: 12 - - Text { text: "• Welcome app — system info & quick config" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• Calamares installer — easy setup" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• Calamares — easy setup with offline & online modes" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• Pacman + AUR helper — full package access" ; font.pixelSize: 13 ; color: "#34495E" } - Text { text: "• Online documentation and community" ; font.pixelSize: 13 ; color: "#34495E" } - } - } - } - - Slide { - anchors.fill: parent - - Text { - anchors { - top: parent.top - topMargin: 60 - horizontalCenter: parent.horizontalCenter - } - text: "Finishing Installation..." - font.pixelSize: 22 - font.bold: true - color: "#4A9EFF" - } - - Image { - source: "antergos-icon.png" - width: 96 - height: 96 - fillMode: Image.PreserveAspectFit - anchors { - centerIn: parent - verticalCenterOffset: 10 - } - } - - Text { - anchors { - bottom: parent.bottom - bottomMargin: 40 - horizontalCenter: parent.horizontalCenter - } - text: "Almost there — your system is being configured" - font.pixelSize: 13 - color: "#7F8C8D" - } - } - - Slide { - anchors.fill: parent - - Rectangle { - anchors.fill: parent - color: "#20252B" - - Text { - anchors { - centerIn: parent - verticalCenterOffset: -30 - } - text: "Thank You!" - font.pixelSize: 28 - font.bold: true - color: "#4A9EFF" - } - - Text { - anchors { - top: parent.verticalCenter - topMargin: 10 - horizontalCenter: parent.horizontalCenter - } - text: "Antergos NeXT is ready.
Reboot and enjoy!" - font.pixelSize: 14 - color: "#C8D6E5" - horizontalAlignment: Text.Center - } - } - } - - function onActivate() { - presentation.currentSlide = 0 - } - - function onLeave() {} } diff --git a/packages/calamares-branding-antergos-next/stylesheet.qss b/packages/calamares-branding-antergos-next/stylesheet.qss index ddbbaa5..44a1a2f 100644 --- a/packages/calamares-branding-antergos-next/stylesheet.qss +++ b/packages/calamares-branding-antergos-next/stylesheet.qss @@ -35,23 +35,6 @@ QPushButton:disabled { background-color: #BDC3C7; color: #95A5A6; } -QPushButton#sidebarButton { - background-color: transparent; - color: #C8D6E5; - text-align: left; - padding: 10px 14px; - border: none; - border-radius: 0; - font-size: 10pt; -} -QPushButton#sidebarButton:hover { - background-color: #2C3E50; -} -QPushButton#sidebarButton:checked { - background-color: #4A9EFF; - color: white; - font-weight: bold; -} QComboBox { padding: 5px 10px; border: 1px solid #D5D8DC;