Compare commits

..

2 Commits

Author SHA1 Message Date
Erich Eickmeyer 52aa0cc771 Don't let people make a user with a blank password
1 year ago
Erich Eickmeyer 3bfd2f6c28 Update from diffs
2 years ago

@ -5,69 +5,13 @@
all:
# Desktop file
(cd lubuntu/po/ && make)
(cd kubuntu/po/ && make)
(cd ubuntuunity/po && make)
(cd ubuntustudio/po/ && make)
# Slideshow
(cd lubuntu/branding/lubuntu/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 && mkdir -p home/oem/Desktop)
(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/)
(cp lubuntu/oem/calamares-finish-oem.desktop lubuntu/oemconfig/home/oem/Desktop/)
(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 && mkdir -p home/oem/Desktop)
(cp kubuntu/calamares-logs-helper kubuntu/oemconfig/usr/bin/)
(cp kubuntu/oem/sddm.conf kubuntu/oemconfig/etc/)
(cp kubuntu/oem/sudoers.oem kubuntu/oemconfig/etc/ && chmod 400 kubuntu/oemconfig/etc/sudoers.oem)
(cp kubuntu/oem/calamares-oemfinish.sh kubuntu/oemconfig/usr/libexec/)
(cp kubuntu/oem/calamares-finish-oem kubuntu/oemconfig/usr/bin/)
(cp kubuntu/oem/calamares-finish-oem.desktop kubuntu/oemconfig/usr/share/applications/)
(cp -r kubuntu/branding kubuntu/oemconfig/etc/calamares/)
(cp -r kubuntu/oem/modules/ kubuntu/oemconfig/etc/calamares/)
(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/)
(cp kubuntu/oem/calamares-finish-oem.desktop kubuntu/oemconfig/home/oem/Desktop/)
(fakeroot bash -c "chown -R root:root kubuntu/oemconfig && tar cvzf kubuntu/oemconfig.tar.gz kubuntu/oemconfig")
# Ubuntu Unity OEM setup stuff
(cd ubuntuunity && mkdir oemconfig && cd oemconfig && mkdir -p usr/bin && mkdir -p etc/calamares && mkdir -p usr/share/xsessions && mkdir -p usr/libexec && mkdir -p etc/lightdm && mkdir -p usr/share/applications && mkdir -p home/oem/Desktop)
(cp ubuntuunity/calamares-logs-helper ubuntuunity/oemconfig/usr/bin/)
(cp ubuntuunity/oem/lightdm.conf ubuntuunity/oemconfig/etc/lightdm/)
(cp ubuntuunity/oem/sudoers.oem ubuntuunity/oemconfig/etc/ && chmod 400 kubuntu/oemconfig/etc/sudoers.oem)
(cp ubuntuunity/oem/calamares-oemfinish.sh ubuntuunity/oemconfig/usr/libexec/)
(cp ubuntuunity/oem/calamares-finish-oem ubuntuunity/oemconfig/usr/bin/)
(cp ubuntuunity/oem/calamares-finish-oem.desktop ubuntuunity/oemconfig/usr/share/applications/)
(cp -r ubuntuunity/branding ubuntuunity/oemconfig/etc/calamares/)
(cp -r ubuntuunity/oem/modules/ ubuntuunity/oemconfig/etc/calamares/)
(cp ubuntuunity/oem/settings.conf ubuntuunity/oemconfig/etc/calamares/)
(cp ubuntuunity/oem/ubuntu-unity-oem-env/ubuntu-unity-oem-environment.desktop ubuntuunity/oemconfig/usr/share/xsessions/)
(cp ubuntuunity/oem/ubuntu-unity-oem-env/start-ubuntu-unity-oem-env ubuntuunity/oemconfig/usr/libexec/)
(cp common/basicwallpaper/build/basicwallpaper ubuntuunity/oemconfig/usr/bin/)
(cp ubuntuunity/oem/calamares-finish-oem.desktop ubuntuunity/oemconfig/home/oem/Desktop/)
(fakeroot bash -c "chown -R root:root ubuntuunity/oemconfig && tar cvzf ubuntuunity/oemconfig.tar.gz ubuntuunity/oemconfig")
(cd ubuntustudio/branding/ubuntustudio/lang && make)
# Get rid of the unnecessary files
find lubuntu/ -type f -iname "*.in" | xargs rm -f
find lubuntu/ -type f -iname "Makefile" | xargs rm -f
find kubuntu/ -type f -iname "*.in" | xargs rm -f
find kubuntu/ -type f -iname "Makefile" | xargs rm -f
find ubuntuunity/ -type f -iname "*.in" | xargs rm -f
find ubuntuunity/ -type f -iname "Makefile" | xargs rm -f
rm -rf kubuntu/oemconfig
rm -rf lubuntu/oemconfig
rm -rf ubuntuunity/oemconfig
rm -rf common/basicwallpaper/build
find ubuntustudio/ -type f -iname "*.in" | xargs rm -f
find ubuntustudio/ -type f -iname "Makefile" | xargs rm -f
# vim:ts=4

@ -6,8 +6,8 @@ If you want to add a new package for your flavor, here's how to do it:
2. Edit files and rename the branding directory for your flavor. All of the
configuration files are pretty self-explanatory, but they're documented
well upstream, so it shouldn't be hard to put your own spin on things.
3. Create a new binary package, and *make sure to Provides+Conflicts against
`calamares-settings-ubuntu-flavor`*. This needs to be done because all
3. Create a new binary package, and *make sure to Conflicts against all other
binary packages in this source package*. This needs to be done because all
subdirectories are installed in the same location, so this makes sure that
nobody tries to install any two binary packages at the same time.

@ -1,24 +0,0 @@
# Ubuntu Studio's Calamares Branding (archived)
This directory houses the branding Ubuntu Studio used when Calamares was still
being used as the installer, along with some additional potentially useful
configuration fragments. Ubuntu Studio has since switched to using
ubuntu-desktop-provision, and thus most of the actual configuration has been
removed.
Unless otherwise stated, the contents of this directory are licensed as follows:
Copyright (C) 2020 Ubuntu Studio Developers <ubuntu-studio-devel@lists.ubuntu.com>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 3
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this software. If not, see <http://www.gnu.org/licenses/>.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 KiB

@ -1,45 +0,0 @@
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()

@ -1,288 +0,0 @@
<?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>

@ -1,3 +0,0 @@
# 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.

@ -1,28 +0,0 @@
#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();
}

@ -1,43 +0,0 @@
#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!";
}
}

@ -1,24 +0,0 @@
#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

@ -1,22 +0,0 @@
<?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,3 +0,0 @@
#!/bin/bash
setxkbmap -query | awk '/layout/{ print $2 }' > /dev/shm/fixconkeys-layout
cp /usr/libexec/fixconkeys-part2 ${1}/usr/libexec/fixconkeys-part2

@ -1,5 +0,0 @@
#!/bin/bash
loadkeys "$(cat /dev/shm/fixconkeys-layout)"
setupcon --save-only
update-initramfs -c -k all
rm /usr/libexec/fixconkeys-part2

@ -6,8 +6,8 @@ baseUrl: archive.ubuntu.com
# URL used for IP address lookup
geoip:
style: "xml"
url: "https://geoip.ubuntu.com/lookup"
style: "json"
url: "https://ipapi.co/json"
# Distribution that this is based off of.
# This is so we can make safe assumptions for the contents of

