diff options
| author | Nippy <nippy@rp1.hu> | 2026-06-26 17:31:35 +0200 |
|---|---|---|
| committer | Nippy <nippy@rp1.hu> | 2026-06-26 17:31:35 +0200 |
| commit | bd924d00acaec482a466865709edbf6833f905a4 (patch) | |
| tree | 49632ec36c5360c91bee0a2cf107e717280a89b5 | |
| parent | 69aa2e2836af1f5177187bdef2ebd9eefdbfc95a (diff) | |
| download | RaveOS-PKGBUILD-bd924d00acaec482a466865709edbf6833f905a4.tar.gz RaveOS-PKGBUILD-bd924d00acaec482a466865709edbf6833f905a4.zip | |
test selector
| -rw-r--r-- | raveos-calamares-module/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | raveos-calamares-module/PKGBUILD | 4 | ||||
| -rw-r--r-- | raveos-calamares-module/desktopselect/CMakeLists.txt | 30 | ||||
| -rw-r--r-- | raveos-calamares-module/desktopselect/DesktopBackend.cpp | 35 | ||||
| -rw-r--r-- | raveos-calamares-module/desktopselect/DesktopBackend.h | 31 | ||||
| -rw-r--r-- | raveos-calamares-module/desktopselect/DesktopSelectViewStep.cpp | 117 | ||||
| -rw-r--r-- | raveos-calamares-module/desktopselect/DesktopSelectViewStep.h | 42 | ||||
| -rw-r--r-- | raveos-calamares-module/desktopselect/desktopselect.conf | 152 | ||||
| -rw-r--r-- | raveos-calamares-module/desktopselect/module.desc | 5 | ||||
| -rw-r--r-- | raveos-calamares-module/desktopselect/ui/desktopselect.qml | 115 | ||||
| -rw-r--r-- | raveos-calamares-module/desktopselect/ui/qmldir | 1 | ||||
| -rw-r--r-- | raveos-calamares-theme/PKGBUILD | 2 | ||||
| -rwxr-xr-x | raveos-calamares-theme/etc/calamares/settings.conf | 5 |
13 files changed, 533 insertions, 7 deletions
diff --git a/raveos-calamares-module/CMakeLists.txt b/raveos-calamares-module/CMakeLists.txt index cc3589d..1a56796 100644 --- a/raveos-calamares-module/CMakeLists.txt +++ b/raveos-calamares-module/CMakeLists.txt @@ -6,3 +6,4 @@ find_package(Calamares REQUIRED) add_subdirectory(wifi) add_subdirectory(welcome) +add_subdirectory(desktopselect) diff --git a/raveos-calamares-module/PKGBUILD b/raveos-calamares-module/PKGBUILD index 36870a7..3d4bacb 100644 --- a/raveos-calamares-module/PKGBUILD +++ b/raveos-calamares-module/PKGBUILD @@ -1,7 +1,7 @@ pkgname=raveos-calamares-module pkgver=2.0.0 -pkgrel=4 -pkgdesc="RaveOS Calamares Wi-Fi viewmodule" +pkgrel=5 +pkgdesc="RaveOS Calamares modules: Wi-Fi, Welcome, Desktop Selector" arch=('x86_64') options=('!debug') url="https://git.rp1.hu/RaveOS" diff --git a/raveos-calamares-module/desktopselect/CMakeLists.txt b/raveos-calamares-module/desktopselect/CMakeLists.txt new file mode 100644 index 0000000..c10c57c --- /dev/null +++ b/raveos-calamares-module/desktopselect/CMakeLists.txt @@ -0,0 +1,30 @@ +find_package(Qt6 REQUIRED COMPONENTS Widgets Quick QuickWidgets) + +calamares_add_plugin(desktopselect + TYPE viewmodule + EXPORT_MACRO PLUGINDLLEXPORT_PRO + SOURCES + DesktopSelectViewStep.cpp + DesktopBackend.cpp + LINK_LIBRARIES + Qt6::Widgets + Qt6::Quick + Qt6::QuickWidgets +) + +install( + FILES module.desc + DESTINATION lib/calamares/modules/desktopselect +) + +install( + FILES desktopselect.conf + DESTINATION share/calamares/modules +) + +install( + FILES + ui/desktopselect.qml + ui/qmldir + DESTINATION lib/calamares/modules/desktopselect/ui +) diff --git a/raveos-calamares-module/desktopselect/DesktopBackend.cpp b/raveos-calamares-module/desktopselect/DesktopBackend.cpp new file mode 100644 index 0000000..9fd1cc2 --- /dev/null +++ b/raveos-calamares-module/desktopselect/DesktopBackend.cpp @@ -0,0 +1,35 @@ +#include "DesktopBackend.h" + +DesktopBackend::DesktopBackend(QObject* parent) + : QObject(parent) +{} + +void DesktopBackend::setDesktops(const QVariantList& desktops) +{ + m_desktops = desktops; + m_selectedIndex = -1; + emit desktopsChanged(); + emit selectedIndexChanged(); +} + +void DesktopBackend::selectDesktop(int index) +{ + if (index == m_selectedIndex) + return; + if (index < 0 || index >= m_desktops.size()) + return; + m_selectedIndex = index; + emit selectedIndexChanged(); + emit selectionMade(); +} + +QStringList DesktopBackend::selectedPackages() const +{ + if (m_selectedIndex < 0 || m_selectedIndex >= m_desktops.size()) + return {}; + const QVariantMap desktop = m_desktops[m_selectedIndex].toMap(); + QStringList pkgs; + for (const auto& v : desktop.value("packages").toList()) + pkgs << v.toString(); + return pkgs; +} diff --git a/raveos-calamares-module/desktopselect/DesktopBackend.h b/raveos-calamares-module/desktopselect/DesktopBackend.h new file mode 100644 index 0000000..4ceb6cb --- /dev/null +++ b/raveos-calamares-module/desktopselect/DesktopBackend.h @@ -0,0 +1,31 @@ +#pragma once +#include <QObject> +#include <QStringList> +#include <QVariantList> + +class DesktopBackend : public QObject +{ + Q_OBJECT + Q_PROPERTY(QVariantList desktops READ desktops NOTIFY desktopsChanged) + Q_PROPERTY(int selectedIndex READ selectedIndex NOTIFY selectedIndexChanged) + +public: + explicit DesktopBackend(QObject* parent = nullptr); + + QVariantList desktops() const { return m_desktops; } + int selectedIndex() const { return m_selectedIndex; } + + void setDesktops(const QVariantList& desktops); + QStringList selectedPackages() const; + + Q_INVOKABLE void selectDesktop(int index); + +signals: + void desktopsChanged(); + void selectedIndexChanged(); + void selectionMade(); + +private: + QVariantList m_desktops; + int m_selectedIndex = -1; +}; diff --git a/raveos-calamares-module/desktopselect/DesktopSelectViewStep.cpp b/raveos-calamares-module/desktopselect/DesktopSelectViewStep.cpp new file mode 100644 index 0000000..4af261c --- /dev/null +++ b/raveos-calamares-module/desktopselect/DesktopSelectViewStep.cpp @@ -0,0 +1,117 @@ +#include "DesktopSelectViewStep.h" + +#include <QDir> +#include <QFile> +#include <QSet> +#include <QVBoxLayout> +#include <QQuickWidget> +#include <QQmlContext> +#include <QQmlEngine> + +#include <GlobalStorage.h> +#include <JobQueue.h> + +CALAMARES_PLUGIN_FACTORY_DEFINITION(DesktopSelectViewStepFactory, registerPlugin<DesktopSelectViewStep>();) + +DesktopSelectViewStep::DesktopSelectViewStep(QObject* parent) + : Calamares::ViewStep(parent) + , m_backend(new DesktopBackend(this)) +{ + connect(m_backend, &DesktopBackend::selectionMade, this, [this]() { + emit nextStatusChanged(true); + }); +} + +DesktopSelectViewStep::~DesktopSelectViewStep() +{ + if (m_widget && m_widget->parent() == nullptr) + delete m_widget; +} + +QString DesktopSelectViewStep::prettyName() const +{ + return tr("Desktop"); +} + +void DesktopSelectViewStep::buildWidget() +{ + m_widget = new QWidget(); + auto* layout = new QVBoxLayout(m_widget); + layout->setContentsMargins(0, 0, 0, 0); + + m_quickWidget = new QQuickWidget(); + m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); + + QString modulePath = QStringLiteral("/usr/lib/calamares/modules/desktopselect/ui"); + if (!QDir(modulePath).exists()) + modulePath = QDir::currentPath() + QStringLiteral("/desktopselect/ui"); + + m_quickWidget->engine()->addImportPath(modulePath); + m_quickWidget->rootContext()->setContextProperty("backend", m_backend); + + QString qmlPath = QStringLiteral("/usr/lib/calamares/modules/desktopselect/ui/desktopselect.qml"); + if (!QFile::exists(qmlPath)) + qmlPath = QDir::currentPath() + QStringLiteral("/desktopselect/ui/desktopselect.qml"); + + m_quickWidget->setSource(QUrl::fromLocalFile(qmlPath)); + layout->addWidget(m_quickWidget); +} + +QWidget* DesktopSelectViewStep::widget() +{ + if (!m_widget) + buildWidget(); + return m_widget; +} + +bool DesktopSelectViewStep::isNextEnabled() const +{ + return m_backend && m_backend->selectedIndex() >= 0; +} + +bool DesktopSelectViewStep::isBackEnabled() const { return true; } +bool DesktopSelectViewStep::isAtBeginning() const { return true; } +bool DesktopSelectViewStep::isAtEnd() const { return true; } + +Calamares::JobList DesktopSelectViewStep::jobs() const { return {}; } + +void DesktopSelectViewStep::onLeave() +{ + if (!m_backend || m_backend->selectedIndex() < 0) + return; + + // Merge mandatory + selected desktop packages, deduplicated + QStringList combined = m_mandatoryPackages + m_backend->selectedPackages(); + QStringList unique; + QSet<QString> seen; + for (const QString& pkg : combined) { + if (!seen.contains(pkg)) { + seen.insert(pkg); + unique << pkg; + } + } + + QVariantMap op; + op[QStringLiteral("install")] = unique; + QVariantList ops; + ops.append(op); + + if (!Calamares::JobQueue::instance()) + return; + auto* gs = Calamares::JobQueue::instance()->globalStorage(); + if (gs) + gs->insert(QStringLiteral("packageOperations"), ops); +} + +void DesktopSelectViewStep::setConfigurationMap(const QVariantMap& config) +{ + m_mandatoryPackages.clear(); + for (const auto& v : config.value("mandatory_packages").toList()) + m_mandatoryPackages << v.toString(); + + QVariantList desktops; + for (const auto& item : config.value("desktops").toList()) + desktops << item; + + m_backend->setDesktops(desktops); +} diff --git a/raveos-calamares-module/desktopselect/DesktopSelectViewStep.h b/raveos-calamares-module/desktopselect/DesktopSelectViewStep.h new file mode 100644 index 0000000..4874ba3 --- /dev/null +++ b/raveos-calamares-module/desktopselect/DesktopSelectViewStep.h @@ -0,0 +1,42 @@ +#pragma once +#include <viewpages/ViewStep.h> +#include <utils/PluginFactory.h> +#include <Job.h> +#include <QObject> +#include <QWidget> +#include <QStringList> +#include "DesktopBackend.h" + +class QQuickWidget; + +class PLUGINDLLEXPORT DesktopSelectViewStep : public Calamares::ViewStep +{ + Q_OBJECT + +public: + explicit DesktopSelectViewStep(QObject* parent = nullptr); + ~DesktopSelectViewStep() override; + + QString prettyName() const override; + QWidget* widget() override; + + bool isNextEnabled() const override; + bool isBackEnabled() const override; + bool isAtBeginning() const override; + bool isAtEnd() const override; + + Calamares::JobList jobs() const override; + + void setConfigurationMap(const QVariantMap& config) override; + void onLeave() override; + +private: + void buildWidget(); + + QWidget* m_widget = nullptr; + QQuickWidget* m_quickWidget = nullptr; + DesktopBackend* m_backend = nullptr; + QStringList m_mandatoryPackages; +}; + +CALAMARES_PLUGIN_FACTORY_DECLARATION(DesktopSelectViewStepFactory) diff --git a/raveos-calamares-module/desktopselect/desktopselect.conf b/raveos-calamares-module/desktopselect/desktopselect.conf new file mode 100644 index 0000000..8935e64 --- /dev/null +++ b/raveos-calamares-module/desktopselect/desktopselect.conf @@ -0,0 +1,152 @@ +--- +mandatory_packages: + - wget + - noto-fonts + - noto-fonts-cjk + - noto-fonts-emoji + - noto-fonts-extra + - qt6-wayland + - qt5-wayland + - ttf-ubuntu-font-family + - rsync + - gvfs + - gvfs-smb + - gvfs-mtp + - gvfs-nfs + - ufw + - gufw + - flatpak + - pavucontrol + - xdg-user-dirs + - xdg-user-dirs-gtk + - sddm + - sddm-astronaut-theme + - pipewire + - wireplumber + - pipewire-audio + - libpipewire + - libwireplumber + - lib32-libpipewire + - lib32-pipewire + - pipewire-jack + - pipewire-pulse + - pipewire-session-manager + - hblock + - reflector + - raveos-tools + - gamemode + - lib32-gamemode + - ananicy-cpp + - cachyos-ananicy-rules-git + +desktops: + - name: "KDE Plasma Desktop" + description: "Alap KDE RaveOS Témával. Teljes értékű asztali környezet." + badge: "STABIL" + badge_color: "#2e7d32" + packages: + - plasma + - kde-applications + - konsole + - gvfs + - gvfs-smb + - gvfs-nfs + - gvfs-mtp + - raveos-kde-theme + + - name: "GNOME Desktop" + description: "Teljes RaveOS Flavour. Modern, letisztult felület." + badge: "STABIL" + badge_color: "#2e7d32" + packages: + - gnome-session + - gnome-console + - gedit + - gnome-disk-utility + - gnome-system-monitor + - gvfs + - gvfs-smb + - gvfs-nfs + - gvfs-mtp + - fuse2 + - eog + - gnome-calculator + - baobab + - gnome-control-center + - gnome-tweaks + - gnome-browser-connector + - xdg-desktop-portal + - gnome-keyring + - xdg-desktop-portal-gnome + - xdg-desktop-portal-gtk + - xdg-desktop-portal-wlr + - gnome-settings-daemon + - nautilus + - gnome-shell-extensions + - yaru-gtk-theme + - raveos-gnome-theme + + - name: "Cosmic Desktop" + description: "RaveOS témával, de erősen BÉTA még mindig." + badge: "BÉTA" + badge_color: "#c62828" + packages: + - cosmic + - cosmic-text-editor + - cosmic-files + - cosmic-terminal + - cosmic-player + - cosmic-wallpapers + - raveos-cosmic-theme + - gvfs + - gvfs-smb + - gvfs-nfs + - gvfs-mtp + + - name: "Hyprland" + description: "FULLOS RaveOS Konfigurációval, kulcsra készen." + badge: "HAMAROSAN" + badge_color: "#e65100" + packages: + - hyprland + - aquamarine + - nwg-displays + - nwg-look + - hyprwayland-scanner + - xdg-desktop-portal-hyprland + - xdg-desktop-portal + - hyprland-qt-support + - hyprpolkitagent + - hyprland-guiutils + - hyprpwcenter + - hyprlauncher + - hyprtoolkit + - hyprgraphics + - hyprcursor + - hyprpicker + - hyprshot + - hypridle + - hyprlock + - hyprwire + - hyprpaper + - dms-shell-hyprland + - hyprshell + - kitty + - thunar + - thunar-volman + - thunar-archive-plugin + - thunar-media-tags-plugin + - thunar-shares-plugin + - file-roller + - unzip + - unrar + - flatseal + - tumbler + - gedit + - gnome-calculator + - polkit-gnome + - raveos-hyprland-theme + - gvfs + - gvfs-smb + - gvfs-mtp + - gvfs-nfs diff --git a/raveos-calamares-module/desktopselect/module.desc b/raveos-calamares-module/desktopselect/module.desc new file mode 100644 index 0000000..5185a6f --- /dev/null +++ b/raveos-calamares-module/desktopselect/module.desc @@ -0,0 +1,5 @@ +--- +type: "viewmodule" +name: "desktopselect" +interface: "qtplugin" +load: "libcalamares_viewmodule_desktopselect.so" diff --git a/raveos-calamares-module/desktopselect/ui/desktopselect.qml b/raveos-calamares-module/desktopselect/ui/desktopselect.qml new file mode 100644 index 0000000..02cb365 --- /dev/null +++ b/raveos-calamares-module/desktopselect/ui/desktopselect.qml @@ -0,0 +1,115 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 + +Rectangle { + id: root + color: "#404040" + + // Nagy külső keret — cím, banner, kártyák mind benne + Rectangle { + anchors.fill: parent + anchors.margins: 20 + color: "#2B2B2B" + radius: 10 + + ColumnLayout { + anchors.fill: parent + anchors.margins: 16 + spacing: 14 + + // Cím + Text { + text: "Desktop kiválasztása" + font.pixelSize: 24 + font.bold: true + color: "#ffffff" + } + + // Figyelmeztető banner + Rectangle { + Layout.fillWidth: true + height: 50 + color: "#1e1e1e" + border.color: "#e67e22" + border.width: 2 + radius: 6 + + Text { + anchors.centerIn: parent + text: "Válassz egy desktop környezetet. Csak egyet választhatsz!" + color: "#e0e0e0" + font.pixelSize: 13 + } + } + + // Kártyák + ListView { + id: desktopList + Layout.fillWidth: true + Layout.fillHeight: true + spacing: 8 + clip: true + model: backend.desktops + + delegate: Rectangle { + width: desktopList.width + height: 78 + radius: 8 + color: backend.selectedIndex === index ? "#2a4a2a" : "#333333" + border.color: backend.selectedIndex === index ? "#5cb85c" : "#555555" + border.width: 2 + + RowLayout { + anchors.fill: parent + anchors.leftMargin: 16 + anchors.rightMargin: 16 + spacing: 12 + + Column { + Layout.fillWidth: true + spacing: 5 + + Text { + text: modelData.name || "" + color: "#ffffff" + font.pixelSize: 15 + font.bold: true + } + + Text { + text: modelData.description || "" + color: "#b2b2b2" + font.pixelSize: 12 + width: parent.width + elide: Text.ElideRight + } + } + + Rectangle { + width: badgeText.implicitWidth + 20 + height: 28 + radius: 4 + color: modelData.badge_color || "#555555" + + Text { + id: badgeText + anchors.centerIn: parent + text: modelData.badge || "" + color: "#ffffff" + font.pixelSize: 11 + font.bold: true + } + } + } + + MouseArea { + anchors.fill: parent + cursorShape: Qt.PointingHandCursor + onClicked: backend.selectDesktop(index) + } + } + } + } + } +} diff --git a/raveos-calamares-module/desktopselect/ui/qmldir b/raveos-calamares-module/desktopselect/ui/qmldir new file mode 100644 index 0000000..442b282 --- /dev/null +++ b/raveos-calamares-module/desktopselect/ui/qmldir @@ -0,0 +1 @@ +module DesktopSelectModule diff --git a/raveos-calamares-theme/PKGBUILD b/raveos-calamares-theme/PKGBUILD index b568a65..f516e5c 100644 --- a/raveos-calamares-theme/PKGBUILD +++ b/raveos-calamares-theme/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: AlexC <alexc@alexc.hu> pkgname=raveos-calamares-theme pkgver=2.0.0 -pkgrel=33 +pkgrel=34 pkgdesc="RaveOS Calamares Theme" arch=('any') url="https://git.rp1.hu/RaveOS" diff --git a/raveos-calamares-theme/etc/calamares/settings.conf b/raveos-calamares-theme/etc/calamares/settings.conf index 73f0843..6364cee 100755 --- a/raveos-calamares-theme/etc/calamares/settings.conf +++ b/raveos-calamares-theme/etc/calamares/settings.conf @@ -114,9 +114,6 @@ modules-search: [ local ] # YAML: list of lists of strings. instances: -- id: desktop - module: netinstall - config: netinstall-desktop.conf - id: drivers module: netinstall config: netinstall-drivers.conf @@ -155,7 +152,7 @@ sequence: - keyboard - partition - users - - netinstall@desktop + - desktopselect # - netinstall@apps # - tracking - summary |