Massive OEM mode overhaul for Lubuntu, tweaks and fixes for Kubuntu OEM mode

ubuntu/noble
Aaron Rainbolt 9 months ago
parent f777bbfa16
commit 4629bba99c

@ -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

@ -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()

@ -0,0 +1,288 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 6.0.2, 2024-02-14T12:14:09. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{c72e8e96-4d64-44b5-94c8-e16820d11b4b}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{c8b6ccbc-b12c-473e-83be-23a4b6d2eb6e}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="CMake.Build.Type">Debug</value>
<value type="QString" key="CMake.Initial.Parameters">-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}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/arraybolt3/Projects/build-basicwallpaper-Desktop-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="CMake.Build.Type">Release</value>
<value type="QString" key="CMake.Initial.Parameters">-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}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/arraybolt3/Projects/build-basicwallpaper-Desktop-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="CMake.Build.Type">RelWithDebInfo</value>
<value type="QString" key="CMake.Initial.Parameters">-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}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/arraybolt3/Projects/build-basicwallpaper-Desktop-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release with Debug Information</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<value type="QString" key="CMake.Build.Type">MinSizeRel</value>
<value type="QString" key="CMake.Initial.Parameters">-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}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/arraybolt3/Projects/build-basicwallpaper-Desktop-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Minimum Size Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">4</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

@ -0,0 +1,3 @@
# basicwallpaper: Shows an image in the background across all screens
Copyright (C) 2024 Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>. 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.

@ -0,0 +1,28 @@
#include "mainwindow.h"
#include <QApplication>
#include <QScreen>
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();
}

@ -0,0 +1,43 @@
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QDebug>
#include <QImage>
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<qreal>(image.width()) / image.height();
qreal screenRatio = static_cast<qreal>(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!";
}
}

@ -0,0 +1,24 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
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

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar"/>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

@ -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]

@ -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/

@ -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]

12
debian/changelog vendored

@ -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 <arraybolt3@ubuntu.com> Wed, 14 Feb 2024 12:11:34 -0600
calamares-settings-ubuntu (1:24.04.14) noble; urgency=medium
* Add Kubuntu OEM config.

3
debian/control vendored

@ -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

6
debian/rules vendored

@ -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

@ -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 <<EOL
[Autologin]
Session=kubuntu-oem-environment
echo 'User=oem
EOL
)"
echo "$sddm_file" | sudo tee /etc/sddm.conf
fi
kdialog --msgbox 'Done. The account setup wizard will run on next bootup.'

@ -2,7 +2,7 @@
Type=Application
Version=1.0
Name=Finish OEM preparation
Exec=sudo /usr/bin/calamares-finish-oem
Exec=/usr/bin/calamares-finish-oem
Icon=system-software-install
Terminal=false
StartupNotify=true

@ -2,6 +2,6 @@
#
# Remove OEM files from the system.
rm -rf /etc/calamares /usr/bin/basicwallpaper /usr/bin/calamares-finish-oem /usr/share/applications/calamares-finish-oem.desktop /etc/sddm.conf /usr/share/xsessions/kubuntu-oem-environment.desktop /usr/libexec/start-kubuntu-oem-env /etc/sudoers
rm -rf /etc/calamares /usr/bin/basicwallpaper /usr/bin/calamares-finish-oem /usr/share/applications/calamares-finish-oem.desktop /usr/share/xsessions/kubuntu-oem-environment.desktop /usr/libexec/start-kubuntu-oem-env /etc/sudoers /usr/bin/calamares-logs-helper /usr/libexec/calamares-oemfinish.sh
mv /etc/sudoers.orig /etc/sudoers

@ -2,6 +2,7 @@
# Starts the Kubuntu OEM Environment.
export QT_STYLE_OVERRIDE="Breeze"
sudo rm /etc/sddm.conf # Ensure this session only runs on first bootup
/usr/bin/kwin_x11 &
/usr/bin/basicwallpaper /usr/share/wallpapers/Next/contents/3840x2160.png &
sudo -E /usr/bin/calamares -D8 # This is intentionally *not* backgrounded.

@ -18,8 +18,8 @@ sequence:
- keyboard
- localecfg
- packages
- users
- shellprocess@oemfinish
- users
- removeuser
- show:
- finished

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@ -0,0 +1,15 @@
#!/bin/bash
#
# Launch Calamares normally.
if [ -e '/etc/calamares/OEM_MODE_ACTIVATED' ]; then
msg="$(cat <<EOL
The installer was previously run in OEM mode. Please reboot to reset the
configuration and try again.
EOL
)";
kdialog --msgbox "${msg}";
exit 1;
fi
calamares -D8;

@ -3,7 +3,7 @@ Type=Application
Version=1.0
_Name=Install Lubuntu 24.04 LTS
_GenericName=Install Lubuntu
Exec=/usr/libexec/lubuntu-installer
Exec=sudo -E /usr/bin/calamares-launch-normal
_Comment=Calamares — System Installer
Icon=lubuntu-installer
Terminal=false

@ -0,0 +1,2 @@
---
batch-identifier: lubuntu-2404-${DATE}