@ -1,6 +1,6 @@
#!/usr/bin/env python3
# Copyright (C) 2018-2023 Simon Quigley <tsimonq2@ubuntu.com>
# Copyright (C) 2018 Simon Quigley <tsimonq2@ubuntu.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -19,108 +19,150 @@ import json
import libcalamares
from time import strftime
import urllib.request
from urllib.error import HTTPError, URLError
from urllib.error import HTTPError
from urllib.error import URLError
import socket
import logging
import distro
import xml.etree.ElementTree as ET
from os import remove
SUBDOMAINS_BY_COUNTRY_CODE = {
"US": "us.", "AU": "au.", "SE": "no.", "NO": "no.",
"NZ": "nz.", "NL": "nl.", "KR": "kr.", "DE": "de.",
"GE": "ge.", "PF": "pf.", "CZ": "cz.", "HR": "hr."
}
def get_sources_template():
return """# Automatically generated by Calamares on {date}.
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of {distro}.
## Ubuntu distribution repository
##
## The following settings can be adjusted to configure which packages to use from Ubuntu.
## Mirror your choices (except for URIs and Suites) in the security section below to
## ensure timely security updates.
##
## Types: Append deb-src to enable the fetching of source package.
## URIs: A URL to the repository (you may add multiple URLs)
## Suites: The following additional suites can be configured
## <name>-updates - Major bug fix updates produced after the final release of the
## distribution.
## <name>-backports - software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
## Components: Aside from main, the following components can be added to the list
## restricted - Software that may not be under a free license, or protected by patents.
## universe - Community maintained packages.
## Software from this repository is only maintained and supported by Canonical
## for machines with Ubuntu Pro subscriptions. Without Ubuntu Pro, the Ubuntu
## community provides best-effort security maintenance.
## multiverse - Community maintained of restricted. Software from this repository is
## ENTIRELY UNSUPPORTED by the Ubuntu team, and may not be under a free
## licence. Please satisfy yourself as to your rights to use the software.
## Also, please note that software in multiverse WILL NOT receive any
## review or updates from the Ubuntu security team.
##
## See the sources.list(5) manual page for further settings.
Types: deb
URIs: {url}
Suites: {codename} {codename}-updates {codename}-backports
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
## Ubuntu security updates. Aside from URIs and Suites,
## this should mirror your choices in the previous section.
Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: {codename}-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
"""
def get_country_code():
if not libcalamares.globalstorage.value("hasInternet"):
from lsb_release import get_distro_information
global sources
sources = """# Automatically generated by Calamares on DATE.
# Lines starting with "deb" are mandatory, while lines starting with "deb-src"
# are for more detailed package information.
## See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
## newer versions of DISTRIBUTION.
deb URL/ubuntu/ CODENAME main restricted
# deb-src URL/ubuntu/ CODENAME main restricted
## Major bug fix updates produced after the final release of DISTRIBUTION.
## Have you noticed a regression? Please report it!
## https://wiki.ubuntu.com/StableReleaseUpdates#Regressions
deb URL/ubuntu/ CODENAME-updates main restricted
# deb-src URL/ubuntu/ CODENAME-updates main restricted
## Software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu team.
## Also, please note that software in Universe WILL NOT receive any review or
## updates from the Ubuntu security team directly. Updates in this repository
## are provided by volunteers, but most come from Debian.
deb URL/ubuntu/ CODENAME universe
# deb-src URL/ubuntu/ CODENAME universe
deb URL/ubuntu/ CODENAME-updates universe
# deb-src URL/ubuntu/ CODENAME-updates universe
## Software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu team,
## and may not be under a free licence. Please satisfy yourself as your rights
## to use the software. Also, please note that software in Multiverse WILL NOT
## receive any review or updates from the Ubuntu security team directly.
deb URL/ubuntu/ CODENAME multiverse
# deb-src URL/ubuntu/ CODENAME multiverse
deb URL/ubuntu/ CODENAME-updates multiverse
# deb-src URL/ubuntu/ CODENAME-updates multiverse
## Software from this repository contains tested security updates from the
## Ubuntu security team.
deb http://security.ubuntu.com/ubuntu CODENAME-security main restricted
# deb-src http://security.ubuntu.com/ubuntu CODENAME-security main restricted
deb http://security.ubuntu.com/ubuntu CODENAME-security universe
# deb-src http://security.ubuntu.com/ubuntu CODENAME-security universe
deb http://security.ubuntu.com/ubuntu CODENAME-security multiverse
# deb-src http://security.ubuntu.com/ubuntu CODENAME-security multiverse
## Software from this repository may not have been tested as extensively as
## software contained in the main release, although it includes newer versions
## of some applications which may provide useful features. Also, please note
## that software in Backports WILL NOT receive any review or updates from the
## Ubuntu security team.
deb URL/ubuntu/ CODENAME-backports main restricted universe multiverse
# deb-src URL/ubuntu/ CODENAME-backports main restricted universe multiverse
## Uncomment the following two lines to add software from Canonical's
## "partner" repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu CODENAME partner
# deb-src http://archive.canonical.com/ubuntu CODENAME partner"""
SUBDOMAINS_BY_COUNTRY_CODE = {"US": "us.",
"AU": "au.",
"SE": "no.",
"NO": "no.",
"NZ": "nz.",
"NL": "nl.",
"KR": "kr.",
"DE": "de.",
"GE": "ge.",
"PF": "pf.",
"CZ": "cz.",
"HR": "hr."}
def getcountrycode():
"""
Return the two-letter country code or an empty string.
Tries to determine the country code based on the public IP address,
if the device is connected to the Internet. Otherwise it returns
an empty string.
"""
if libcalamares.globalstorage.value("hasInternet"):
geoipurl = libcalamares.job.configuration["geoip"]["url"]
try:
with urllib.request.urlopen(geoipurl, timeout=75) as http_response:
localedata = json.loads(http_response.read().decode())
except HTTPError as http_error:
logging.error("Data not retrieved because %s - URL: %s",
http_error, geoipurl)
except URLError as url_error:
if isinstance(url_error.reason, socket.timeout):
logging.error("Socket timed out - URL %s", geoipurl)
else:
logging.error("Non-timeout protocol error.")
else:
logging.info("Country successfully determined.")
return localedata["country"]
else:
return ""
geoip_config = libcalamares.job.configuration["geoip"]
try:
with urllib.request.urlopen(geoip_config["url"], timeout=75) as resp:
if geoip_config["style"] == "json":
return json.loads(resp.read().decode())["country_code"]
elif geoip_config["style"] == "xml":
return ET.parse(resp).getroot().find("CountryCode").text
except (HTTPError, URLError, socket.timeout):
logging.error("Failed to get country code.")
return ""
def get_subdomain_by_country(country_code):
return SUBDOMAINS_BY_COUNTRY_CODE.get(country_code, "")
def get_subdomain_by_country(countrycode):
"""Return the subdomain for the given countrycode
or an empty string.
"""
if countrycode in SUBDOMAINS_BY_COUNTRY_CODE.keys():
return SUBDOMAINS_BY_COUNTRY_CODE[countrycode]
else:
return ""
def write_file(path, content):
with open(path, "w") as f:
f.write(content)
def getcodename():
"""Return the codename of the distribution, similar to lsb_release -cs"""
return get_distro_information()["CODENAME"]
def run():
country_code = get_country_code()
subdomain = get_subdomain_by_country(country_code)
base_url = "http://{}{}/ubuntu".format(subdomain, libcalamares.job.configuration["baseUrl"])
codename = distro.codename()
def changesources(subdomain):
"""Replace the placeholders and then create the sources.list"""
distro = libcalamares.job.configuration["distribution"]
url = "http://{}{}".format(subdomain,
libcalamares.job.configuration["baseUrl"])
global sources
sources = sources.replace("DISTRIBUTION", distro)
sources = sources.replace("CODENAME", getcodename())
sources = sources.replace("URL", url)
sources = sources.replace("DATE", strftime("%Y-%m-%d"))
root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
filepath = libcalamares.globalstorage.value("rootMountPoint")
filepath += "/etc/apt/sources.list"
with open(filepath, "r+") as sourcesfile:
sourcesfile.seek(0)
sourcesfile.write(sources)
sourcesfile.truncate()
sources = get_sources_template().format(date=strftime("%Y-%m-%d"), distro=libcalamares.job.configuration["distribution"], url=base_url, codename=codename)
write_file(f"{root_mount_point}/etc/apt/sources.list.d/ubuntu.sources", sources)
remove(f"{root_mount_point}/etc/apt/sources.list")
libcalamares.globalstorage.insert("mirrorURL", base_url)
libcalamares.globalstorage.insert("ubuntuCodename", codename)
def run():
"""Autoselect a mirror and create the sources.list file."""
countrycode = getcountrycode()
subdomain = get_subdomain_by_country(countrycode)
changesources(subdomain)

@ -1,10 +0,0 @@
---
dontChroot: true
timeout: 10
firmwareType:
efi:
- -cp /cdrom/casper/vmlinuz ${ROOT}/boot/vmlinuz-$(uname -r)
- -mkdir -pv ${ROOT}/media/cdrom
- -mount --bind /cdrom ${ROOT}/media/cdrom
bios:
- -cp /cdrom/casper/vmlinuz ${ROOT}/boot/vmlinuz-$(uname -r)

@ -1,2 +0,0 @@
crypttabOptions: luks,keyscript=/bin/cat
efiMountOptions: umask=0077

@ -1,38 +0,0 @@
extraMounts:
- device: proc
fs: proc
mountPoint: /proc
- device: sys
fs: sysfs
mountPoint: /sys
- device: /dev
mountPoint: /dev
options: [ bind ]
- device: tmpfs
fs: tmpfs
mountPoint: /run
- device: /run/udev
mountPoint: /run/udev
options: [ bind ]
- device: efivarfs
fs: efivarfs
mountPoint: /sys/firmware/efi/efivars
efi: true
- device: /run/systemd/resolve
mountPoint: /run/systemd/resolve
options: [ bind ]
mountOptions:
- filesystem: default
options: [ defaults ]
- filesystem: btrfs
options: [ defaults, noatime, autodefrag ]
ssdOptions: [ discard, compress=lzo ]
- filesystem: ext4
ssdOptions: [ discard ]
- filesystem: jfs
ssdOptions: [ discard ]
- filesystem: xfs
ssdOptions: [ discard ]
- filesystem: swap
ssdOptions: [ discard ]

