diff --git a/Makefile b/Makefile
index 4df45f9..025dbdb 100755
--- a/Makefile
+++ b/Makefile
@@ -10,6 +10,23 @@ all:
# Slideshow
(cd lubuntu/branding/lubuntu/lang/ && make)
(cd ubuntustudio/branding/ubuntustudio/lang && make)
+ # basicwallpaper
+ (cd common/basicwallpaper && mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release && make)
+ # Lubuntu OEM setup stuff
+ (cd lubuntu && mkdir oemconfig && cd oemconfig && mkdir -p usr/bin && mkdir -p etc/calamares && mkdir -p usr/share/xsessions && mkdir -p usr/libexec && mkdir -p etc && mkdir -p usr/share/applications)
+ (cp lubuntu/calamares-logs-helper lubuntu/oemconfig/usr/bin/)
+ (cp lubuntu/oem/sddm.conf lubuntu/oemconfig/etc/)
+ (cp lubuntu/oem/sudoers.oem lubuntu/oemconfig/etc/ && chmod 400 lubuntu/oemconfig/etc/sudoers.oem)
+ (cp lubuntu/oem/calamares-oemfinish.sh lubuntu/oemconfig/usr/libexec/)
+ (cp lubuntu/oem/calamares-finish-oem lubuntu/oemconfig/usr/bin/)
+ (cp lubuntu/oem/calamares-finish-oem.desktop lubuntu/oemconfig/usr/share/applications/)
+ (cp -r lubuntu/branding lubuntu/oemconfig/etc/calamares/)
+ (cp -r lubuntu/oem/modules/ lubuntu/oemconfig/etc/calamares/)
+ (cp lubuntu/oem/settings.conf lubuntu/oemconfig/etc/calamares/)
+ (cp lubuntu/oem/lubuntu-oem-env/lubuntu-oem-environment.desktop lubuntu/oemconfig/usr/share/xsessions/)
+ (cp lubuntu/oem/lubuntu-oem-env/start-lubuntu-oem-env lubuntu/oemconfig/usr/libexec/)
+ (cp common/basicwallpaper/build/basicwallpaper lubuntu/oemconfig/usr/bin/)
+ (fakeroot bash -c "chown -R root:root lubuntu/oemconfig && tar cvzf lubuntu/oemconfig.tar.gz lubuntu/oemconfig")
# Kubuntu OEM setup stuff
(cd kubuntu && mkdir oemconfig && cd oemconfig && mkdir -p usr/bin && mkdir -p etc/calamares && mkdir -p usr/share/xsessions && mkdir -p usr/libexec && mkdir -p etc && mkdir -p usr/share/applications)
(cp kubuntu/calamares-logs-helper kubuntu/oemconfig/usr/bin/)
@@ -23,6 +40,7 @@ all:
(cp kubuntu/oem/settings.conf kubuntu/oemconfig/etc/calamares/)
(cp kubuntu/oem/kubuntu-oem-env/kubuntu-oem-environment.desktop kubuntu/oemconfig/usr/share/xsessions/)
(cp kubuntu/oem/kubuntu-oem-env/start-kubuntu-oem-env kubuntu/oemconfig/usr/libexec/)
+ (cp common/basicwallpaper/build/basicwallpaper kubuntu/oemconfig/usr/bin/)
(fakeroot bash -c "chown -R root:root kubuntu/oemconfig && tar cvzf kubuntu/oemconfig.tar.gz kubuntu/oemconfig")
# Get rid of the unnecessary files
find lubuntu/ -type f -iname "*.in" | xargs rm -f
@@ -32,4 +50,6 @@ all:
find kubuntu/ -type f -iname "*.in" | xargs rm -f
find kubuntu/ -type f -iname "Makefile" | xargs rm -f
rm -rf kubuntu/oemconfig
+ rm -rf lubuntu/oemconfig
+ rm -rf common/basicwallpaper/build
# vim:ts=4
diff --git a/common/basicwallpaper/CMakeLists.txt b/common/basicwallpaper/CMakeLists.txt
new file mode 100644
index 0000000..a736850
--- /dev/null
+++ b/common/basicwallpaper/CMakeLists.txt
@@ -0,0 +1,45 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(basicwallpaper VERSION 0.1 LANGUAGES CXX)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
+find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
+
+set(PROJECT_SOURCES
+ main.cpp
+ mainwindow.cpp
+ mainwindow.h
+ mainwindow.ui
+)
+
+if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
+ qt_add_executable(basicwallpaper
+ MANUAL_FINALIZATION
+ ${PROJECT_SOURCES}
+ )
+else()
+ add_executable(basicwallpaper
+ ${PROJECT_SOURCES}
+ )
+endif()
+
+target_link_libraries(basicwallpaper PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
+
+install(TARGETS basicwallpaper
+ BUNDLE DESTINATION .
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+)
+
+if(QT_VERSION_MAJOR EQUAL 6)
+ qt_finalize_executable(basicwallpaper)
+endif()
diff --git a/common/basicwallpaper/CMakeLists.txt.user b/common/basicwallpaper/CMakeLists.txt.user
new file mode 100644
index 0000000..4dadf67
--- /dev/null
+++ b/common/basicwallpaper/CMakeLists.txt.user
@@ -0,0 +1,288 @@
+
+
+
+
+
+ EnvironmentId
+ {c72e8e96-4d64-44b5-94c8-e16820d11b4b}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ false
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ false
+ 1
+ true
+ true
+ true
+ *.md, *.MD, Makefile
+ false
+ true
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop
+ Desktop
+ Desktop
+ {c8b6ccbc-b12c-473e-83be-23a4b6d2eb6e}
+ 0
+ 0
+ 0
+
+ Debug
+ -GUnix Makefiles
+-DCMAKE_BUILD_TYPE:STRING=Debug
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ /home/arraybolt3/Projects/build-basicwallpaper-Desktop-Debug
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Debug
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ Release
+ -GUnix Makefiles
+-DCMAKE_BUILD_TYPE:STRING=Release
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ /home/arraybolt3/Projects/build-basicwallpaper-Desktop-Release
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ RelWithDebInfo
+ -GUnix Makefiles
+-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ /home/arraybolt3/Projects/build-basicwallpaper-Desktop-RelWithDebInfo
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Release with Debug Information
+ CMakeProjectManager.CMakeBuildConfiguration
+
+
+ MinSizeRel
+ -GUnix Makefiles
+-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
+-DCMAKE_PROJECT_INCLUDE_BEFORE:PATH=%{IDE:ResourcePath}/package-manager/auto-setup.cmake
+-DQT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}
+-DCMAKE_PREFIX_PATH:STRING=%{Qt:QT_INSTALL_PREFIX}
+-DCMAKE_C_COMPILER:STRING=%{Compiler:Executable:C}
+-DCMAKE_CXX_COMPILER:STRING=%{Compiler:Executable:Cxx}
+ /home/arraybolt3/Projects/build-basicwallpaper-Desktop-MinSizeRel
+
+
+
+ all
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Build
+ Build
+ ProjectExplorer.BuildSteps.Build
+
+
+
+
+ clean
+
+ true
+ CMakeProjectManager.MakeStep
+
+ 1
+ Clean
+ Clean
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ false
+
+ Minimum Size Release
+ CMakeProjectManager.CMakeBuildConfiguration
+
+ 4
+
+
+ 0
+ Deploy
+ Deploy
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+
+ false
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+ true
+ true
+ true
+
+ 2
+
+ ProjectExplorer.CustomExecutableRunConfiguration
+
+ false
+ true
+ false
+ true
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 22
+
+
+ Version
+ 22
+
+
diff --git a/common/basicwallpaper/README.md b/common/basicwallpaper/README.md
new file mode 100644
index 0000000..753a8cd
--- /dev/null
+++ b/common/basicwallpaper/README.md
@@ -0,0 +1,3 @@
+# basicwallpaper: Shows an image in the background across all screens
+
+Copyright (C) 2024 Kubuntu Developers . Licensed under the GNU GPL version 3. This license applies to all files in the repository. Inspiration taken from lubuntu-installer-prompt and pcmanfm-qt.
diff --git a/common/basicwallpaper/main.cpp b/common/basicwallpaper/main.cpp
new file mode 100644
index 0000000..6cb543b
--- /dev/null
+++ b/common/basicwallpaper/main.cpp
@@ -0,0 +1,28 @@
+#include "mainwindow.h"
+
+#include
+#include
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+
+ QString wallpaperFile;
+
+ if (argc > 1) {
+ wallpaperFile = QString(argv[1]);
+ } else {
+ return 1;
+ }
+
+ for (QScreen *screen : QApplication::screens()) {
+ MainWindow *w = new MainWindow(wallpaperFile);
+ w->setWindowFlags(Qt::WindowStaysOnBottomHint);
+ w->setGeometry(screen->geometry());
+ w->showFullScreen();
+ w->show();
+ w->applyWallpaper();
+ }
+
+ return a.exec();
+}
diff --git a/common/basicwallpaper/mainwindow.cpp b/common/basicwallpaper/mainwindow.cpp
new file mode 100644
index 0000000..80aef87
--- /dev/null
+++ b/common/basicwallpaper/mainwindow.cpp
@@ -0,0 +1,43 @@
+#include "mainwindow.h"
+#include "./ui_mainwindow.h"
+
+#include
+#include
+
+MainWindow::MainWindow(const QString &wallpaperFile, QWidget *parent)
+ : QMainWindow(parent)
+ , ui(new Ui::MainWindow)
+{
+ ui->setupUi(this);
+ m_wallpaperFile = wallpaperFile;
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
+void MainWindow::applyWallpaper()
+{
+ QImage image(m_wallpaperFile);
+ if (!image.isNull()) {
+ qreal imgRatio = static_cast(image.width()) / image.height();
+ qreal screenRatio = static_cast(this->width()) / this->height();
+ QImage scaled;
+ if (imgRatio < screenRatio) {
+ scaled = image.scaledToWidth(this->width(), Qt::SmoothTransformation);
+ int yGap = (scaled.height() - this->height()) / 2;
+ scaled = scaled.copy(0, yGap, scaled.width(), this->height());
+ } else {
+ scaled = image.scaledToHeight(this->height(), Qt::SmoothTransformation);
+ int xGap = (scaled.width() - this->width()) / 2;
+ scaled = scaled.copy(xGap, 0, this->width(), scaled.height());
+ }
+ QPixmap bg = QPixmap::fromImage(scaled);
+ QPalette palette;
+ palette.setBrush(QPalette::Window, bg);
+ this->setPalette(palette);
+ } else {
+ qCritical() << "ERROR: Wallpaper does not exist!";
+ }
+}
diff --git a/common/basicwallpaper/mainwindow.h b/common/basicwallpaper/mainwindow.h
new file mode 100644
index 0000000..01e4188
--- /dev/null
+++ b/common/basicwallpaper/mainwindow.h
@@ -0,0 +1,24 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include
+
+QT_BEGIN_NAMESPACE
+namespace Ui { class MainWindow; }
+QT_END_NAMESPACE
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ MainWindow(const QString &wallpaperFile, QWidget *parent = nullptr);
+ ~MainWindow();
+
+ void applyWallpaper();
+
+private:
+ Ui::MainWindow *ui;
+ QString m_wallpaperFile;
+};
+#endif // MAINWINDOW_H
diff --git a/common/basicwallpaper/mainwindow.ui b/common/basicwallpaper/mainwindow.ui
new file mode 100644
index 0000000..b232854
--- /dev/null
+++ b/common/basicwallpaper/mainwindow.ui
@@ -0,0 +1,22 @@
+
+
+ MainWindow
+
+
+
+ 0
+ 0
+ 800
+ 600
+
+
+
+ MainWindow
+
+
+
+
+
+
+
+
diff --git a/debian/calamares-settings-kubuntu.lintian-overrides b/debian/calamares-settings-kubuntu.lintian-overrides
index 62cb493..846ded7 100644
--- a/debian/calamares-settings-kubuntu.lintian-overrides
+++ b/debian/calamares-settings-kubuntu.lintian-overrides
@@ -1,5 +1,7 @@
-# there will be no manpage in the foreseeable future
-calamares-settings-kubuntu: no-manual-page [usr/bin/calamares-logs-helper]
+# sudo will always be present in the target system
+calamares-settings-kubuntu: desktop-command-not-in-package sudo *
+# there will be no manpage for any of this in the foreseeable future
+calamares-settings-kubuntu: no-manual-page *
# We're just extracting a log file and preserving it for the user to look at
# after the installation, this is normal.
calamares-settings-kubuntu: uses-dpkg-database-directly [usr/bin/calamares-logs-helper]
diff --git a/debian/calamares-settings-lubuntu.install b/debian/calamares-settings-lubuntu.install
index 5fdb0df..1910d22 100644
--- a/debian/calamares-settings-lubuntu.install
+++ b/debian/calamares-settings-lubuntu.install
@@ -1,7 +1,12 @@
common/modules/pkgselect/pkgselect.qml etc/calamares/branding/lubuntu/
lubuntu/branding/ etc/calamares/
lubuntu/calamares-logs-helper usr/bin/
+lubuntu/calamares-launch-normal usr/bin/
lubuntu/lubuntu-calamares.desktop usr/share/applications/
lubuntu/lubuntu-installer.svg usr/share/icons/hicolor/scalable/apps/
lubuntu/modules/ etc/calamares/
lubuntu/settings.conf etc/calamares/
+lubuntu/oem/calamares-launch-oem usr/bin/
+lubuntu/oem/calamares-launch-oem.desktop usr/share/applications/
+lubuntu/oem/calamares-oemprep.sh usr/libexec/
+lubuntu/oemconfig.tar.gz etc/calamares/
diff --git a/debian/calamares-settings-lubuntu.lintian-overrides b/debian/calamares-settings-lubuntu.lintian-overrides
index 61667e4..53a5115 100644
--- a/debian/calamares-settings-lubuntu.lintian-overrides
+++ b/debian/calamares-settings-lubuntu.lintian-overrides
@@ -1,8 +1,7 @@
-# The .desktop file uses sudo to run the installer. sudo is included in the
-# system.
-desktop-command-not-in-package lxqt-sudo [usr/share/applications/lubuntu-calamares.desktop]
-# there will be no manpage in the foreseeable future
-calamares-settings-lubuntu: no-manual-page [usr/bin/calamares-logs-helper]
+# sudo will always exist in the target system
+calamares-settings-lubuntu: desktop-command-not-in-package sudo *
+# there will be no manpage for any of this in the foreseeable future
+calamares-settings-lubuntu: no-manual-page *
# We're just extracting a log file and preserving it for the user to look at
# after the installation, this is normal.
calamares-settings-lubuntu: uses-dpkg-database-directly [usr/bin/calamares-logs-helper]
diff --git a/debian/changelog b/debian/changelog
index 9b81761..a21d9cb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+calamares-settings-ubuntu (1:24.04.15) noble; urgency=medium
+
+ * Add Lubuntu OEM config.
+ * Fix a bug that could interfere with autologin setup during first-run
+ configuration after an OEM install.
+ * Add a simple wallpaper display engine for the first-run configuration
+ wizard.
+ * Don't run kdialog as root.
+ * Make OEM file cleanup more thorough.
+
+ -- Aaron Rainbolt Wed, 14 Feb 2024 12:11:34 -0600
+
calamares-settings-ubuntu (1:24.04.14) noble; urgency=medium
* Add Kubuntu OEM config.
diff --git a/debian/control b/debian/control
index 9bb306f..1bb0db8 100644
--- a/debian/control
+++ b/debian/control
@@ -35,7 +35,6 @@ Description: Kubuntu Calamares Settings and Branding
Package: calamares-settings-lubuntu
Architecture: all
Depends: calamares-settings-ubuntu-common (>= ${binary:Version}),
- lubuntu-installer-prompt (>= 1.1.1),
${misc:Depends}
Recommends: lubuntu-installer-prompt
Conflicts: calamares-settings-ubuntustudio, calamares-settings-kubuntu
@@ -49,12 +48,14 @@ Package: calamares-settings-ubuntu-common
Architecture: any
Depends: calamares (>= 3.2.14~),
cryptsetup,
+ kdialog,
keyutils,
python3,
python3-distro,
qml-module-qtquick-window2,
qml-module-qtquick2,
squashfs-tools,
+ sudo,
${misc:Depends},
${shlibs:Depends}
Description: Common Calamares Settings
diff --git a/debian/rules b/debian/rules
index 36cfc41..6e7a079 100755
--- a/debian/rules
+++ b/debian/rules
@@ -11,14 +11,14 @@ MODULES_DIR = "debian/calamares-settings-ubuntu-common/usr/lib/$(DEB_HOST_MULTIA
dh $@
override_dh_auto_configure:
- cd $(PKGSELECT) && mkdir build && cd build && cmake ..
+ (cd $(PKGSELECT) && mkdir build && cd build && cmake ..)
override_dh_auto_build:
make;
- cd $(PKGSELECT)/build && $(MAKE)
+ (cd $(PKGSELECT)/build && $(MAKE))
override_dh_auto_install:
- cd $(PKGSELECT)/build && $(MAKE) DESTDIR=$(CURDIR)/debian/calamares-settings-ubuntu-common/ install
+ (cd $(PKGSELECT)/build && $(MAKE) DESTDIR=$(CURDIR)/debian/calamares-settings-ubuntu-common/ install)
override_dh_missing:
dh_missing
diff --git a/kubuntu/oem/calamares-finish-oem b/kubuntu/oem/calamares-finish-oem
index 8dd2424..f8140e7 100755
--- a/kubuntu/oem/calamares-finish-oem
+++ b/kubuntu/oem/calamares-finish-oem
@@ -9,5 +9,13 @@ EOL
)";
if kdialog --warningyesno "${msg}"; then
- sed -i "s/Session=plasma/Session=kubuntu-oem-environment/" /etc/sddm.conf
+ sddm_file="$(cat <