@ -0,0 +1,5 @@
---
dontChroot: true
timeout: 120
script:
- "/usr/libexec/calamares-oemprep.sh ${ROOT}"

@ -0,0 +1,31 @@
---
doAutologin: false
setRootPassword: false
sudoersGroup: sudo
defaultGroups:
- adm
- cdrom
- dip
- lpadmin
- plugdev
- name: sambashare
must_exist: false
system: true
- sudo
passwordRequirements:
nonempty: true
minLength: 0
maxLength: 0
# Explicitly set the shell instead of deferring to Calamares. We have a platform
# expectation derived from Ubuntu here.
user:
shell: /bin/bash
forbidden_names: [ root ]
# Force the user of an OEM user
presets:
fullName:
value: "OEM configuration"
editable: false
loginName:
value: "oem"
editable: false

@ -0,0 +1,21 @@
#!/bin/bash
msg="$(cat <<EOL
You are about to disable OEM configuration mode. The system will boot into the
account setup wizard the next time it is started.
Are you sure you want to continue?
EOL
)";
if kdialog --warningyesno "${msg}"; then
sddm_file="$(cat <<EOL
[Autologin]
Session=lubuntu-oem-environment
echo 'User=oem
EOL
)"
echo "$sddm_file" | sudo tee /etc/sddm.conf
fi
kdialog --msgbox 'Done. The account setup wizard will run on next bootup.'

@ -0,0 +1,10 @@
[Desktop Entry]
Type=Application
Version=1.0
Name=Finish OEM preparation
Exec=/usr/bin/calamares-finish-oem
Icon=system-software-install
Terminal=false
StartupNotify=true
Categories=Qt;System;
Keywords=installer;calamares;system;

@ -0,0 +1,42 @@
#!/bin/bash
#
# Enables OEM installaiton mode in Calamares.
if [ -e '/etc/calamares/OEM_MODE_ACTIVATED' ]; then
calamares -D8;
exit;
fi
msg="$(cat <<EOL
You are about to install the OS in OEM mode. This will prepare the system for
distribution to an end user, providing them with an account setup wizard. If
you do not need this capability, please cancel and use the normal install
method.
Are you sure you want to continue?
EOL
)";
if kdialog --warningyesno "${msg}"; then
# Tweak branding to make it clear that OEM installation mode is active
cp /etc/calamares/branding/lubuntu/welcome-oem.png /etc/calamares/branding/lubuntu/welcome.png;
# Don't remove Calamares from the installed system.
sed -i '/- calamares$/d' /etc/calamares/modules/packages.conf;
# Enable oemid module, backslashes are needed for proper indentation
sed -i "/- welcome$/a \ \ - oemid" /etc/calamares/settings.conf;
# Enable OEM prep module
sed -i "/- packages$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
# Force the user of an OEM configuration user
cp /etc/calamares/modules/users.conf.oem /etc/calamares/modules/users.conf;
# Drop a file so that it can be seen that OEM installation mode is already
# active
touch /etc/calamares/OEM_MODE_ACTIVATED;
# Launch Calamares
calamares -D8;
fi

@ -0,0 +1,10 @@
[Desktop Entry]
Type=Application
Version=1.0
Name=Install Lubuntu 24.04 LTS (OEM mode)
Exec=sudo -E /usr/bin/calamares-launch-oem
Icon=system-software-install
Terminal=false
StartupNotify=true
Categories=Qt;System;
Keywords=installer;calamares;system;

@ -0,0 +1,7 @@
#!/bin/bash
#
# Remove OEM files from the system.
rm -rf /etc/calamares /usr/bin/basicwallpaper /usr/bin/calamares-finish-oem /usr/share/applications/calamares-finish-oem.desktop /usr/share/xsessions/lubuntu-oem-environment.desktop /usr/libexec/start-lubuntu-oem-env /etc/sudoers /usr/bin/calamares-logs-helper /usr/libexec/calamares-oemfinish.sh
mv /etc/sudoers.orig /etc/sudoers

@ -0,0 +1,11 @@
#!/bin/bash
#
# Puts the installed system into OEM configuration mode. Argument 1 is the
# path to the installed system's root directory.
# Install the OEM configuration for Calamares
tar xvzf /etc/calamares/oemconfig.tar.gz -C "$1" --strip-components=2;
# Enable passwordless sudo for the OEM user, making sure this can be undone later
mv "$1"/etc/sudoers "$1"/etc/sudoers.orig
mv "$1"/etc/sudoers.oem "$1"/etc/sudoers

@ -0,0 +1,5 @@
[Desktop Entry]
Exec=/usr/libexec/start-lubuntu-oem-env
Name=Lubuntu OEM Environment
Comment=Starts the Lubuntu OEM Environment
Type=Application