@ -1,31 +0,0 @@
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
include(FeatureSummary)
set( CMAKE_CXX_STANDARD 17 )
set( CMAKE_CXX_STANDARD_REQUIRED ON )
set( CALAMARES_VERSION_REQUIRED 3.3.0 )
find_package(ECM ${ECM_VERSION} NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
include(KDEInstallDirs)
find_package(KF5 REQUIRED COMPONENTS CoreAddons)
find_package(Calamares ${CALAMARES_VERSION_REQUIRED} NO_CMAKE_PACKAGE_REGISTRY)
if (NOT TARGET Calamares::calamares OR NOT TARGET Calamares::calamaresui)
find_package(Calamares ${CALAMARES_VERSION_REQUIRED} REQUIRED)
endif()
message(STATUS "Found Calamares version ${Calamares_VERSION}")
message(STATUS " libraries ${Calamares_LIB_DIRS}")
message(STATUS "")
calamares_add_plugin( pkgselect
TYPE viewmodule
EXPORT_MACRO PLUGINDLLEXPORT_PRO
SOURCES
PackageSelectViewStep.cpp
UI
pkgselect.ui
SHARED_LIB
)

@ -1,208 +0,0 @@
#include "PackageSelectViewStep.h"
#include "JobQueue.h"
#include "GlobalStorage.h"
#include "Branding.h"
#include "network/Manager.h"
#include <QVariantMap>
PackageSelectViewStep::PackageSelectViewStep( QObject* parent )
: Calamares::ViewStep( parent ),
m_packageSelections(QVariantMap()),
ui(new Ui::pkgselect)
{
m_widget = new QWidget();
ui->setupUi(m_widget);
}
PackageSelectViewStep::~PackageSelectViewStep()
{
delete ui;
delete m_widget;
}
QString
PackageSelectViewStep::prettyName() const
{
return tr( "Customize" );
}
bool PackageSelectViewStep::exists_and_true(const QString& key) const
{
return m_packageSelections.contains(key) && m_packageSelections[key].toBool() == true;
}
QWidget* PackageSelectViewStep::widget()
{
return m_widget;
}
Calamares::JobList PackageSelectViewStep::jobs() const
{
return Calamares::JobList();
}
bool PackageSelectViewStep::isNextEnabled() const
{
return true;
}
bool PackageSelectViewStep::isBackEnabled() const
{
return true;
}
bool PackageSelectViewStep::isAtBeginning() const
{
return true;
}
bool PackageSelectViewStep::isAtEnd() const
{
return true;
}
void PackageSelectViewStep::onActivate()
{
// Connect the Minimal Installation radio button
connect(ui->minimal_button, &QRadioButton::toggled, this, [this](bool checked) {
Calamares::Network::Manager network;
if (checked && network.hasInternet()) {
ui->extraparty_scroll->setVisible(false);
ui->extraparty_text->setVisible(false);
ui->mandatory_warning_label->setVisible(false);
ui->element_button->setChecked(false);
ui->thunderbird_button->setChecked(false);
ui->virtmanager_button->setChecked(false);
ui->krita_button->setChecked(false);
ui->element_button->setEnabled(false);
ui->thunderbird_button->setEnabled(false);
ui->virtmanager_button->setEnabled(false);
ui->krita_button->setEnabled(false);
}
});
// Connect the Normal Installation radio button
connect(ui->normal_button, &QRadioButton::toggled, this, [this](bool checked) {
Calamares::Network::Manager network;
if (checked && network.hasInternet()) {
ui->extraparty_scroll->setVisible(true);
ui->extraparty_text->setVisible(true);
ui->mandatory_warning_label->setVisible(true);
ui->element_button->setChecked(false);
ui->thunderbird_button->setChecked(false);
ui->virtmanager_button->setChecked(false);
ui->krita_button->setChecked(false);
ui->element_button->setEnabled(true);
ui->thunderbird_button->setEnabled(true);
ui->virtmanager_button->setEnabled(true);
ui->krita_button->setEnabled(true);
}
});
// Connect the Full Installation radio button
connect(ui->full_button, &QRadioButton::toggled, this, [this](bool checked) {
Calamares::Network::Manager network;
if (checked && network.hasInternet()) {
ui->extraparty_scroll->setVisible(true);
ui->extraparty_text->setVisible(true);
ui->mandatory_warning_label->setVisible(true);
ui->element_button->setChecked(true);
ui->thunderbird_button->setChecked(true);
ui->virtmanager_button->setChecked(true);
ui->krita_button->setChecked(true);
ui->element_button->setEnabled(false);
ui->thunderbird_button->setEnabled(false);
ui->virtmanager_button->setEnabled(false);
ui->krita_button->setEnabled(false);
}
});
// Disable many bits of functionality if network is not enabled
Calamares::Network::Manager network;
if (!network.hasInternet()) {
ui->full_button->setVisible(false);
ui->full_text->setVisible(false);
ui->left_spacer->changeSize(20, 20, QSizePolicy::Fixed, QSizePolicy::Fixed);
ui->right_spacer->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
ui->additional_label->setVisible(false);
ui->updates_button->setVisible(false);
ui->updates_text->setVisible(false);
ui->extraparty_scroll->setVisible(false);
ui->extraparty_text->setVisible(false);
ui->mandatory_warning_label->setVisible(false);
ui->element_button->setChecked(false);
ui->thunderbird_button->setChecked(false);
ui->virtmanager_button->setChecked(false);
ui->krita_button->setChecked(false);
ui->element_button->setEnabled(false);
ui->thunderbird_button->setEnabled(false);
ui->virtmanager_button->setEnabled(false);
ui->krita_button->setEnabled(false);
}
// Thunderbird exists on Kubuntu already
if (Calamares::Branding::instance()->componentName() == "kubuntu") {
ui->thunderbird_button->setChecked(false);
ui->thunderbird_button->setEnabled(false);
ui->thunderbird_button->setVisible(false);
ui->thunderbird_text->setVisible(false);
ui->thunderbird_spacer->changeSize(0, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
ui->thunderbird_spacer->invalidate();
}
// Connect the storage items
/// Full/Normal/Minimal
connect(ui->minimal_button, &QRadioButton::toggled, this, &PackageSelectViewStep::updatePackageSelections);
connect(ui->normal_button, &QRadioButton::toggled, this, &PackageSelectViewStep::updatePackageSelections);
connect(ui->full_button, &QRadioButton::toggled, this, &PackageSelectViewStep::updatePackageSelections);
/// Additional Options
connect(ui->updates_button, &QRadioButton::toggled, this, &PackageSelectViewStep::updatePackageSelections);
/// Third-Party Apps
connect(ui->element_button, &QCheckBox::toggled, this, &PackageSelectViewStep::updatePackageSelections);
connect(ui->thunderbird_button, &QCheckBox::toggled, this, &PackageSelectViewStep::updatePackageSelections);
connect(ui->virtmanager_button, &QCheckBox::toggled, this, &PackageSelectViewStep::updatePackageSelections);
connect(ui->krita_button, &QCheckBox::toggled, this, &PackageSelectViewStep::updatePackageSelections);
}
void
PackageSelectViewStep::onLeave()
{
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
QVariantMap config;
for (auto i = m_packageSelections.begin(); i != m_packageSelections.end(); ++i) {
if (exists_and_true(i.key())) {
config.insert(i.key(), i.value());
}
}
gs->insert("packages", config);
}
void PackageSelectViewStep::updatePackageSelections(bool checked) {
QObject* sender_obj = sender();
if (!sender_obj) return;
QString key = sender_obj->objectName();
// snake_case -> camelCase
QStringList parts = key.split("_", Qt::SkipEmptyParts);
for (int i = 1; i < parts.size(); ++i) {
parts[i][0] = parts[i][0].toUpper();
}
QString camelCaseKey = parts.join("");
m_packageSelections[camelCaseKey] = checked;
}
CALAMARES_PLUGIN_FACTORY_DEFINITION( PackageSelectViewStepFactory, registerPlugin< PackageSelectViewStep >(); )

@ -1,52 +0,0 @@
#ifndef PACKAGESELECTVIEWSTEP_H
#define PACKAGESELECTVIEWSTEP_H
#include <QFile>
#include <QTextStream>
#include "DllMacro.h"
#include "utils/PluginFactory.h"
#include "viewpages/ViewStep.h"
#include "ui_pkgselect.h"
namespace Ui {
class pkgselect;
}
class PLUGINDLLEXPORT PackageSelectViewStep : public Calamares::ViewStep
{
Q_OBJECT
public:
explicit PackageSelectViewStep( QObject* parent = nullptr );
~PackageSelectViewStep() override;
QString prettyName() const override;
QWidget* widget() override;
Calamares::JobList jobs() const override;
bool isNextEnabled() const override;
bool isBackEnabled() const override;
bool isAtBeginning() const override;
bool isAtEnd() const override;
void onActivate() override;
void onLeave() override;
QVariantMap packageSelections() const { return m_packageSelections; }
void updatePackageSelections(bool checked);
signals:
void packageSelectionsChanged();
private:
QVariantMap m_packageSelections;
Ui::pkgselect *ui;
QWidget* m_widget;
bool exists_and_true(const QString& key) const;
};
CALAMARES_PLUGIN_FACTORY_DECLARATION( PackageSelectViewStepFactory )
#endif

@ -1,594 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>pkgselect</class>
<widget class="QWidget" name="pkgselect">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>830</width>
<height>943</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="styleSheet">
<string notr="true">QRadioButton {
spacing: 13px;
}
QCheckBox {
spacing: 13px;
}
QLabel {
padding-left: 33px;
padding-right: 33px;
}</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="17" column="1">
<spacer name="verticalSpacer_11">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>3</height>
</size>
</property>
</spacer>
</item>
<item row="9" column="1">
<widget class="QRadioButton" name="minimal_button">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Minimal Installation</string>
</property>
</widget>
</item>
<item row="16" column="1">
<widget class="QLabel" name="extraparty_text">
<property name="font">
<font>
<pointsize>18</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 0px; padding-right: 0px;</string>
</property>
<property name="text">
<string>Install additional third-party packages</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QRadioButton" name="full_button">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Full Installation</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QLabel" name="minimal_text">
<property name="font">
<font>
<pointsize>10</pointsize>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Only the desktop environment</string>
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="left_spacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<spacer name="right_spacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="20" column="1">
<spacer name="pushup">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="12" column="1">
<widget class="QLabel" name="additional_label">
<property name="font">
<font>
<pointsize>18</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 0px; padding-right: 0px;</string>
</property>
<property name="text">
<string>Additional Options</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="full_text">
<property name="font">
<font>
<pointsize>10</pointsize>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>All applications in the Normal Installation, and all extra third-party packages listed below</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="8" column="1">
<spacer name="verticalSpacer_6">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="15" column="1">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="13" column="1">
<widget class="QCheckBox" name="updates_button">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Download and install updates following installation</string>
</property>
</widget>
</item>
<item row="14" column="1">
<widget class="QLabel" name="updates_text">
<property name="font">
<font>
<pointsize>10</pointsize>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>This saves time after installation, and keeps your system secure</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLabel" name="normal_text">
<property name="font">
<font>
<pointsize>10</pointsize>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Web browser, utilities, office software, games, and media players</string>
</property>
</widget>
</item>
<item row="11" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="1">
<widget class="QRadioButton" name="normal_button">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="font">
<font>
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Normal Installation</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="19" column="0" colspan="3">
<widget class="QLabel" name="mandatory_warning_label">
<property name="font">
<font>
<pointsize>11</pointsize>
<weight>75</weight>
<italic>false</italic>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Note: Ubuntu and flavors are NOT responsible for third-party software installed from this list.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="apps_label">
<property name="font">
<font>
<pointsize>18</pointsize>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 0px; padding-right: 0px;</string>
</property>
<property name="text">
<string>Installation Mode</string>
</property>
</widget>
</item>
<item row="18" column="1">
<widget class="QScrollArea" name="extraparty_scroll">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="extraparty_scrollhouse">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>762</width>
<height>281</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="8" column="1">
<widget class="QCheckBox" name="virtmanager_button">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>Virtual Machine Manager</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QCheckBox" name="element_button">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>Element</string>
</property>
</widget>
</item>
<item row="11" column="1">
<widget class="QCheckBox" name="krita_button">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>Krita</string>
</property>
</widget>
</item>
<item row="6" column="1">
<spacer name="thunderbird_spacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1">
<widget class="QLabel" name="element_text">
<property name="font">
<font>
<pointsize>10</pointsize>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Matrix-based end-to-end encrypted messenger and secure collaboration app</string>
</property>
</widget>
</item>
<item row="10" column="1">
<spacer name="verticalSpacer_10">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="9" column="1">
<widget class="QLabel" name="virtmanager_text">
<property name="font">
<font>
<pointsize>10</pointsize>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Desktop user interface for managing virtual machines through libvirt</string>
</property>
</widget>
</item>
<item row="0" column="1">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>1</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="1">
<widget class="QLabel" name="thunderbird_text">
<property name="font">
<font>
<pointsize>10</pointsize>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Email, newsfeed, chat, and calendaring client</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="thunderbird_button">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>21</height>
</size>
</property>
<property name="text">
<string>Thunderbird</string>
</property>
</widget>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="13" column="1">
<spacer name="pushup_tiny">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>6</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<spacer name="horizontalSpacer_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="12" column="1">
<widget class="QLabel" name="krita_text">
<property name="font">
<font>
<pointsize>10</pointsize>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Graphics editor designed primarily for digital art and 2D animation</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item row="4" column="1">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

@ -1,5 +0,0 @@
---
dontChroot: false
timeout: 30
script:
- "touch ${ROOT}/boot/initrd.img-$(uname -r)"

@ -1,5 +0,0 @@
---
dontChroot: true
timeout: 30
script:
- /usr/libexec/fixconkeys-part1 ${ROOT}

@ -1,5 +0,0 @@
---
dontChroot: false
timeout: 10800
script:
- /usr/libexec/fixconkeys-part2

@ -1,4 +0,0 @@
---
# Setting emergency to true will make it so this module is still run
# when a prior module fails
emergency: true

@ -1,5 +0,0 @@
module snap-seed-glue
go 1.22.1
require github.com/snapcore/snapd v0.0.0-20240328101726-fdc222fc37a0

@ -1,289 +0,0 @@
package main
// Copyright (C) 2024 Simon Quigley <tsimonq2@ubuntu.com>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 3
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
import (
"flag"
"fmt"
"io/ioutil"
"log"
"os"
"os/exec"
"path/filepath"
"strings"
"github.com/snapcore/snapd/snap"
"github.com/snapcore/snapd/interfaces/builtin"
"gopkg.in/yaml.v2"
)
type seed struct {
Snaps []struct {
Name string `yaml:"name"`
Channel string `yaml:"channel"`
File string `yaml:"file"`
} `yaml:"snaps"`
}
func main() {
snap.SanitizePlugsSlots = builtin.SanitizePlugsSlots
var seed_directory string
flag.StringVar(&seed_directory, "seed", "/var/lib/snapd/seed", "Specify the seed directory")
flag.Parse()
snap_set := make(map[string]bool)
snaps_dir := filepath.Join(seed_directory, "snaps")
assertions_dir := filepath.Join(seed_directory, "assertions")
seed_yaml := filepath.Join(seed_directory, "seed.yaml")
ensure_seed_yaml(seed_yaml)
existing_snaps_in_yaml := load_existing_snaps(seed_yaml)
for _, snap_info := range flag.Args() {
parts := strings.SplitN(snap_info, "=", 2)
snap_name := parts[0]
channel := "stable" // Default to stable if no channel is specified
if len(parts) == 2 {
channel = parts[1]
}
process_snap_with_prereqs(snap_name, channel, &snap_set, snaps_dir, assertions_dir, seed_yaml, existing_snaps_in_yaml)
}
essentialSnaps := []string{"snapd", "bare"}
for _, snapName := range essentialSnaps {
if !existing_snaps_in_yaml[snapName] {
process_snap_with_prereqs(snapName, "stable", &snap_set, snaps_dir, assertions_dir, seed_yaml, existing_snaps_in_yaml)
}
}
update_seed_yaml(snaps_dir, seed_yaml, snap_set, existing_snaps_in_yaml)
remove_state_json(filepath.Join(seed_directory, "..", "state.json"))
ensure_assertions(assertions_dir)
validate_seed(seed_yaml)
}
func ensure_seed_yaml(seed_yaml string) {
if _, err := os.Stat(seed_yaml); os.IsNotExist(err) {
file, err := os.Create(seed_yaml)
if err != nil {
log.Fatalf("Failed to create seed.yaml: %v", err)
}
defer file.Close()
file.WriteString("snaps:\n")
}
}
func load_existing_snaps(seed_yaml string) map[string]bool {
file, err := ioutil.ReadFile(seed_yaml)
if err != nil {
log.Fatalf("Failed to read seed.yaml: %v", err)
}
var seed_data seed
if err := yaml.Unmarshal(file, &seed_data); err != nil {
log.Fatalf("Failed to parse seed.yaml: %v", err)
}
existing := make(map[string]bool)
for _, snap := range seed_data.Snaps {
existing[snap.Name] = true
}
return existing
}
func update_seed_yaml(snaps_dir, seed_yaml string, snap_set map[string]bool, existing_snaps map[string]bool) {
seed_data := load_seed_data(seed_yaml)
for snap_name := range snap_set {
if !existing_snaps[snap_name] {
snap_files, err := filepath.Glob(filepath.Join(snaps_dir, fmt.Sprintf("%s_*.snap", snap_name)))
if err != nil || len(snap_files) == 0 {
log.Printf("No snap file found for %s", snap_name)
return
}
snap_file := filepath.Base(snap_files[0])
log.Printf(snap_file)
// FIXME: should put the real name of the channel in here
seed_data.Snaps = append(seed_data.Snaps, struct {
Name string `yaml:"name"`
Channel string `yaml:"channel"`
File string `yaml:"file"`
}{snap_name, "latest/stable", snap_file})
}
}
// Marshal to YAML and write back to file
data, err := yaml.Marshal(&seed_data)
if err != nil {
log.Fatalf("Failed to marshal seed data to YAML: %v", err)
}
if err := ioutil.WriteFile(seed_yaml, data, 0644); err != nil {
log.Fatalf("Failed to write updated seed.yaml: %v", err)
}
}
func load_seed_data(seed_yaml string) seed {
file, err := ioutil.ReadFile(seed_yaml)
if err != nil {
log.Fatalf("Failed to read seed.yaml: %v", err)
}
var seed_data seed
if err := yaml.Unmarshal(file, &seed_data); err != nil {
log.Fatalf("Failed to parse seed.yaml: %v", err)
}
return seed_data
}
func remove_state_json(state_json_path string) {
if _, err := os.Stat(state_json_path); err == nil {
os.Remove(state_json_path)
}
}
func validate_seed(seed_yaml string) {
cmd := exec.Command("snap", "debug", "validate-seed", seed_yaml)
if err := cmd.Run(); err != nil {
log.Printf("Error validating seed: %v", err)
}
}
func process_snap_with_prereqs(snap_name, channel string, snap_set *map[string]bool, snaps_dir, assertions_dir, seed_yaml string, existing_snaps_in_yaml map[string]bool) {
if (*snap_set)[snap_name] {
return
}
// Download the snap if not already processed or listed in seed.yaml
if !existing_snaps_in_yaml[snap_name] {
cmd := exec.Command("snap", "download", snap_name, "--channel="+channel, "--target-directory="+snaps_dir)
if err := cmd.Run(); err != nil {
log.Printf("Error downloading snap %s from channel %s: %v", snap_name, channel, err)
return
}
}
snap_files, err := filepath.Glob(filepath.Join(snaps_dir, fmt.Sprintf("%s_*.snap", snap_name)))
if err != nil || len(snap_files) == 0 {
log.Printf("No snap file found for %s in channel %s", snap_name, channel)
return
}
snap_file := snap_files[0]
cmd := exec.Command("unsquashfs", "-n", "-d", filepath.Join(snaps_dir, fmt.Sprintf("%s_meta", snap_name)), snap_file, "meta/snap.yaml")
if err := cmd.Run(); err != nil {
log.Printf("Error extracting meta/snap.yaml from snap %s: %v", snap_name, err)
return
}
yaml_data, err := ioutil.ReadFile(filepath.Join(snaps_dir, fmt.Sprintf("%s_meta/meta/snap.yaml", snap_name)))
if err != nil {
log.Printf("Error reading snap.yaml file for %s: %v", snap_name, err)
return
}
info, err := snap.InfoFromSnapYaml(yaml_data)
if err != nil {
log.Printf("Error parsing snap.yaml data for %s: %v", snap_name, err)
return
}
(*snap_set)[snap_name] = true
tracker := snap.SimplePrereqTracker{}
missing_provider_content_tags := tracker.MissingProviderContentTags(info, nil)
for provider_snap := range missing_provider_content_tags {
if !(*snap_set)[provider_snap] {
process_snap_with_prereqs(provider_snap, "stable", snap_set, snaps_dir, assertions_dir, seed_yaml, existing_snaps_in_yaml)
}
}
if info.Base != "" && !(*snap_set)[info.Base] {
process_snap_with_prereqs(info.Base, "stable", snap_set, snaps_dir, assertions_dir, seed_yaml, existing_snaps_in_yaml)
}
assert_files, err := filepath.Glob(filepath.Join(snaps_dir, "*.assert"))
for _, file := range assert_files {
target_path := filepath.Join(assertions_dir, filepath.Base(file))
err := os.Rename(file, target_path)
if err != nil {
log.Printf("Failed to move %s to %s: %v", file, assertions_dir, err)
}
}
os.RemoveAll(filepath.Join(snaps_dir, fmt.Sprintf("%s_meta", snap_name)))
}
func ensure_assertions(assertions_dir string) {
model := "generic-classic"
brand := "generic"
series := "16"
model_assertion_path := filepath.Join(assertions_dir, "model")
account_key_assertion_path := filepath.Join(assertions_dir, "account-key")
account_assertion_path := filepath.Join(assertions_dir, "account")
// Check and generate model assertion
if _, err := os.Stat(model_assertion_path); os.IsNotExist(err) {
output, err := exec.Command("snap", "known", "--remote", "model", "series="+series, "model="+model, "brand-id="+brand).CombinedOutput()
if err != nil {
log.Fatalf("Failed to fetch model assertion: %v, Output: %s", err, string(output))
}
ioutil.WriteFile(model_assertion_path, output, 0644)
}
// Generate account-key assertion if not exists
if _, err := os.Stat(account_key_assertion_path); os.IsNotExist(err) {
signKeySha3 := grep_pattern(model_assertion_path, "sign-key-sha3-384: ")
output, err := exec.Command("snap", "known", "--remote", "account-key", "public-key-sha3-384="+signKeySha3).CombinedOutput()
if err != nil {
log.Fatalf("Failed to fetch account-key assertion: %v, Output: %s", err, string(output))
}
ioutil.WriteFile(account_key_assertion_path, output, 0644)
}
// Generate account assertion if not exists
if _, err := os.Stat(account_assertion_path); os.IsNotExist(err) {
accountId := grep_pattern(account_key_assertion_path, "account-id: ")
output, err := exec.Command("snap", "known", "--remote", "account", "account-id="+accountId).CombinedOutput()
if err != nil {
log.Fatalf("Failed to fetch account assertion: %v, Output: %s", err, string(output))
}
ioutil.WriteFile(account_assertion_path, output, 0644)
}
}
func grep_pattern(filePath, pattern string) string {
content, err := ioutil.ReadFile(filePath)
if err != nil {
log.Fatalf("Failed to read from file %s: %v", filePath, err)
}
lines := strings.Split(string(content), "\n")
for _, line := range lines {
if strings.Contains(line, pattern) {
parts := strings.SplitN(line, ":", 2)
if len(parts) == 2 {
return strings.TrimSpace(parts[1])
}
}
}
log.Fatalf("Pattern %s not found in file %s", pattern, filePath)
return ""
}

@ -1,10 +0,0 @@
kubuntu/branding/ etc/calamares/
kubuntu/calamares-launch-normal usr/bin/
kubuntu/calamares-logs-helper usr/bin/
kubuntu/kubuntu-calamares.desktop usr/share/applications/
kubuntu/modules/ etc/calamares/
kubuntu/oem/calamares-launch-oem usr/bin/
kubuntu/oem/calamares-launch-oem.desktop usr/share/applications/
kubuntu/oem/calamares-oemprep.sh usr/libexec/
kubuntu/oemconfig.tar.gz etc/calamares/
kubuntu/settings.conf etc/calamares/

@ -1,7 +0,0 @@
# 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,11 +1,5 @@
lubuntu/branding/ etc/calamares/
lubuntu/calamares-launch-normal usr/bin/
lubuntu/calamares-logs-helper usr/bin/
lubuntu/lubuntu-calamares.desktop usr/share/applications/
lubuntu/lubuntu-installer.svg usr/share/icons/hicolor/scalable/apps/
lubuntu/modules/ 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/
lubuntu/settings.conf etc/calamares/

@ -1,7 +1,3 @@
# 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]
# The .desktop file uses bash to run firefox as the local
# user. bash is included in the system.
calamares-settings-lubuntu: desktop-command-not-in-package usr/share/applications/lubuntu-calamares.desktop bash

@ -1,4 +0,0 @@
# this is an internal implementation detail, no manpage needed
calamares-settings-ubuntu-common: no-manual-page [usr/bin/calamares_snap_install]
# this is normal and not a problem
calamares-settings-ubuntu-common: executable-in-usr-lib [usr/lib/x86_64-linux-gnu/calamares/modules/automirror/main.py]

@ -1,12 +0,0 @@
ubuntuunity/branding/ etc/calamares/
ubuntuunity/calamares-launch-normal usr/bin/
ubuntuunity/calamares-logs-helper usr/bin/
ubuntuunity/kvantum.kvconfig etc/xdg/Kvantum/
ubuntuunity/modules/ etc/calamares/
ubuntuunity/oem/calamares-launch-oem usr/bin/
ubuntuunity/oem/calamares-launch-oem.desktop usr/share/applications/
ubuntuunity/oem/calamares-oemprep.sh usr/libexec/
ubuntuunity/oemconfig.tar.gz etc/calamares/
ubuntuunity/settings.conf etc/calamares/
ubuntuunity/ubuntu-unity-calamares.desktop usr/share/applications/
ubuntuunity/ubuntu-unity-installer.svg usr/share/icons/hicolor/scalable/apps/

@ -1,7 +0,0 @@
# sudo will always be present in the target system
calamares-settings-ubuntu-unity: desktop-command-not-in-package sudo *
# there will be no manpage for any of this in the foreseeable future
calamares-settings-ubuntu-unity: 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-ubuntu-unity: uses-dpkg-database-directly [usr/bin/calamares-logs-helper]

@ -0,0 +1,7 @@
ubuntustudio/branding/ etc/calamares/
ubuntustudio/calamares-logs-helper usr/bin/
ubuntustudio/modules/ etc/calamares/
ubuntustudio/settings.conf etc/calamares/
ubuntustudio/ubuntustudio-calamares.desktop usr/share/applications/
ubuntustudio/kded_device_automounterrc etc/xdg
ubuntustudio/calamaresrc etc/xdg

@ -0,0 +1,3 @@
# The .desktop file uses bash to run firefox as the local
# user. bash is included in the system.
calamares-settings-ubuntustudio: desktop-command-not-in-package usr/share/applications/ubuntustudio-calamares.desktop bash

528
debian/changelog vendored

@ -1,531 +1,21 @@
calamares-settings-ubuntu (1:24.04.39) noble; urgency=medium
* Fix permissions on /home/oem when doing OEM installations. (LP: #2063403)
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 25 Apr 2024 00:01:37 -0500
calamares-settings-ubuntu (1:24.04.38) noble; urgency=high
* Do not remove zram-config on Ubuntu Unity, it does not exist in the first
place (LP: #2063108).
-- Simon Quigley <tsimonq2@ubuntu.com> Mon, 22 Apr 2024 07:10:28 -0500
calamares-settings-ubuntu (1:24.04.37) noble; urgency=medium
* Correctly lengthen timeouts for network and initramfs package commands.
(LP: #2060429)
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Fri, 19 Apr 2024 18:52:09 -0500
calamares-settings-ubuntu (1:24.04.36) noble; urgency=medium
* Don't show Thunderbird as an installable third-party app on Kubuntu.
(LP: #2062438)
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Fri, 19 Apr 2024 17:38:06 -0500
calamares-settings-ubuntu (1:24.04.35) noble; urgency=medium
* Remove timeouts for network-related package commands. (LP: #2062106)
* Remove timeouts for update-initramfs. (LP: #2060429)
-- Walter Lapchynski <wxl@ubuntu.com> Fri, 19 Apr 2024 21:23:54 +0000
calamares-settings-ubuntu (1:24.04.34) noble; urgency=medium
* Add icon on Desktop to finish OEM install. (LP: #2060928)
-- Walter Lapchynski <wxl@ubuntu.com> Fri, 19 Apr 2024 19:18:59 +0000
calamares-settings-ubuntu (1:24.04.33) noble; urgency=medium
* Fix slideshow image sizes for Kubuntu.
* Fix the size of the logo in the upper-left corner for Kubuntu.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 18 Apr 2024 19:28:02 -0500
calamares-settings-ubuntu (1:24.04.32) noble; urgency=medium
* Remove the third-party driver installation checkbox from pkgselect, its
functionality was not implemented.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Wed, 17 Apr 2024 23:18:12 -0500
calamares-settings-ubuntu (1:24.04.31) noble; urgency=medium
* Add Kubuntu branding. (LP: #2060845)
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Tue, 16 Apr 2024 12:57:56 -0500
calamares-settings-ubuntu (1:24.04.30) noble; urgency=medium
* Don't keep lubuntu-snap-installation-monitor installed on the minimal
option (LP: #2061318).
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 16 Apr 2024 10:24:00 -0500
calamares-settings-ubuntu (1:24.04.29) noble; urgency=medium
[ Aaron Rainbolt ]
* Change Kubuntu's Calamares sidebar color.
[ Walter Lapchynski ]
* Remove after_bootloader contextual process. (LP: #2061681)
-- Walter Lapchynski <wxl@ubuntu.com> Tue, 16 Apr 2024 01:10:47 +0000
calamares-settings-ubuntu (1:24.04.28) noble; urgency=medium
* Run apt updates before installing packages. (LP: #2061150)
-- Walter Lapchynski <wxl@ubuntu.com> Sat, 13 Apr 2024 00:44:32 +0000
calamares-settings-ubuntu (1:24.04.27) noble; urgency=medium
* Run the pkgselect contextualprocesses after packages in Kubuntu and Ubuntu
Unity (LP: #2060879)
-- Simon Quigley <tsimonq2@ubuntu.com> Thu, 11 Apr 2024 02:49:44 -0500
calamares-settings-ubuntu (1:24.04.26) noble; urgency=medium
* Make the pkgselect module actually work on Kubuntu and Ubuntu Unity.
(LP: #2060879)
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Wed, 10 Apr 2024 16:16:21 -0500
calamares-settings-ubuntu (1:24.04.25) noble; urgency=medium
* Be completely sure apt will not try to prompt the user.
* Bump the timeout limits to 15 minutes for both pkgselect
contextualprocess modules.
* Allow fixconkeys-part2 a 5 minute window to run, which should be
enough to run update-initramfs (LP: #2060429).
* Adjust spacers accordingly on no network.
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 09 Apr 2024 03:15:53 -0500
calamares-settings-ubuntu (1:24.04.24) noble; urgency=medium
* Don't try to remove the nonexistant zram-config package from a Kubuntu
installation.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Mon, 08 Apr 2024 21:07:08 -0500
calamares-settings-ubuntu (1:24.04.23) noble; urgency=medium
* Set GOCACHE to stay within the build directory
-- Simon Chopin <schopin@ubuntu.com> Wed, 03 Apr 2024 19:40:50 +0200
calamares-settings-ubuntu (1:24.04.22) noble; urgency=medium
* Add missing build dependency on golang-go.
-- Simon Quigley <tsimonq2@ubuntu.com> Mon, 01 Apr 2024 15:28:24 -0500
calamares-settings-ubuntu (1:24.04.21) noble; urgency=medium
[ Simon Quigley ]
* Revamp pkgselect and enable it for everyone (LP: #2056061).
* Wraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaap.
* No-network UX improvements for pkgselect (LP: #2048727).
[ Aaron Rainbolt ]
* Don't try to start Unity after the OEM environment exits on Ubuntu Unity,
this has to be done by logging in via LightDM.
* Fix a couple of goofs with post-install package purging.
[ Walter Lapchynski ]
* Make links work. (LP: #1981473)
-- Simon Quigley <tsimonq2@ubuntu.com> Thu, 28 Mar 2024 23:30:34 -0500
calamares-settings-ubuntu (1:24.04.20) noble; urgency=medium
* Fix LUKS passphrase unlocker for non-US keyboard layouts.
* Disable pkgselect module on Kubuntu, it's not ready for use and wasn't
intentionally enabled.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 21 Mar 2024 13:32:53 -0500
calamares-settings-ubuntu (1:24.04.19) noble; urgency=medium
* Add Ubuntu Unity configuration. (LP: #2055799)
* Disable GeoIP in a couple missed places.
* Don't tell the user that they've disabled OEM configuration mode when they
chose to not disable it.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Sun, 17 Mar 2024 20:14:00 +0000
calamares-settings-ubuntu (1:24.04.18) noble; urgency=medium
* GeoIP in welcome module disabled.
-- Walter Lapchynski <wxl@ubuntu.com> Wed, 13 Mar 2024 18:16:06 +0000
calamares-settings-ubuntu (1:24.04.17) noble; urgency=medium
[ Neal Gompa ]
* debian/control: Define the flavor packages as swappable packages
[ Aaron Rainbolt ]
* Wipe Ubuntu Studio's configuration while preserving branding, Studio now
uses ubuntu-desktop-provision.
* Migrate from users.conf password setting "nonEmpty: true" to
"minLength: 1" to enforce non-empty passwords.
- This is not a new feature, we had non-empty passwords being enforced in
the past and didn't intentionally undo this, but Calamares dropped the
"nonEmpty: true" setting we were using.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Sun, 10 Mar 2024 18:10:03 -0500
calamares-settings-ubuntu (1:24.04.16) noble; urgency=medium
* Actually fix the autologin bug.
* Don't kick the user out of first-run configuration mode if they don't
complete it the first time around.
* Fix a bug that caused the first-run setup wizard to not run even after
instructing it to.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 15 Feb 2024 10:36:34 -0600
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.
* Update copyright file.
-- 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.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Wed, 07 Feb 2024 17:02:27 -0600
calamares-settings-ubuntu (1:24.04.13) noble; urgency=medium
* Add Kubuntu config.
* Update Lubuntu config to create an unencrypted /boot partition when
encryption is enabled.
* Enforce the use of Calamares 3.3.1-0ubuntu3 or later to ensure that needed
encryption-related features are present.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Fri, 02 Feb 2024 15:32:10 -0600
calamares-settings-ubuntu (1:24.04.12) noble; urgency=medium
* Be compliant with the current state of the deb822 Ubuntu implementation
specification.
-- Simon Quigley <tsimonq2@ubuntu.com> Thu, 18 Jan 2024 16:27:43 -0600
calamares-settings-ubuntu (1:24.04.11) noble; urgency=medium
* Update welcome slide for Noble.
-- Dan Simmons <kc2bez@lubuntu.me> Sat, 30 Dec 2023 16:26:04 -0500
calamares-settings-ubuntu (1:24.04.10) noble; urgency=medium
* Use new icon for Lubuntu's installer, and improve theming.
-- Simon Quigley <tsimonq2@ubuntu.com> Sat, 23 Dec 2023 18:20:50 -0600
calamares-settings-ubuntu (1:24.04.9) noble; urgency=medium
* Remove muon from the list of packages to purge when doing a minimal
installation, it no longer exists in Noble.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Fri, 08 Dec 2023 01:16:24 +0000
calamares-settings-ubuntu (1:24.04.8) noble; urgency=medium
* Use lxqt-sudo instead of sudo, to pick up theming.
* Even if modules fail, try to perform the unmount.
* Explicitly depend on lubuntu-installer-prompt, which provides a default
workflow on the live system. Remove this package at the end of the install
as well.
* Go back to fullscreen.
* Add a full installation radio button, and disable the bottom checkboxes if
minimal install is selected.
* Update snaps used for Krita.
* Install the QML file to the proper directory.
* Add some testing code to the QML file to make it do what we'd like.
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 22 Nov 2023 18:30:39 -0600
calamares-settings-ubuntu (1:24.04.7) noble; urgency=medium
* Copy the Calamares installation log file from $HOME rather than /root.
(LP: #2044006)
* Update a Lintian override now that we're using sudo rather than pkexec to
launch Calamares in Lubuntu.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Mon, 20 Nov 2023 12:21:41 -0600
calamares-settings-ubuntu (1:24.04.6) noble; urgency=medium
* Use sudo -E to launch Calamares so that Lubuntu theming is preserved.
-- Aaron Rainbolt <arraybolt3@gmail.com> Sun, 19 Nov 2023 16:26:18 -0600
calamares-settings-ubuntu (1:24.04.5) noble; urgency=medium
* Fixed an FTBFS on !(amd64).
-- Aaron Rainbolt <arraybolt3@gmail.com> Wed, 15 Nov 2023 21:12:05 -0600
calamares-settings-ubuntu (1:24.04.4) noble; urgency=medium
* Fixed the pkgselect module's CMakeLists.txt file.
* Removed some unnecessary path segments from debian/rules.
* Unset the executable bit on files that shouldn't be executable.
* Exported the LC_ALL=C.UTF-8 and DEB_BUILD_MAINT_OPTIONS = hardening =+all
environment variables in debian/rules since we're building a shared
library in here now.
* Removed trailing whitespace from changelog.
* Added some lintian-overrides for the lack of a manual page and an
executable Python script in /usr/lib
-- Aaron Rainbolt <arraybolt3@gmail.com> Wed, 15 Nov 2023 18:33:39 -0600
calamares-settings-ubuntu (1:24.04.3) noble; urgency=medium
* Revert a failed FTBFS fix.
-- Aaron Rainbolt <arraybolt3@gmail.com> Wed, 15 Nov 2023 17:01:22 -0600
calamares-settings-ubuntu (1:24.04.2) noble; urgency=medium
* Fix FTBFS on !(amd64).
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 14 Nov 2023 14:34:09 -0600
calamares-settings-ubuntu (1:24.04.1) noble; urgency=medium
* Fix Vcs-*.
* Add a Package Select module, allowing for fine-tuned customization of the
installed system.
* Migrate to deb822 sources, removing the sources.list file pre-populated by
livecd-rootfs. Main and Universe deb sources are enabled by default,
Restricted and Multiverse are opt-in via the installer checkbox.
* Welcome to Noble!
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 20 Oct 2023 13:39:32 -0500
calamares-settings-ubuntu (1:23.10.4) mantic; urgency=medium
* Remove the Partners repository as an option.
* Use geoip.ubuntu.com by default.
-- Simon Quigley <tsimonq2@ubuntu.com> Sun, 08 Oct 2023 11:53:28 -0500
calamares-settings-ubuntu (1:23.10.3) mantic; urgency=medium
* No-change rebuild.
-- Walter Lapchynski <wxl@ubuntu.com> Sun, 10 Sep 2023 10:05:21 -0700
calamares-settings-ubuntu (1:23.10.2) mantic; urgency=medium
* Update welcome image for Mantic in Lubuntu.
-- Walter Lapchynski <wxl@ubuntu.com> Sun, 10 Sep 2023 09:03:28 -0700
calamares-settings-ubuntu (1:23.10.1) mantic; urgency=medium
* Welcome to the Mantic Minotaur!
* Add ext4, btrfs, xfs file system options on erase disk for Lubuntu.
-- Dan Simmons <kc2bez@lubuntu.me> Mon, 14 Aug 2023 20:10:37 -0400
calamares-settings-ubuntu (1:23.04.12) lunar; urgency=medium
calamares-settings-ubuntu (1:22.04.4.3) jammy; urgency=medium
* Don't allow the first user to be created with a blank password in either
Lubuntu or Ubuntu Studio. (LP: #2016436)
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Sun, 16 Apr 2023 17:34:56 -0500
calamares-settings-ubuntu (1:23.04.11) lunar; urgency=medium
* Fixed an invalid "SidebarTextSelect" field in Lubuntu's branding.desc -
this is now called "SidebarTextCurrent".
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Mon, 20 Mar 2023 17:47:40 -0500
calamares-settings-ubuntu (1:23.04.10) lunar; urgency=medium
* Fix Ubuntu Studio sidebar colors
-- Erich Eickmeyer <eeickmeyer@ubuntu.com> Mon, 20 Mar 2023 11:49:08 -0700
calamares-settings-ubuntu (1:23.04.9) lunar; urgency=medium
* Update ubuntustudio slideshow
-- Erich Eickmeyer <eeickmeyer@ubuntu.com> Sat, 18 Mar 2023 08:46:57 -0700
calamares-settings-ubuntu (1:23.04.8) lunar; urgency=medium
* Made the slideshow loop again. (Slow systems were ending up on the "The
installation should finish soon" screen when the installation was only 8%
done, and then were staying on that screen.)
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 16 Mar 2023 22:31:01 -0500
calamares-settings-ubuntu (1:23.04.7) lunar; urgency=medium
* Updated copyright file.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Wed, 15 Mar 2023 03:53:07 -0500
calamares-settings-ubuntu (1:23.04.6) lunar; urgency=medium
* Updated the lubuntu installer slideshow.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Mon, 13 Mar 2023 19:40:55 -0500
calamares-settings-ubuntu (1:23.04.5) lunar; urgency=medium
* Ensure the langpacks for GNOME and KDE applications are installed too.
This increases the end user install by approximately 25 MB, and saves them
the trouble of having to hunt for it later.
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 07 Mar 2023 13:16:32 -0700
calamares-settings-ubuntu (1:23.04.4) lunar; urgency=medium
* Switch from using the lsb_release python module to the distro module, as
the python module for lsb_release no longer exists in Lunar.
(LP: #2008685)
* Bumped Standards-Version to 4.6.2, no changes necessary.
* Added an explicit Depends on python3-distro.
* Ran wrap-and-sort.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Tue, 28 Feb 2023 19:27:13 -0600
calamares-settings-ubuntu (1:23.04.3) lunar; urgency=medium
* Fixed a syntax error that led to incorrect sidebar coloring (LP: #1991251).
* Set Calamares to launch in windowed mode, avoiding a welcome image scaling
issue.
* Updated Lintian overrides to work with Lintian again.
* Removed unnecessary Breaks lines from both calamares-settings-lubuntu and
calamares-settings-ubuntustudio. Conflicts is sufficient here.
* Fixed broken Lintian override in Lubuntu.
* Removed trailing whitespace from changelog.
* Bumped Standards-Version to 4.6.1, no changes necessary.
* Added 'Rules-Requires-Root: no'.
* Added Lintian overrides for missing manpages.
* Added Lintian overrides for direct usage of the dpkg database - this is
just log file extraction.
* Fixed changelog section for version 1:22.10.12.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Wed, 23 Nov 2022 16:08:10 -0600
calamares-settings-ubuntu (1:23.04.2) lunar; urgency=medium
* Allow swap for Ubuntu Studio (LP: #1996646)
-- Erich Eickmeyer <eeickmeyer@ubuntu.com> Tue, 15 Nov 2022 17:37:14 -0800
calamares-settings-ubuntu (1:23.04.1) lunar; urgency=medium
* Welcome to the Lunar Lobster!
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 28 Oct 2022 14:26:09 -0500
calamares-settings-ubuntu (1:22.10.12) kinetic; urgency=medium
[ Erich Eickmeyer ]
* Fix for black Ubuntu Studio sidebar (LP: #1991251)
[ Aaron Rainbolt ]
* Fixed a syntax error that led to incorrect sidebar coloring (LP: #1991251).
* Set Calamares to launch in windowed mode, avoiding a welcome image scaling
issue.
-- Aaron Rainbolt <arraybolt3@gmail.com> Tue, 04 Oct 2022 20:39:43 -0500
calamares-settings-ubuntu (1:22.10.11) kinetic; urgency=medium
* Tackled edge case for if libreoffice-help-$LOCALE doesn't exist but
libreoffice-l10n-$LOCALE does exist (required for LibreOffice
localization to work with languages like Icelandic)
-- Aaron Rainbolt <arraybolt3@gmail.com> Fri, 05 Aug 2022 13:19:50 -0500
calamares-settings-ubuntu (1:22.10.10) kinetic; urgency=medium
* Fixed LibreOffice localization bug (LP: #1970270).
-- Aaron Rainbolt <arraybolt3@gmail.com> Mon, 25 Jul 2022 23:47:11 -0500
calamares-settings-ubuntu (1:22.10.9) kinetic; urgency=medium
* Remove remaining conflicting ubuntustudio files existing in common
-- Erich Eickmeyer <eeickmeyer@ubuntu.com> Tue, 28 Jun 2022 11:48:34 -0700
calamares-settings-ubuntu (1:22.10.8) kinetic; urgency=medium
* Remove file in ubuntustudio settings duplicated in common
-- Erich Eickmeyer <eeickmeyer@ubuntu.com> Mon, 27 Jun 2022 17:15:06 -0700
calamares-settings-ubuntu (1:22.10.7) kinetic; urgency=medium
* Major oops in last changelog entry.
-- Simon Quigley <tsimonq2@ubuntu.com> Sun, 26 Jun 2022 22:17:37 -0500
calamares-settings-ubuntu (1:22.10.6) kinetic; urgency=medium
* Move much of the common modules to the common package.
-- Simon Quigley <tsimonq2@ubuntu.com> Sun, 26 Jun 2022 22:10:37 -0500
calamares-settings-ubuntu (1:22.10.5) kinetic; urgency=medium
* Fix desktop file typo in exec line.
-- Dan Simmons <kc2bez@lubuntu.me> Sun, 12 Jun 2022 14:45:37 -0400
calamares-settings-ubuntu (1:22.10.4) kinetic; urgency=medium
* Adjust desktop file to use pkexec so it starts.
* Point to the right log file now that we start as root.
-- Dan Simmons <kc2bez@lubuntu.me> Sat, 11 Jun 2022 16:06:53 -0400
calamares-settings-ubuntu (1:22.10.3) kinetic; urgency=medium
* Fixed contextual and shell processes for Lubuntu.
* Fixed contextual and shell processed for Ubuntu Studio.
* Updated Ubuntu Studio settings for Calamres 3.3.
-- Aaron Rainbolt <arraybolt3@gmail.com> Thu, 09 Jun 2022 19:27:24 -0500
-- Erich Eickmeyer <eeickmeyer@ubuntu.com> Mon, 17 Apr 2023 13:56:57 -0700
calamares-settings-ubuntu (1:22.10.2) kinetic; urgency=medium
calamares-settings-ubuntu (1:22.04.4.2) jammy; urgency=medium
* Update settings for Calamares 3.3.
* Fixed LibreOffice localization bug (LP: #1970270)
-- Aaron Rainbolt <arraybolt3@gmail.com> Wed, 08 Jun 2022 18:48:23 -0500
-- Aaron Rainbolt <arraybolt3@gmail.com> Fri, 05 Aug 2022 17:26:33 -0500
calamares-settings-ubuntu (1:22.10.1) kinetic; urgency=medium
calamares-settings-ubuntu (1:22.04.4.1) jammy; urgency=medium
* Welcome to the Kinetic Kudu!
* Fix manual btrfs notifications (LP: #1966774).
* Fixed BTRFS installation bug (LP: #1966774).
-- Simon Quigley <tsimonq2@ubuntu.com> Thu, 28 Apr 2022 10:12:01 -0500
-- Aaron Rainbolt <arraybolt3@gmail.com> Sun, 24 Jul 2022 14:37:49 -0500
calamares-settings-ubuntu (1:22.04.4) jammy; urgency=medium
@ -549,7 +39,7 @@ calamares-settings-ubuntu (1:22.04.1) jammy; urgency=medium
* Welcome to Jammy Jellyfish!
- Update Branding to 22.04.
- Update desktop file.
- Update desktop file.
* Bump Standards-Version to 4.6.0, no changes needed.
-- Dan Simmons <kc2bez@lubuntu.me> Sun, 14 Nov 2021 11:24:15 -0500

74
debian/control vendored

@ -3,81 +3,47 @@ Section: devel
Priority: optional
Maintainer: Lubuntu Developers <lubuntu-devel@lists.ubuntu.com>
Uploaders: Simon Quigley <tsimonq2@ubuntu.com>
Build-Depends: calamares (>= 3.3.5),
cmake,
debhelper-compat (= 13),
extra-cmake-modules,
golang-github-snapcore-snapd-dev (>= 2.62),
golang-go,
golang-gopkg-yaml.v2-dev,
intltool,
libkf5coreaddons-dev,
libqt5svg5-dev,
libyaml-cpp-dev,
qtbase5-dev,
qtdeclarative5-dev,
qttools5-dev,
qttools5-dev-tools
Standards-Version: 4.6.2
Homepage: https://code.launchpad.net/~ubuntu-qt-code/+git/calamares-settings-ubuntu
Vcs-Browser: https://git.lubuntu.me/Lubuntu/calamares-settings-ubuntu/
Vcs-Git: https://git.lubuntu.me/Lubuntu/calamares-settings-ubuntu.git
Rules-Requires-Root: no
Package: calamares-settings-kubuntu
Architecture: all
Depends: calamares-settings-ubuntu-common (>= ${binary:Version}),
${misc:Depends}
Conflicts: calamares-settings-ubuntu-flavor
Provides: calamares-settings-ubuntu-flavor
Description: Kubuntu Calamares Settings and Branding
This package contains the Calamares settings and branding for Kubuntu.
As part of the branding the installer slideshow is contained within.
The settings ensure a proper Kubuntu desktop is installed with the
KDE Plasma desktop environment.
Build-Depends: debhelper-compat (= 13), intltool, qttools5-dev-tools
Standards-Version: 4.6.0
Homepage: https://code.launchpad.net/ubuntu-calamares-settings
Vcs-Git: https://git.launchpad.net/ubuntu-calamares-settings
Vcs-Browser: https://git.launchpad.net/ubuntu-calamares-settings
Package: calamares-settings-lubuntu
Architecture: all
Depends: calamares-settings-ubuntu-common (>= ${binary:Version}),
${misc:Depends}
Recommends: lubuntu-installer-prompt
Conflicts: calamares-settings-ubuntu-flavor
Provides: calamares-settings-ubuntu-flavor
Breaks: calamares-settings-ubuntustudio
Conflicts: calamares-settings-ubuntustudio
Description: Lubuntu Calamares Settings and Branding
This package contains the Calamares settings and branding for Lubuntu.
As part of the branding the installer slideshow is contained within.
The settings ensure a proper Lubuntu desktop is installed with the
LXQt desktop environment.
Package: calamares-settings-ubuntu-unity
Architecture: all
Depends: calamares-settings-ubuntu-common (>= ${binary:Version}),
qt5-style-kvantum,
qt5-style-kvantum-themes,
${misc:Depends}
Conflicts: calamares-settings-ubuntu-flavor
Provides: calamares-settings-ubuntu-flavor
Description: Ubuntu Unity Calamares Settings and Branding
This package contains the Calamares settings and branding for Ubuntu Unity.
As part of the branding the installer slideshow is contained within.
The settings ensure a proper Ubuntu Unity desktop is installed with the
Unity desktop environment.
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}
${misc:Depends}
Description: Common Calamares Settings
This package contains the common Calamares settings for all flavors.
There is also a automirror Python script to set sources based on
geolocation.
Package: calamares-settings-ubuntustudio
Architecture: all
Depends: calamares-settings-ubuntu-common (>= ${binary:Version}),
${misc:Depends}
Breaks: calamares-settings-lubuntu
Conflicts: calamares-settings-lubuntu
Description: Ubuntu Studio Calamares Settings and Branding
This package contains the Calamares settings and branding for Ubuntu Studio.
As part of the branding the installer slideshow is contained within.
The settings ensure a proper Ubuntu Studio desktop is installed with the
KDE Plasma desktop environment.

28
debian/copyright vendored

@ -2,10 +2,8 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Files: *
Copyright: 2014 Rohan Garg <shadeslayer@systems>
2017-2021 Lubuntu Developers <lubuntu-devel@lists.ubuntu.com>
2020 Ubuntu Studio Developers <ubuntu-studio-devel@lists.ubuntu.com>
2024 Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>
2024 Ubuntu Unity Developers
2017-2024 Lubuntu Developers <lubuntu-devel@lists.ubuntu.com>
License: GPL-3+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -22,27 +20,3 @@ License: GPL-3+
.
On Debian systems, the complete text of the GNU General
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
Files: ubuntuunity/ubuntu-unity-installer.svg
Copyright: 2014 Uri Herrera <uri_herrera@nitrux.in> and others
2024 Ubuntu Unity Developers
License: LGPL-3+
This package is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
.
On Debian systems, the complete text of the GNU Lesser General
Public License version 3 can be found in "/usr/share/common-licenses/LGPL-3".
Comment:
Adapted from the Breeze icon theme. See
https://develop.kde.org/frameworks/breeze-icons for more information about
Breeze icons.

40
debian/rules vendored

@ -1,46 +1,14 @@
#!/usr/bin/make -f
export LC_ALL=C.UTF-8
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export GOPATH=/usr/share/gocode
export GO111MODULE=off
export GOCACHE=$(CURDIR)/.gocache
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
PKGSELECT = "common/modules/pkgselect"
MODULES_DIR = "debian/calamares-settings-ubuntu-common/usr/lib/$(DEB_HOST_MULTIARCH)/calamares/modules"
%:
dh $@
override_dh_auto_configure:
(cd $(PKGSELECT) && mkdir build && cd build && cmake ..)
override_dh_auto_build:
make;
(cd $(PKGSELECT)/build && $(MAKE))
(cd common/snap-seed-glue && go build -gcflags="all=-N -l" -ldflags="-compressdwarf=false" -o snap-seed-glue main.go)
override_dh_auto_clean:
dh_auto_clean
rm -rf $(GOCACHE)
override_dh_auto_install:
(cd $(PKGSELECT)/build && $(MAKE) DESTDIR=$(CURDIR)/debian/calamares-settings-ubuntu-common/ install)
override_dh_missing:
dh_missing
mkdir -pv $(MODULES_DIR)
cp -vr common/modules/automirror $(MODULES_DIR)
mkdir -pv debian/calamares-settings-ubuntu-common/etc/calamares/modules
cp -vr common/modules/*.conf debian/calamares-settings-ubuntu-common/etc/calamares/modules
mkdir -pv debian/calamares-settings-ubuntu-common/usr/lib/$(DEB_HOST_MULTIARCH)/calamares/modules
cp -vr common/modules/* debian/calamares-settings-ubuntu-common/usr/lib/$(DEB_HOST_MULTIARCH)/calamares/modules
chmod -R 755 debian/calamares-settings-ubuntu-common/usr/lib/
chmod 644 $(MODULES_DIR)/automirror/automirror.conf
chmod 644 $(MODULES_DIR)/automirror/module.desc
chmod 644 $(MODULES_DIR)/pkgselect/libcalamares_viewmodule_pkgselect.so
chmod 644 $(MODULES_DIR)/pkgselect/module.desc
mkdir -pv debian/calamares-settings-ubuntu-common/usr/bin/
cp -v common/snap-seed-glue/snap-seed-glue debian/calamares-settings-ubuntu-common/usr/bin/snap-seed-glue
mkdir -pv debian/calamares-settings-ubuntu-common/usr/libexec/
cp -v common/fixconkeys-part1 debian/calamares-settings-ubuntu-common/usr/libexec/fixconkeys-part1
cp -v common/fixconkeys-part2 debian/calamares-settings-ubuntu-common/usr/libexec/fixconkeys-part2
chmod 644 debian/calamares-settings-ubuntu-common/usr/lib/$(DEB_HOST_MULTIARCH)/calamares/modules/automirror/automirror.conf
chmod 644 debian/calamares-settings-ubuntu-common/usr/lib/$(DEB_HOST_MULTIARCH)/calamares/modules/automirror/module.desc

@ -1,21 +0,0 @@
# Kubuntu's Calamares Settings
This directory houses the Calamares settings for Kubuntu.
Unless otherwise stated, the contents of this directory are licensed as follows:
Copyright (C) 2018 Lubuntu Developers <lubuntu-devel@lists.ubuntu.com>
Copyright (C) 2024 Kubuntu Developers <kubuntu-devel@lists.ubuntu.com>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 3
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this software. If not, see <http://www.gnu.org/licenses/>.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

@ -1,29 +0,0 @@
---
componentName: kubuntu
windowExpanding: fullscreen
strings:
productName: Kubuntu
shortProductName: Kubuntu
version: 24.04 LTS
shortVersion: noble
versionedName: Kubuntu
shortVersionedName: Kubuntu 24.04 LTS
bootloaderEntryName: Kubuntu
productUrl: https://kubuntu.org/
supportUrl: https://kubuntu.org/contact/
images:
productLogo: "logo.png"
productIcon: "icon.png"
productWelcome: "welcome.png"
slideshow: "show.qml"
slideshowAPI: 1
style:
SidebarBackground: "#6C7B93"
SidebarText: "#FFFFFF"
SidebarTextCurrent: "#0068C8"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@ -1,165 +0,0 @@
import QtQuick 2.0;
import calamares.slideshow 1.0;
Presentation
{
id: presentation
Timer {
interval: 15000
running: true
repeat: true
onTriggered: presentation.goToNextSlide()
}
Slide {
Image {
id: image1
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "01_Easy_Install.png"
}
}
Slide {
Image {
id: image2
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "02_Customizable_Desktop.png"
}
}
Slide {
Image {
id: image3
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "03_Built-in_Applications.png"
}
}
Slide {
Image {
id: image4
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "04_Performant.png"
}
}
Slide {
Image {
id: image5
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "05_Secure_and_Private.png"
}
}
Slide {
Image {
id: image6
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "06_Community_Support.png"
}
}
Slide {
Image {
id: image7
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "07_Free_and_Open_Source.png"
}
}
Slide {
Image {
id: image8
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "08_Software_Compatibility.png"
}
}
Slide {
Image {
id: image9
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "09_Beautiful_Aesthetics.png"
}
}
Slide {
Image {
id: image10
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "10_Kubuntu_Focus.png"
}
}
Slide {
Image {
id: image11
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "11_Testimonials_of_Success.png"
}
}
Slide {
Image {
id: image12
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3.6
height: parent.masterHeight * 0.95
width: parent.masterWidth * 0.95
fillMode: Image.PreserveAspectFit
smooth: true
source: "12_Get_Involved.png"
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

@ -1,16 +0,0 @@
#!/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
export BROWSER='sudo -H -u kubuntu firefox'
calamares -D8;

@ -1,24 +0,0 @@
#!/bin/sh
set -ex
root=$1
install_dir=$root/var/log/installer
[ -d $install_dir ] || mkdir -p $install_dir
cp $HOME/.cache/calamares/session.log $install_dir/debug
cp /cdrom/.disk/info $install_dir/media-info
cp /var/log/casper.log $install_dir/casper.log
cp /var/log/syslog $install_dir/syslog
gzip --stdout $root/var/lib/dpkg/status > $install_dir/initial-status.gz
# OEM id isn't a thing, when in OEM mode ubiquity would also archive that.
# https://github.com/calamares/calamares/issues/943
chmod -v 600 $install_dir/*
# Make these world readable, they can absolutely not contain anything relevant
# to security.
chmod -v 644 $install_dir/initial-status.gz
chmod -v 644 $install_dir/media-info

@ -1,6 +0,0 @@
---
baseUrl: archive.ubuntu.com
distribution: Kubuntu
geoip:
style: "xml"
url: "https://geoip.ubuntu.com/lookup"

@ -1,9 +0,0 @@
displaymanagers:
- sddm
defaultDesktopEnvironment:
executable: "startkde"
desktopFile: "plasma"
basicSetup: false
sysconfigSetup: false

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

@ -1,16 +0,0 @@
update_db: true
backend: apt
operations:
- remove:
- "^live-*"
- calamares-settings-kubuntu
- calamares
- cifs-utils
- kubuntu-installer-prompt
- try_install:
- language-pack-$LOCALE
- language-pack-gnome-$LOCALE
- language-pack-kde-$LOCALE
- hunspell-$LOCALE
- libreoffice-help-$LOCALE
- libreoffice-l10n-$LOCALE

@ -1,21 +0,0 @@
efiSystemPartition: "/boot/efi"
enableLuksAutomatedPartitioning: true
luksGeneration: luks2
userSwapChoices:
- none
- file
initialSwapChoice: file
drawNestedPartitions: true
defaultFileSystemType: "ext4"
availableFileSystemTypes: ["ext4","btrfs","xfs"]
partitionLayout:
- name: "kubuntu_boot"
filesystem: ext4
noEncrypt: true
onlyPresentWithEncryption: true
mountPoint: "/boot"
size: 4G
- name: "kubuntu_2404"
filesystem: unknown
mountPoint: "/"
size: 100%

@ -1,19 +0,0 @@
---
dontChroot: false
timeout: 10800
"packages.minimalButton":
true:
- "DEBIAN_FRONTEND=noninteractive apt-get -y --purge remove kmahjongg kmines kpat ksudoku skanlite skanpage okular libreoffice* kdeconnect krdc konversation neochat elisa haruna vim snapd partitionmanager usb-creator* plasma-welcome kde-config-tablet plasma-welcome"
- "apt-get -y autoremove"
"packages.partyButton":
true:
- "DEBIAN_FRONTEND=noninteractive apt-get update"
- "DEBIAN_FRONTEND=noninteractive apt-get -y install ubuntu-restricted-addons unrar"
"packages.updatesButton":
true:
- "DEBIAN_FRONTEND=noninteractive apt-get update"
- "DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::='--force-confnew' full-upgrade"
"packages.virtmanagerButton":
true:
- "DEBIAN_FRONTEND=noninteractive apt-get update"
- "DEBIAN_FRONTEND=noninteractive apt-get -y install virt-manager"

@ -1,9 +0,0 @@
---
dontChroot: true
timeout: 10800
"packages.elementButton":
true: "snap-seed-glue --seed ${ROOT}/var/lib/snapd/seed element-desktop"
"packages.kritaButton":
true: "snap-seed-glue --seed ${ROOT}/var/lib/snapd/seed krita"
"packages.thunderbirdButton":
true: "snap-seed-glue --seed ${ROOT}/var/lib/snapd/seed thunderbird"

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

@ -1,30 +0,0 @@
---
doAutologin: false
setRootPassword: false
sudoersGroup: sudo
defaultGroups:
- adm
- cdrom
- dip
- lpadmin
- plugdev
- name: sambashare
must_exist: false
system: true
- sudo
passwordRequirements:
minLength: 1
maxLength: -1
# 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

@ -1,28 +0,0 @@
---
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 is effectively disabled by setting style to "none"
geoip:
style: "none"
url: "https://geoip.ubuntu.com/lookup"
selector: "CountryCode"

@ -1,20 +0,0 @@
#!/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=kubuntu-oem-environment
User=oem
EOL
)"
echo "$sddm_file" | sudo tee /etc/sddm.conf
kdialog --msgbox 'Done. The account setup wizard will run on next bootup.'
fi

@ -1,10 +0,0 @@
[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;

@ -1,44 +0,0 @@
#!/bin/bash
#
# Enables OEM installaiton mode in Calamares.
if [ -e '/etc/calamares/OEM_MODE_ACTIVATED' ]; then
export BROWSER='sudo -H -u kubuntu firefox'
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/kubuntu/welcome-oem.png /etc/calamares/branding/kubuntu/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
export BROWSER='sudo -H -u kubuntu firefox'
calamares -D8;
fi

@ -1,10 +0,0 @@
[Desktop Entry]
Type=Application
Version=1.0
Name=Install Kubuntu 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;

@ -1,7 +0,0 @@
#!/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/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

@ -1,12 +0,0 @@
#!/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;
chown -R 1000:1000 "$1"/home/oem
# 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

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

@ -1,11 +0,0 @@
#!/bin/bash
# Starts the Kubuntu OEM Environment.
export QT_STYLE_OVERRIDE="Breeze"
export BROWSER='sudo -H -u kubuntu firefox'
/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.
# If it exits...
killall basicwallpaper
killall kwin_x11

@ -1,8 +0,0 @@
---
# 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

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

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

@ -1,22 +0,0 @@
---
doAutologin: false
setRootPassword: false
sudoersGroup: sudo
defaultGroups:
- adm
- cdrom
- dip
- lpadmin
- plugdev
- name: sambashare
must_exist: false
system: true
- sudo
passwordRequirements:
minLength: 1
maxLength: -1
# 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 ]

@ -1,27 +0,0 @@
---
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 is effectively disabled by setting style to "none"
geoip:
style: "none"
url: "https://geoip.ubuntu.com/lookup"
selector: "CountryCode"

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

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

@ -1,56 +0,0 @@
#
# 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

@ -1,22 +0,0 @@
#!/usr/bin/make -f
POTFILES := $(shell cat POTFILES.in)
all: generate-po-files
generate-pot: POTFILES.in
intltool-update --pot --gettext-package=calamares-settings-kubuntu
generate-po-files:
for i in $(POTFILES); do \
f=$$(echo $$i | sed 's/\.in//'); \
intltool-merge -d . ../$$i ../$$f; \
done
update-po:
for i in *.po; do \
code=$$(echo $$i | sed 's/.po//'); \
intltool-update --gettext-package=calamares-settings-kubuntu --dist $$code; \
done
# vim:ts=4

@ -1 +0,0 @@
kubuntu-calamares.desktop.in

@ -1,28 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-10 02:36-0500\n"
"PO-Revision-Date: 2024-02-05 00:00+0000\n"
"Last-Translator: Aaron Rainbolt <arraybolt3@ubuntu.com>\n"
"Language-Team: Arabic <https://translate.lubuntu.me/projects/lubuntu/"
"calamares-settings-lubuntu-desktop/ar/>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 3.1-dev\n"
#: ../kubuntu-calamares.desktop.in.h:1
msgid "Install Kubuntu 24.04 LTS"
msgstr "تثبيت كوبونتو 24.04 LTS"
#: ../kubuntu-calamares.desktop.in.h:2
msgid "Install Kubuntu"
msgstr "تثبيت كوبونتو"
#: ../kubuntu-calamares.desktop.in.h:3
msgid "Calamares — System Installer"
msgstr "كالاماريس - مثبت النظام"

@ -1,25 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-10 02:36-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.3.0\n"
#: ../kubuntu-calamares.desktop.in.h:1
msgid "Install Kubuntu 24.04 LTS"
msgstr ""
#: ../kubuntu-calamares.desktop.in.h:2
msgid "Install Kubuntu"
msgstr ""
#: ../kubuntu-calamares.desktop.in.h:3
msgid "Calamares — System Installer"
msgstr ""

@ -1,27 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-10 02:36-0500\n"
"PO-Revision-Date: 2024-02-05 00:00+0000\n"
"Last-Translator: Aaron Rainbolt <arraybolt3@ubuntu.com>\n"
"Language-Team: Catalan <https://translate.lubuntu.me/projects/lubuntu/"
"calamares-settings-lubuntu-desktop/ca/>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.1-dev\n"
#: ../kubuntu-calamares.desktop.in.h:1
msgid "Install Kubuntu 24.04 LTS"
msgstr "Instal·lar Kubuntu 24.04 LTS"
#: ../kubuntu-calamares.desktop.in.h:2
msgid "Install Kubuntu"
msgstr "Instal·lar Kubuntu"
#: ../kubuntu-calamares.desktop.in.h:3
msgid "Calamares — System Installer"
msgstr "Calamares — Instal·lador del Sistema"

@ -1,27 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-10 02:36-0500\n"
"PO-Revision-Date: 2024-02-05 00:00+0000\n"
"Last-Translator: Aaron Rainbolt <arraybolt3@ubuntu.com>\n"
"Language-Team: Danish <https://translate.lubuntu.me/projects/lubuntu/"
"calamares-settings-lubuntu-desktop/da/>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.1-dev\n"
#: ../kubuntu-calamares.desktop.in.h:1
msgid "Install Kubuntu 24.04 LTS"
msgstr "Installer Kubuntu 24.04 LTS"
#: ../kubuntu-calamares.desktop.in.h:2
msgid "Install Kubuntu"
msgstr "Installer Kubuntu"
#: ../kubuntu-calamares.desktop.in.h:3
msgid "Calamares — System Installer"
msgstr "Calamares - System installation"

@ -1,27 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-10 02:36-0500\n"
"PO-Revision-Date: 2024-02-05 00:00+0000\n"
"Last-Translator: Aaron Rainbolt <arraybolt3@ubuntu.com>\n"
"Language-Team: German <https://translate.lubuntu.me/projects/lubuntu/"
"calamares-settings-lubuntu-desktop/de/>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.1-dev\n"
#: ../kubuntu-calamares.desktop.in.h:1
msgid "Install Kubuntu 24.04 LTS"
msgstr "Kubuntu 24.04 LTS installieren"
#: ../kubuntu-calamares.desktop.in.h:2
msgid "Install Kubuntu"
msgstr "Kubuntu installieren"
#: ../kubuntu-calamares.desktop.in.h:3
msgid "Calamares — System Installer"
msgstr "Calamares — System Installer"

@ -1,25 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-10 02:36-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.3.0\n"
#: ../kubuntu-calamares.desktop.in.h:1
msgid "Install Kubuntu 24.04 LTS"
msgstr ""
#: ../kubuntu-calamares.desktop.in.h:2
msgid "Install Kubuntu"
msgstr ""
#: ../kubuntu-calamares.desktop.in.h:3
msgid "Calamares — System Installer"
msgstr ""

@ -1,27 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-10 02:36-0500\n"
"PO-Revision-Date: 2024-02-05 00:00+0000\n"
"Last-Translator: Aaron Rainbolt <arraybolt3@ubuntu.com>\n"
"Language-Team: Spanish <https://translate.lubuntu.me/projects/lubuntu/"
"calamares-settings-lubuntu-desktop/es/>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.1-dev\n"
#: ../kubuntu-calamares.desktop.in.h:1
msgid "Install Kubuntu 24.04 LTS"
msgstr "Instalar Kubuntu 24.04 LTS"
#: ../kubuntu-calamares.desktop.in.h:2
msgid "Install Kubuntu"
msgstr "Instalar Kubuntu"
#: ../kubuntu-calamares.desktop.in.h:3
msgid "Calamares — System Installer"
msgstr "Calamares — Instalador del Sistema"

@ -1,25 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-07-10 02:36-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 2.3.0\n"
#: ../kubuntu-calamares.desktop.in.h:1
msgid "Install Kubuntu 24.04 LTS"
msgstr ""
#: ../kubuntu-calamares.desktop.in.h:2
msgid "Install Kubuntu"
msgstr ""
#: ../kubuntu-calamares.desktop.in.h:3
msgid "Calamares — System Installer"
msgstr ""

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save