@ -0,0 +1,20 @@
#!/bin/bash
# Starts the Lubuntu OEM Environment.
# This is pretty overkill, but don't remove anything without testing
export XDG_CONFIG_DIRS="/etc/xdg/xdg-Lubuntu:"$XDG_CONFIG_DIRS
export XDG_DATA_DIRS="/usr/share/Lubuntu:"$XDG_DATA_DIRS
export XDG_SESSION_CLASS="user"
export XDG_SESSION_DESKTOP="Lubuntu"
export DESKTOP_SESSION="Lubuntu"
export QT_STYLE_OVERRIDE="Breeze"
export QT_QPA_PLATFORMTHEME="lxqt"
sudo rm /etc/sddm.conf # make sure this session is only booted into once
/usr/bin/openbox &
/usr/bin/basicwallpaper /usr/share/lubuntu/wallpapers/lubuntu-default-wallpaper.png &
sudo -E /usr/bin/calamares -D8 # This is intentionally *not* backgrounded.
# If it exits...
killall basicwallpaper
killall openbox
startlxqt

@ -0,0 +1,3 @@
---
restartNowMode: user-checked
restartNowCommand: "systemctl -i reboot"

@ -0,0 +1,8 @@
---
region: "America"
zone: "New_York"
localeGenPath: "/etc/locale.gen"
geoip:
style: "xml"
url: "https://geoip.ubuntu.com/lookup"
selector: "TimeZone"

@ -0,0 +1,8 @@
---
# Whether to create /etc/machine-id for systemd.
systemd: true
# Whether to create /var/lib/dbus/machine-id for D-Bus.
dbus: true
# Whether /var/lib/dbus/machine-id should be a symlink to /etc/machine-id
# (ignored if dbus is false, or if there is no /etc/machine-id to point to).
dbus-symlink: true

@ -0,0 +1,5 @@
update_db: true
backend: apt
operations:
- remove:
- calamares

@ -0,0 +1,5 @@
---
dontChroot: true
timeout: 120
script:
- "/usr/libexec/calamares-oemfinish.sh ${ROOT}"

@ -0,0 +1,23 @@
---
doAutologin: false
setRootPassword: false
sudoersGroup: sudo
defaultGroups:
- adm
- cdrom
- dip
- lpadmin
- plugdev
- name: sambashare
must_exist: false
system: true
- sudo
passwordRequirements:
nonempty: true
minLength: 0
maxLength: 0
# Explicitly set the shell instead of deferring to Calamares. We have a platform
# expectation derived from Ubuntu here.
user:
shell: /bin/bash
forbidden_names: [ root ]

@ -0,0 +1,26 @@
---
showSupportUrl: true
showKnownIssuesUrl: true
showReleaseNotesUrl: true
# WARNING: Calamares documentation indicates that showDonateUrl will be moved to branding in the future. Be prepared for things to break right here.
showDonateUrl: https://lubuntu.me/donate/
requirements:
requiredStorage: 8
requiredRam: 0.5
internetCheckUrl: https://lubuntu.me
check:
- storage
- ram
- power
- internet
- root
required:
- root
- storage
- ram
geoip:
style: "xml"
url: "https://geoip.ubuntu.com/lookup"
selector: "CountryCode"

@ -0,0 +1,3 @@
[Autologin]
Session=Lubuntu
User=oem

@ -0,0 +1,32 @@
---
modules-search: [ local ]
instances:
- id: oemfinish
module: shellprocess
config: shellprocess_oemfinish.conf
sequence:
- show:
- welcome
- locale
- keyboard
- users
- exec:
- machineid
- locale
- keyboard
- localecfg
- packages
- shellprocess@oemfinish
- users
- removeuser
- show:
- finished
branding: lubuntu
prompt-install: true
dont-chroot: true
oem-setup: true
disable-cancel: true
disable-cancel-during-exec: true

@ -0,0 +1,56 @@
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
Defaults use_pty
# This preserves proxy settings from user environments of root
# equivalent users (group sudo)
#Defaults:%sudo env_keep += "http_proxy https_proxy ftp_proxy all_proxy no_proxy"
# This allows running arbitrary commands, but so does ALL, and it means
# different sudoers have their choice of editor respected.
#Defaults:%sudo env_keep += "EDITOR"
# Completely harmless preservation of a user preference.
#Defaults:%sudo env_keep += "GREP_COLOR"
# While you shouldn't normally run git as root, you need to with etckeeper
#Defaults:%sudo env_keep += "GIT_AUTHOR_* GIT_COMMITTER_*"
# Per-user preferences; root won't have sensible values for them.
#Defaults:%sudo env_keep += "EMAIL DEBEMAIL DEBFULLNAME"
# "sudo scp" or "sudo rsync" should be able to use your SSH agent.
#Defaults:%sudo env_keep += "SSH_AGENT_PID SSH_AUTH_SOCK"
# Ditto for GPG agent
#Defaults:%sudo env_keep += "GPG_AGENT_INFO"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "@include" directives:
@includedir /etc/sudoers.d
# OEM CONFIGURATION ONLY: oem user has passwordless sudo
oem ALL=(ALL:ALL) NOPASSWD: ALL

@ -26,6 +26,9 @@ instances:
- id: pkgselect_snap_action
module: contextualprocess
config: pkgselect_snap_context.conf
- id: oemprep
module: shellprocess
config: shellprocess_oemprep.conf
sequence:
- show:

Loading…
Cancel
Save