6 Commits

Author SHA1 Message Date
d3a3c6bb04 packagechooser: rename PackageModel -> PackageChooiserModel to allow netinstall PackageModel inclusion 2024-01-06 01:43:52 +01:00
9729936e2f clean up a little 2024-01-06 01:32:34 +01:00
5225dbff9a fix 2024-01-06 00:06:37 +01:00
c831299490 merge the PackageNetModel 2024-01-06 00:04:46 +01:00
8b1ed58cf2 fix qrc 2024-01-05 23:43:40 +01:00
f700653eb9 initial ugly loaderqueue implement 2024-01-05 23:39:35 +01:00
64 changed files with 277 additions and 3624 deletions

3
.gitignore vendored
View File

@@ -5,6 +5,3 @@
build/
*.kdev4
*.qmlc
b.sh
modules/netinstall/
modules/packages/

View File

@@ -32,9 +32,6 @@
# In this repository, there is just one "group" to which USE_* applies:
# USE_os : operating-system-specific modules.
#
# There is a knob WITH_QT6 which can be used to build against Qt6 rather
# than Qt5. This must match what Calamares itself is built with.
#
### NOTES
#
# Call this CMake file in script mode, e.g. `cmake -P CMakeLists.txt`
@@ -43,7 +40,7 @@
#
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
set( CALAMARES_EXTENSIONS_VERSION 3.3.1 )
set( CALAMARES_EXTENSIONS_VERSION 1.4.0 )
include( ${CMAKE_CURRENT_LIST_DIR}/CMakeModules/ExtendedVersion.cmake )
if ( CMAKE_SCRIPT_MODE_FILE )
@@ -86,7 +83,7 @@ set_package_properties(
# consumers by loading the developer's config from a build
# directory (which doesn't have the rest of the config
# installed inside it).
set( CALAMARES_VERSION_REQUIRED 3.3.1 )
set( CALAMARES_VERSION_REQUIRED 3.3.0 )
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)
@@ -96,32 +93,6 @@ message(STATUS "Found Calamares version ${Calamares_VERSION}")
message(STATUS " libraries ${Calamares_LIB_DIRS}")
message(STATUS "")
### EXTRACTING DEPENDENCIES AND CONFIGURATION FROM CALAMARES
#
#
if(WITH_QT6)
set(kfname "KF6")
set(KF_VERSION 5.240) # KDE Neon weirdness
else()
message(STATUS "Building Calamares with Qt5")
set(kfname "KF5")
set(KF_VERSION 5.78)
# API that was deprecated before Qt 5.15 causes a compile error
add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x050f00)
endif()
include( FeatureSummary )
find_package(${kfname}CoreAddons ${KF_VERSION} QUIET)
set_package_properties(
${kfname}CoreAddons
PROPERTIES
TYPE REQUIRED
DESCRIPTION "KDE Framework CoreAddons"
URL "https://api.kde.org/frameworks/"
PURPOSE "Essential Framework for AboutData and Macros"
)
### CMAKE SETUP
#
# Enable IN_LIST
@@ -168,12 +139,3 @@ message(STATUS "Calamares extensions ${CALAMARES_EXTENSIONS_VERSION} for Calamar
# If modules cannot be built, they usually call a macro
# which builds a list of explanations; show that list.
calamares_explain_skipped_modules( ${LIST_SKIPPED_MODULES} )
install(PROGRAMS scripts/calamares-config-switcher DESTINATION bin)
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
set(CMAKE_INSTALL_SYSCONFDIR "/etc")
endif()
install(FILES scripts/calamares-config-switcher.conf DESTINATION ${CMAKE_INSTALL_SYSCONFDIR})
install(FILES scripts/calamares-config-switcher.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -1,205 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="46.72533mm"
height="46.72533mm"
viewBox="0 0 46.72533 46.725331"
version="1.1"
id="svg4593"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="Artix_logo_square_frame.svg"
inkscape:export-filename="/tmp/Artix_logo_4096.png"
inkscape:export-xdpi="2226.6001"
inkscape:export-ydpi="2226.6001">
<defs
id="defs4587">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient887"
id="linearGradient1200-5"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,114.83738,50.597052)"
x1="70.512688"
y1="62.847496"
x2="63.043533"
y2="59.204388" />
<linearGradient
id="linearGradient887"
inkscape:collect="always">
<stop
id="stop883"
offset="0"
style="stop-color:#ffffff;stop-opacity:0.36470589" />
<stop
id="stop885"
offset="1"
style="stop-color:#ffffff;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient887"
id="linearGradient1200-8"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-21.06111,67.884718)"
x1="70.512688"
y1="62.847496"
x2="55.280762"
y2="56.393845" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1849"
id="linearGradient1851-9-8-1"
x1="70.724701"
y1="12.29244"
x2="81.157883"
y2="19.324032"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-11.753608,126.58468)" />
<linearGradient
inkscape:collect="always"
id="linearGradient1849">
<stop
style="stop-color:#000000;stop-opacity:0.10217391"
offset="0"
id="stop1845" />
<stop
style="stop-color:#000000;stop-opacity:0.30434781"
offset="1"
id="stop1847" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1849"
id="linearGradient1851-9-8"
x1="70.724709"
y1="12.29244"
x2="87.0924"
y2="26.894571"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-26.40001,101.15201)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1849"
id="linearGradient1851-9"
x1="105.83431"
y1="15.35424"
x2="80.208908"
y2="30.53084"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-56.382736,115.37787)" />
<linearGradient
gradientTransform="translate(-16.57152,-7.1090256)"
inkscape:collect="always"
xlink:href="#linearGradient887"
id="linearGradient881"
x1="75.542618"
y1="145.98615"
x2="81.200447"
y2="143.22675"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.1786659"
inkscape:cx="55.055788"
inkscape:cy="48.998008"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1904"
inkscape:window-height="1008"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="true"
borderlayer="false"
inkscape:showpageshadow="true" />
<metadata
id="metadata4590">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-23.826174,-99.183391)">
<g
id="g213"
transform="translate(0.57361468)">
<path
sodipodi:nodetypes="cccccccccccc"
style="display:inline;fill:#10a0cc;fill-opacity:1;stroke:none;stroke-width:0.09994879;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 46.614964,99.183394 -8.03465,16.473926 22.112351,12.38944 z m -10.46189,21.450886 -12.3269,25.27444 36.57813,-15.11174 z m 26.955981,12.3672 -11.536252,6.62286 17.831472,6.28438 z"
id="path886"
inkscape:connector-curvature="0"
inkscape:label="Base" />
<path
style="fill:url(#linearGradient881);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 58.971096,138.87713 4.137969,-5.87613 6.29521,12.90771 z"
id="path947"
inkscape:connector-curvature="0"
inkscape:label="Light" />
<path
style="fill:url(#linearGradient1851-9);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 23.826174,145.90872 25.6254,-15.1766 10.95269,0.065 z"
id="path1434-9-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Shadow" />
<path
style="fill:url(#linearGradient1851-9-8);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 60.692734,128.04658 -22.11223,-12.38962 5.74419,-2.21251 z"
id="path1434-9-4-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Shadow" />
<path
style="fill:url(#linearGradient1851-9-8-1);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 69.404275,145.90872 -17.831451,-6.28419 7.398272,-0.7474 z"
id="path1434-9-4-2-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Shadow" />
<path
style="fill:url(#linearGradient1200-8);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 23.826174,145.90872 25.6254,-15.1766 -13.29865,-10.09774 z"
id="path1381-5-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Light" />
<path
style="fill:url(#linearGradient1200-5);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 60.692724,128.04658 -16.36803,-14.60213 2.29027,-14.261056 z"
id="path1381-5-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Light" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -8,7 +8,7 @@ welcomeStyleCalamares: false
welcomeExpandingLogo: true
windowExpanding: normal
windowSize: 1000px,800px
windowSize: 920px,630px
windowPlacement: center
sidebar: qml,top
@@ -22,15 +22,14 @@ strings:
versionedName: Artix Linux "rolling"
shortVersionedName: Artix rolling
bootloaderEntryName: Artix
productUrl: https://artixlinux.org/
productUrl: https://www.artixlinux.org/
supportUrl: https://github.com/calamares/calamares/issues
knownIssuesUrl: https://calamares.io/about/
releaseNotesUrl: https://calamares.io/about/
images:
productBanner: "artix-banner.png"
productLogo: "artix-logo.svg"
productIcon: "artix-icon.svg"
productLogo: "artix.png"
productIcon: "artix.png"
productWelcome: "languages.png"
slideshow: "show.qml"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 662 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,205 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="46.72533mm"
height="46.72533mm"
viewBox="0 0 46.72533 46.725331"
version="1.1"
id="svg4593"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="Artix_logo_square_frame.svg"
inkscape:export-filename="/tmp/Artix_logo_4096.png"
inkscape:export-xdpi="2226.6001"
inkscape:export-ydpi="2226.6001">
<defs
id="defs4587">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient887"
id="linearGradient1200-5"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,114.83738,50.597052)"
x1="70.512688"
y1="62.847496"
x2="63.043533"
y2="59.204388" />
<linearGradient
id="linearGradient887"
inkscape:collect="always">
<stop
id="stop883"
offset="0"
style="stop-color:#ffffff;stop-opacity:0.36470589" />
<stop
id="stop885"
offset="1"
style="stop-color:#ffffff;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient887"
id="linearGradient1200-8"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-21.06111,67.884718)"
x1="70.512688"
y1="62.847496"
x2="55.280762"
y2="56.393845" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1849"
id="linearGradient1851-9-8-1"
x1="70.724701"
y1="12.29244"
x2="81.157883"
y2="19.324032"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-11.753608,126.58468)" />
<linearGradient
inkscape:collect="always"
id="linearGradient1849">
<stop
style="stop-color:#000000;stop-opacity:0.10217391"
offset="0"
id="stop1845" />
<stop
style="stop-color:#000000;stop-opacity:0.30434781"
offset="1"
id="stop1847" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1849"
id="linearGradient1851-9-8"
x1="70.724709"
y1="12.29244"
x2="87.0924"
y2="26.894571"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-26.40001,101.15201)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1849"
id="linearGradient1851-9"
x1="105.83431"
y1="15.35424"
x2="80.208908"
y2="30.53084"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-56.382736,115.37787)" />
<linearGradient
gradientTransform="translate(-16.57152,-7.1090256)"
inkscape:collect="always"
xlink:href="#linearGradient887"
id="linearGradient881"
x1="75.542618"
y1="145.98615"
x2="81.200447"
y2="143.22675"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.1786659"
inkscape:cx="55.055788"
inkscape:cy="48.998008"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1904"
inkscape:window-height="1008"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="true"
borderlayer="false"
inkscape:showpageshadow="true" />
<metadata
id="metadata4590">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-23.826174,-99.183391)">
<g
id="g213"
transform="translate(0.57361468)">
<path
sodipodi:nodetypes="cccccccccccc"
style="display:inline;fill:#10a0cc;fill-opacity:1;stroke:none;stroke-width:0.09994879;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 46.614964,99.183394 -8.03465,16.473926 22.112351,12.38944 z m -10.46189,21.450886 -12.3269,25.27444 36.57813,-15.11174 z m 26.955981,12.3672 -11.536252,6.62286 17.831472,6.28438 z"
id="path886"
inkscape:connector-curvature="0"
inkscape:label="Base" />
<path
style="fill:url(#linearGradient881);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 58.971096,138.87713 4.137969,-5.87613 6.29521,12.90771 z"
id="path947"
inkscape:connector-curvature="0"
inkscape:label="Light" />
<path
style="fill:url(#linearGradient1851-9);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 23.826174,145.90872 25.6254,-15.1766 10.95269,0.065 z"
id="path1434-9-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Shadow" />
<path
style="fill:url(#linearGradient1851-9-8);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 60.692734,128.04658 -22.11223,-12.38962 5.74419,-2.21251 z"
id="path1434-9-4-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Shadow" />
<path
style="fill:url(#linearGradient1851-9-8-1);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 69.404275,145.90872 -17.831451,-6.28419 7.398272,-0.7474 z"
id="path1434-9-4-2-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Shadow" />
<path
style="fill:url(#linearGradient1200-8);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 23.826174,145.90872 25.6254,-15.1766 -13.29865,-10.09774 z"
id="path1381-5-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Light" />
<path
style="fill:url(#linearGradient1200-5);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 60.692724,128.04658 -16.36803,-14.60213 2.29027,-14.261056 z"
id="path1381-5-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Light" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -1,205 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="46.72533mm"
height="46.72533mm"
viewBox="0 0 46.72533 46.725331"
version="1.1"
id="svg4593"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="Artix_logo_square_frame.svg"
inkscape:export-filename="/tmp/Artix_logo_4096.png"
inkscape:export-xdpi="2226.6001"
inkscape:export-ydpi="2226.6001">
<defs
id="defs4587">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient887"
id="linearGradient1200-5"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,1,114.83738,50.597052)"
x1="70.512688"
y1="62.847496"
x2="63.043533"
y2="59.204388" />
<linearGradient
id="linearGradient887"
inkscape:collect="always">
<stop
id="stop883"
offset="0"
style="stop-color:#ffffff;stop-opacity:0.36470589" />
<stop
id="stop885"
offset="1"
style="stop-color:#ffffff;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient887"
id="linearGradient1200-8"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-21.06111,67.884718)"
x1="70.512688"
y1="62.847496"
x2="55.280762"
y2="56.393845" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1849"
id="linearGradient1851-9-8-1"
x1="70.724701"
y1="12.29244"
x2="81.157883"
y2="19.324032"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-11.753608,126.58468)" />
<linearGradient
inkscape:collect="always"
id="linearGradient1849">
<stop
style="stop-color:#000000;stop-opacity:0.10217391"
offset="0"
id="stop1845" />
<stop
style="stop-color:#000000;stop-opacity:0.30434781"
offset="1"
id="stop1847" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1849"
id="linearGradient1851-9-8"
x1="70.724709"
y1="12.29244"
x2="87.0924"
y2="26.894571"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-26.40001,101.15201)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1849"
id="linearGradient1851-9"
x1="105.83431"
y1="15.35424"
x2="80.208908"
y2="30.53084"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-56.382736,115.37787)" />
<linearGradient
gradientTransform="translate(-16.57152,-7.1090256)"
inkscape:collect="always"
xlink:href="#linearGradient887"
id="linearGradient881"
x1="75.542618"
y1="145.98615"
x2="81.200447"
y2="143.22675"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.1786659"
inkscape:cx="55.055788"
inkscape:cy="48.998008"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1904"
inkscape:window-height="1008"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="true"
borderlayer="false"
inkscape:showpageshadow="true" />
<metadata
id="metadata4590">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-23.826174,-99.183391)">
<g
id="g213"
transform="translate(0.57361468)">
<path
sodipodi:nodetypes="cccccccccccc"
style="display:inline;fill:#10a0cc;fill-opacity:1;stroke:none;stroke-width:0.09994879;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 46.614964,99.183394 -8.03465,16.473926 22.112351,12.38944 z m -10.46189,21.450886 -12.3269,25.27444 36.57813,-15.11174 z m 26.955981,12.3672 -11.536252,6.62286 17.831472,6.28438 z"
id="path886"
inkscape:connector-curvature="0"
inkscape:label="Base" />
<path
style="fill:url(#linearGradient881);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 58.971096,138.87713 4.137969,-5.87613 6.29521,12.90771 z"
id="path947"
inkscape:connector-curvature="0"
inkscape:label="Light" />
<path
style="fill:url(#linearGradient1851-9);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 23.826174,145.90872 25.6254,-15.1766 10.95269,0.065 z"
id="path1434-9-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Shadow" />
<path
style="fill:url(#linearGradient1851-9-8);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 60.692734,128.04658 -22.11223,-12.38962 5.74419,-2.21251 z"
id="path1434-9-4-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Shadow" />
<path
style="fill:url(#linearGradient1851-9-8-1);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 69.404275,145.90872 -17.831451,-6.28419 7.398272,-0.7474 z"
id="path1434-9-4-2-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Shadow" />
<path
style="fill:url(#linearGradient1200-8);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 23.826174,145.90872 25.6254,-15.1766 -13.29865,-10.09774 z"
id="path1381-5-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Light" />
<path
style="fill:url(#linearGradient1200-5);fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 60.692724,128.04658 -16.36803,-14.60213 2.29027,-14.261056 z"
id="path1381-5-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc"
inkscape:label="Light" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

BIN
branding/artix/banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -48,7 +48,7 @@ windowExpanding: normal
# This setting is ignored if "fullscreen" is selected for
# *windowExpanding*, above. If not set, use constants defined
# in CalamaresUtilsGui, 800x520.
windowSize: 1000px,800px
windowSize: 800px,520px
# Placement of Calamares window. Either "center" or "free".
# Whether "center" actually works does depend on the window
@@ -162,9 +162,9 @@ strings:
#
# These filenames can also use substitutions from os-release (see above).
images:
productBanner: "artix-banner.png"
productLogo: "artix-logo.svg"
productIcon: "artix-icon.svg"
productBanner: "banner.png"
productIcon: "logo.png"
productLogo: "logo.png"
# productWallpaper: "wallpaper.png"
productWelcome: "languages.png"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 399 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

After

Width:  |  Height:  |  Size: 818 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 720 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 84 KiB

BIN
branding/artix/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 775 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 957 KiB

After

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

After

Width:  |  Height:  |  Size: 873 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 502 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 121 KiB

View File

@@ -27,249 +27,152 @@ Presentation
id: presentation
Timer {
interval: 5000
interval: 10000
running: true
repeat: true
onTriggered: presentation.goToNextSlide()
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic0
source: "thanks.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic00
source: "artix.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic02
source: "tools.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic03
source: "desktops.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic04
source: "productivity.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic06
source: "browsers.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic07
source: "office.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic08
source: "multimedia.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic09
source: "web.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
Image {
id: pic11
source: "packages1.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
id: pic13
source: "packages2.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
source: "packages3.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
source: "packages4.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
source: "packages2.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic15
source: "customise.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
Slide {
Image {
source: "background.png"
width: parent.width * 4; height: parent.height * 4
fillMode: Image.Stretch
anchors.centerIn: parent
}
Image {
id: pic16
source: "rolling.png"
width: parent.width * 1.12; height: parent.height * 1.5
fillMode: Image.PreserveAspectFit
fillMode: Image.Stretch
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.height / 16
anchors.verticalCenterOffset: -20
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

After

Width:  |  Height:  |  Size: 136 KiB

View File

@@ -43,8 +43,6 @@ backend: dummy
# when set to true. If missing, false is assumed.
# *copy_pacconf* is a boolean that includes copying the host's pacman.conf
# to the install root. If missing, false is assumed.
# *requirements* filesystem requirements to install base
# *keyrings* list of keyrings to initialize and populate
pacman:
num_retries: 0
@@ -53,68 +51,27 @@ pacman:
handle_keyrings: false
copy_pacconf: false
requirements:
- dest: /etc
- name: /etc
mode: "0o755"
- dest: /var
- name: /var
mode: "0o755"
- dest: /var/cache
- name: /var/cache
mode: "0o755"
- dest: /var/cache/pacman
- name: /var/cache/pacman
mode: "0o755"
- dest: /var/cache/pacman/pkg
- name: /var/cache/pacman/pkg
mode: "0o755"
- dest: /var/lib
- name: /var/lib
mode: "0o755"
- dest: /var/lib/pacman
- name: /var/lib/pacman
mode: "0o755"
keyrings:
- artix
# the artix base package allows selection of the init system tied to elogind
# this option is artix specific
# base_init: elogind
# List of maps with package operations such as install or remove.
# Distro developers can provide a list of packages to remove
# from the installed system (for instance packages meant only
# for the live system).
#
# A job implementing a distro specific logic to determine other
# packages that need to be installed or removed can run before
# this one. Distro developers may want to install locale packages
# or remove drivers not needed on the installed system.
# Such a job would populate a list of dictionaries in the global
# storage called "packageOperations" and that list is processed
# after the static list in the job configuration (i.e. the list
# that is in this configuration file).
#
# Allowed package operations are:
# - *install*, *try_install*: will call the package manager to
# install one or more packages. The install target will
# abort the whole installation if package-installation
# fails, while try_install carries on. Packages may be
# listed as (localized) names, or as (localized) package-data.
# See below for the description of the format.
# - *localInstall*: this is used to call the package manager
# to install a package from a path-to-a-package. This is
# useful if you have a static package archive on the install media.
# The *pacman* package manager is the only one to specially support
# this operation (all others treat this the same as *install*).
# - *remove*, *try_remove*: will call the package manager to
# remove one or more packages. The remove target will
# abort the whole installation if package-removal fails,
# while try_remove carries on. Packages may be listed as
# (localized) names.
# One additional key is recognized, to help netinstall out:
# - *source*: ignored, does get logged
# Any other key is ignored, and logged as a warning.
#
# There are two formats for naming packages: as a name or as package-data,
# which is an object notation providing package-name, as well as pre- and
# post-install scripts.
operations:
- install:
- base

View File

@@ -239,23 +239,6 @@ class PackageManager(metaclass=abc.ABCMeta):
# even the Dummy implementation.
#
class PMDummy(PackageManager):
backend = "dummy"
def install(self, pkgs, from_local=False):
from time import sleep
libcalamares.utils.debug("Dummy backend: Installing " + str(pkgs))
sleep(3)
def remove(self, pkgs):
from time import sleep
libcalamares.utils.debug("Dummy backend: Removing " + str(pkgs))
sleep(3)
def run(self, script):
libcalamares.utils.debug("Dummy backend: Running script '" + str(script) + "'")
class PMPacman(PackageManager):
backend = "pacman"
@@ -327,13 +310,29 @@ class PMPacman(PackageManager):
install_root = libcalamares.globalstorage.value("rootMountPoint")
self.setup_requirements(install_root)
cal_umask = os.umask(0)
for target in self.pacman_requirements:
dest = install_root + target["name"]
if not os.path.exists(dest):
mod = int(target["mode"],8)
os.mkdir(dest, mode=mod)
libcalamares.utils.debug("Mode: {!s}".format(oct(mod)))
libcalamares.utils.debug("Created: {!s}".format(dest))
self.copy_file(install_root, "etc/resolv.conf")
path = join(install_root, "run")
os.chmod(path, 0o755)
os.umask(cal_umask)
f = "etc/resolv.conf"
if os.path.exists(join("/",f)):
shutil.copy2(join("/",f), join(install_root, f))
command = ["pacman"]
command.extend(self.get_optargs(install_root))
cachedir = join(install_root, "var/cache/pacman/pkg")
dbdir = join(install_root, "var/lib/pacman")
pacman_args = ["--root", install_root, "--dbpath", dbdir, "--cachedir", cachedir]
command.extend(pacman_args)
# Don't ask for user intervention, take the default action
command.append("--noconfirm")
@@ -341,10 +340,10 @@ class PMPacman(PackageManager):
# Don't report download progress for each file
command.append("--noprogressbar")
if self.pacman_needed_only:
if self.pacman_needed_only is True:
command.append("--needed")
if self.pacman_disable_timeout:
if self.pacman_disable_timeout is True:
command.append("--disable-download-timeout")
if from_local:
@@ -364,36 +363,14 @@ class PMPacman(PackageManager):
self.populate_keyring()
if self.pacman_pacconf:
self.copy_file(install_root, "etc/pacman.conf")
f = "etc/pacman.conf"
if os.path.exists(join("/",f)):
shutil.copy2(join("/",f), join(install_root, f))
def remove(self, pkgs):
self.reset_progress()
self.run_pacman(["pacman", "-Rs", "--noconfirm"] + pkgs, True)
def get_optargs(self, rootdir):
cachedir = join(rootdir, "var/cache/pacman/pkg")
dbpath = join(rootdir, "var/lib/pacman")
args = ["--root", rootdir, "--dbpath", dbpath, "--cachedir", cachedir]
return args
def setup_requirements(self, rootdir):
cal_umask = os.umask(0)
for target in self.pacman_requirements:
dest = rootdir + target["dest"]
if not os.path.exists(dest):
mod = int(target["mode"],8)
os.mkdir(dest, mode=mod)
libcalamares.utils.debug("Mode: {!s}".format(oct(mod)))
libcalamares.utils.debug("Created: {!s}".format(dest))
path = join(rootdir, "run")
os.chmod(path, 0o755)
os.umask(cal_umask)
def copy_file(self, rootdir, f):
if os.path.exists(join("/",f)):
shutil.copy2(join("/",f), join(rootdir, f))
def init_keyring(self):
target_env_process_output(["pacman-key", "--init"])
@@ -515,14 +492,16 @@ def run():
if identifier == backend:
pkgman = impl()
break
else:
return "Bad backend", "backend=\"{}\"".format(backend)
else:
return "Bad backend", "backend=\"{}\"".format(backend)
if not libcalamares.globalstorage.value("hasInternet"):
libcalamares.utils.warning( "Package installation has been skipped: no internet" )
return None
operations = libcalamares.job.configuration.get("operations", [])
# if libcalamares.globalstorage.contains("packageOperations"):
# operations += libcalamares.globalstorage.value("packageOperations")
if libcalamares.job.configuration.get("base_init"):
base_init = libcalamares.job.configuration.get("base_init", None)

View File

@@ -7,12 +7,15 @@ find_package(${qtname} COMPONENTS Core Gui Widgets REQUIRED)
set(_extra_libraries "")
set(_extra_src "")
set(_netinstall ${CMAKE_CURRENT_SOURCE_DIR}/../netinstall)
include_directories(${_netinstall})
### OPTIONAL AppData XML support in PackageModel
#
#
option(BUILD_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" ON)
option(BUILD_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" OFF)
if(BUILD_APPDATA)
find_package(${qtname} COMPONENTS Xml)
find_package(${qtname} REQUIRED COMPONENTS Xml)
if(TARGET ${qtname}::Xml)
add_definitions(-DHAVE_APPDATA)
list(APPEND _extra_libraries ${qtname}::Xml)
@@ -23,23 +26,7 @@ endif()
### OPTIONAL AppStream support in PackageModel
#
#
option(BUILD_APPSTREAM "Support appstream: items in PackageChooser (requires libappstream-qt)" ON)
if(BUILD_APPSTREAM)
find_package(AppStreamQt)
set_package_properties(
AppStreamQt
PROPERTIES
DESCRIPTION "Support for AppStream (cache) data"
URL "https://github.com/ximion/appstream"
PURPOSE "AppStream provides package data"
TYPE OPTIONAL
)
if(AppStreamQt_FOUND)
add_definitions(-DHAVE_APPSTREAM_VERSION=${AppStreamQt_VERSION_MAJOR})
list(APPEND _extra_libraries AppStreamQt)
list(APPEND _extra_src ItemAppStream.cpp)
endif()
endif()
#include(AppStreamHelper)
calamares_add_plugin(packagechooser
TYPE viewmodule
@@ -48,7 +35,10 @@ calamares_add_plugin(packagechooser
Config.cpp
PackageChooserPage.cpp
PackageChooserViewStep.cpp
PackageModel.cpp
PackageChooserModel.cpp
${_netinstall}/LoaderQueue.cpp
${_netinstall}/PackageModel.cpp
${_netinstall}/PackageTreeItem.cpp
${_extra_src}
RESOURCES
packagechooser.qrc
@@ -59,7 +49,11 @@ calamares_add_plugin(packagechooser
SHARED_LIB
)
# include(CalamaresAddTest)
if(AppStreamQt_FOUND)
target_link_libraries(calamares_viewmodule_packagechooser PRIVATE calamares::appstreamqt)
target_sources(calamares_viewmodule_packagechooser PRIVATE ItemAppStream.cpp)
endif()
# calamares_add_test(
# packagechoosertest
# GUI

View File

@@ -10,13 +10,14 @@
#include "Config.h"
#include "LoaderQueue.h"
#ifdef HAVE_APPDATA
#include "ItemAppData.h"
#endif
#ifdef HAVE_APPSTREAM_VERSION
#include "ItemAppStream.h"
#include <AppStreamQt/pool.h>
#include <memory>
#endif
@@ -26,6 +27,9 @@
#include "packages/Globals.h"
#include "utils/Logger.h"
#include "utils/Variant.h"
#include "network/Manager.h"
#include <QNetworkReply>
/** @brief This removes any values from @p groups that match @p source
*
@@ -87,12 +91,68 @@ PackageChooserMethodNames()
Config::Config( QObject* parent )
: Calamares::ModuleSystem::Config( parent )
, m_model( new PackageListModel( this ) )
, m_netmodel( new PackageModel( this ) )
, m_mode( PackageChooserMode::Required )
{
}
Config::~Config() {}
QString
Config::status() const
{
switch ( m_status )
{
case Status::Ok:
return QString();
case Status::FailedBadConfiguration:
return tr( "Network Installation. (Disabled: Incorrect configuration)" );
case Status::FailedBadData:
return tr( "Network Installation. (Disabled: Received invalid groups data)" );
case Status::FailedInternalError:
return tr( "Network Installation. (Disabled: Internal error)" );
case Status::FailedNetworkError:
return tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" );
case Status::FailedNoData:
return tr( "Network Installation. (Disabled: No package list)" );
}
__builtin_unreachable();
}
void
Config::setStatus( Status s )
{
m_status = s;
emit statusChanged( status() );
}
void
Config::loadGroupList( const QVariantList& groupData )
{
m_netmodel->setupModelData( groupData );
if ( m_netmodel->rowCount() < 1 )
{
cWarning() << "NetInstall groups data was empty.";
setStatus( Status::FailedNoData );
}
else
{
setStatus( Status::Ok );
}
}
void
Config::loadingDone()
{
if ( m_queue )
{
m_queue->deleteLater();
m_queue = nullptr;
}
emit statusReady();
}
const PackageItem&
Config::introductionPackage() const
{
@@ -324,6 +384,29 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
{
fillModel( m_model, configurationMap.value( "items" ).toList() );
// Lastly, load the groups data
// const QString key = QStringLiteral( "groupsUrl" );
//
//
// const auto& groupsUrlVariant = configurationMap.value( key );
// m_queue = new LoaderQueue( this );
// if ( Calamares::typeOf( groupsUrlVariant ) == Calamares::StringVariantType )
// {
// m_queue->append( SourceItem::makeSourceItem( groupsUrlVariant.toString(), configurationMap ) );
// }
// else if ( Calamares::typeOf( groupsUrlVariant ) == Calamares::ListVariantType )
// {
// for ( const auto& s : groupsUrlVariant.toStringList() )
// {
// m_queue->append( SourceItem::makeSourceItem( s, configurationMap ) );
// }
// }
//
// setStatus( required() ? Status::FailedNoData : Status::Ok );
// cDebug() << "Loading netinstall from" << m_queue->count() << "alternate sources.";
// connect( m_queue, &LoaderQueue::done, this, &Config::loadingDone );
// m_queue->load();
QString default_item_id = Calamares::getString( configurationMap, "default" );
if ( !default_item_id.isEmpty() )
{

View File

@@ -11,14 +11,22 @@
#ifndef PACKAGECHOOSER_CONFIG_H
#define PACKAGECHOOSER_CONFIG_H
#include "PackageChooserModel.h"
#include "PackageModel.h"
#include "modulesystem/Config.h"
#include "modulesystem/InstanceKey.h"
#include <QObject>
#include <QVariantMap>
#include <memory>
#include <optional>
class LoaderQueue;
enum class PackageChooserMode
{
Optional, // zero or one
@@ -55,6 +63,9 @@ class Config : public Calamares::ModuleSystem::Config
Q_PROPERTY( QString packageChoice READ packageChoice WRITE setPackageChoice NOTIFY packageChoiceChanged )
Q_PROPERTY( QString prettyStatus READ prettyStatus NOTIFY prettyStatusChanged FINAL )
Q_PROPERTY( PackageModel* PackageModel MEMBER m_netmodel FINAL )
Q_PROPERTY( QString status READ status NOTIFY statusChanged FINAL )
public:
Config( QObject* parent = nullptr );
~Config() override;
@@ -73,6 +84,10 @@ public:
PackageListModel* model() const { return m_model; }
QModelIndex defaultSelectionIndex() const { return m_defaultModelIndex; }
PackageModel* netmodel() const { return m_netmodel; }
void loadGroupList( const QVariantList& groupData );
/** @brief Returns an "introductory package" which describes packagechooser
*
* If the model contains a "none" package, returns that one on
@@ -101,14 +116,43 @@ public:
QString prettyName() const;
QString prettyStatus() const;
enum class Status
{
Ok,
FailedBadConfiguration,
FailedInternalError,
FailedNetworkError,
FailedBadData,
FailedNoData
};
/// Human-readable, translated representation of the status
QString status() const;
/// Internal code for the status
Status statusCode() const { return m_status; }
void setStatus( Status s );
signals:
void packageChoiceChanged( QString packageChoice );
void prettyStatusChanged();
Q_SIGNALS:
void statusChanged( QString status ); ///< Something changed
void sidebarLabelChanged( QString label );
void titleLabelChanged( QString label );
void statusReady(); ///< Loading groups is complete
private Q_SLOTS:
void loadingDone();
private:
PackageListModel* m_model = nullptr;
QModelIndex m_defaultModelIndex;
PackageModel* m_netmodel = nullptr;
LoaderQueue* m_queue = nullptr;
Status m_status = Status::Ok;
/// Selection mode for this module
PackageChooserMode m_mode = PackageChooserMode::Optional;
/// How this module stores to GS

View File

@@ -11,7 +11,7 @@
*
* Only used if QtXML is found, implements PackageItem::fromAppData().
*/
#include "PackageModel.h"
#include "PackageChooserModel.h"
#include "utils/Logger.h"
#include "utils/Variant.h"

View File

@@ -10,7 +10,7 @@
#ifndef ITEMAPPDATA_H
#define ITEMAPPDATA_H
#include "PackageModel.h"
#include "PackageChooserModel.h"
/** @brief Loads an AppData XML file and returns a PackageItem
*

View File

@@ -7,20 +7,16 @@
*
*/
/** @brief Loading items from AppData XML files.
/** @brief Loading items from AppStream database.
*
* Only used if QtXML is found, implements PackageItem::fromAppData().
* Only used if AppStreamQt is found, implements PackageItem::fromAppStream().
*/
#include "PackageModel.h"
#include "ItemAppStream.h"
#include "locale/TranslationsModel.h"
#include "utils/Logger.h"
#include "utils/Variant.h"
#include <AppStreamQt/image.h>
#include <AppStreamQt/pool.h>
#include <AppStreamQt/screenshot.h>
/// @brief Return number of pixels in a size, for < ordering purposes
static inline quint64
sizeOrder( const QSize& size )

View File

@@ -10,12 +10,30 @@
#ifndef ITEMAPPSTREAM_H
#define ITEMAPPSTREAM_H
#include "PackageModel.h"
#include "PackageChooserModel.h"
namespace AppStream
{
class Pool;
} // namespace AppStream
/*
* This weird include mechanism is because an #include line is allowed
* to consist of preprocessor-tokens, which are expanded, and then
* the #include is *re*processed. But if it starts with < or ", then
* preprocessor tokens are not expanded. So we build up a #include <>
* style line with a suitable path -- if we are given a value for
* HAVE_APPSTREAM_HEADERS, that is the directory that the AppStreamQt
* headers live in.
*/
#define CALAMARES_LT <
#define CALAMARES_GT >
#ifndef HAVE_APPSTREAM_HEADERS
#define HAVE_APPSTREAM_HEADERS AppStreamQt
#endif
#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/pool.h CALAMARES_GT
#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/image.h CALAMARES_GT
#include CALAMARES_LT HAVE_APPSTREAM_HEADERS/screenshot.h CALAMARES_GT
#undef CALAMARES_LT
#undef CALAMARES_GT
/** @brief Loads an item from AppStream data.
*

View File

@@ -7,12 +7,15 @@
*
*/
#include "PackageModel.h"
#include "PackageChooserModel.h"
#include "Branding.h"
#include "utils/Logger.h"
#include "utils/Variant.h"
#include "compat/Variant.h"
#include "utils/Yaml.h"
#include <QFileInfo>
/** @brief A wrapper for Calamares::getSubMap that excludes the success param

View File

@@ -7,12 +7,19 @@
*
*/
#ifndef PACKAGEMODEL_H
#define PACKAGEMODEL_H
#ifndef PACKAGECHOOSERMODEL_H
#define PACKAGECHOOSERMODEL_H
#include "locale/TranslatableConfiguration.h"
#include "utils/NamedEnum.h"
#include <QAbstractItemModel>
#include <QString>
#include "PackageTreeItem.h"
#include <QAbstractListModel>
#include <QObject>
#include <QPixmap>

View File

@@ -11,7 +11,7 @@
#define PACKAGECHOOSERPAGE_H
#include "Config.h"
#include "PackageModel.h"
#include "PackageChooserModel.h"
#include <QAbstractItemModel>
#include <QWidget>

View File

@@ -11,7 +11,7 @@
#include "Config.h"
#include "PackageChooserPage.h"
#include "PackageModel.h"
#include "PackageChooserModel.h"
#include "GlobalStorage.h"
#include "JobQueue.h"

View File

@@ -15,7 +15,7 @@
#ifdef HAVE_APPSTREAM_VERSION
#include "ItemAppStream.h"
#endif
#include "PackageModel.h"
#include "PackageChooserModel.h"
#include "utils/Logger.h"

View File

@@ -1,69 +0,0 @@
# === This file is part of Calamares - <https://calamares.io> ===
#
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
# SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
# SPDX-License-Identifier: BSD-2-Clause
#
if( NOT Calamares_WITH_QML )
calamares_skip_module( "packagechooserq (QML is not supported in this build)" )
return()
endif()
find_package(${qtname} ${QT_VERSION} CONFIG REQUIRED Core)
# Add optional libraries here
set(USER_EXTRA_LIB)
# include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../packagechooser )
set(_packagechooser ${CMAKE_CURRENT_SOURCE_DIR}/../packagechooser)
include_directories(${_packagechooser})
### OPTIONAL AppData XML support in PackageModel
#
#
option(BUILD_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" ON)
if(BUILD_APPDATA)
find_package(${qtname} COMPONENTS Xml)
if(TARGET ${qtname}::Xml)
add_definitions(-DHAVE_APPDATA)
list(APPEND _extra_libraries ${qtname}::Xml)
list(APPEND _extra_src ${_packagechooser}/ItemAppData.cpp)
endif()
endif()
### OPTIONAL AppStream support in PackageModel
#
#
option(BUILD_APPSTREAM "Support appstream: items in PackageChooser (requires libappstream-qt)" ON)
if(BUILD_APPSTREAM)
find_package(AppStreamQt)
set_package_properties(
AppStreamQt
PROPERTIES
DESCRIPTION "Support for AppStream (cache) data"
URL "https://github.com/ximion/appstream"
PURPOSE "AppStream provides package data"
TYPE OPTIONAL
)
if(AppStreamQt_FOUND)
add_definitions(-DHAVE_APPSTREAM_VERSION=${AppStreamQt_VERSION_MAJOR})
list(APPEND _extra_libraries AppStreamQt)
list(APPEND _extra_src ${_packagechooser}/ItemAppStream.cpp)
endif()
endif()
calamares_add_plugin(packagechooserq
TYPE viewmodule
EXPORT_MACRO PLUGINDLLEXPORT_PRO
SOURCES
PackageChooserQmlViewStep.cpp
${_packagechooser}/Config.cpp
${_packagechooser}/PackageModel.cpp
${_extra_src}
RESOURCES
packagechooserq${QT_VERSION_SUFFIX}.qrc
LINK_PRIVATE_LIBRARIES
calamaresui
${_extra_libraries}
SHARED_LIB
)

View File

@@ -1,86 +0,0 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
#include "PackageChooserQmlViewStep.h"
#include "GlobalStorage.h"
#include "JobQueue.h"
#include "locale/TranslatableConfiguration.h"
#include "utils/Logger.h"
#include "utils/System.h"
#include "utils/Variant.h"
CALAMARES_PLUGIN_FACTORY_DEFINITION( PackageChooserQmlViewStepFactory, registerPlugin< PackageChooserQmlViewStep >(); )
PackageChooserQmlViewStep::PackageChooserQmlViewStep( QObject* parent )
: Calamares::QmlViewStep( parent )
, m_config( new Config( this ) )
{
emit nextStatusChanged( true );
}
QString
PackageChooserQmlViewStep::prettyName() const
{
return m_config->prettyName();
}
QString
PackageChooserQmlViewStep::prettyStatus() const
{
//QString option = m_pkgc;
//return tr( "Install option: %1" ).arg( option );
return m_config->prettyStatus();
}
bool
PackageChooserQmlViewStep::isNextEnabled() const
{
return true;
}
bool
PackageChooserQmlViewStep::isBackEnabled() const
{
return true;
}
bool
PackageChooserQmlViewStep::isAtBeginning() const
{
return true;
}
bool
PackageChooserQmlViewStep::isAtEnd() const
{
return true;
}
Calamares::JobList
PackageChooserQmlViewStep::jobs() const
{
Calamares::JobList l;
return l;
}
void
PackageChooserQmlViewStep::onLeave()
{
m_config->updateGlobalStorage();
}
void
PackageChooserQmlViewStep::setConfigurationMap( const QVariantMap& configurationMap )
{
m_config->setDefaultId( moduleInstanceKey() );
m_config->setConfigurationMap( configurationMap );
Calamares::QmlViewStep::setConfigurationMap( configurationMap ); // call parent implementation last
}

View File

@@ -1,58 +0,0 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2019 Adriaan de Groot <groot@kde.org>
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
#ifndef PACKAGECHOOSERQMLVIEWSTEP_H
#define PACKAGECHOOSERQMLVIEWSTEP_H
// Config from packagechooser module
#include "Config.h"
#include "DllMacro.h"
#include "locale/TranslatableConfiguration.h"
#include "utils/PluginFactory.h"
#include "viewpages/QmlViewStep.h"
#include <QVariantMap>
class Config;
class PackageChooserPage;
class PLUGINDLLEXPORT PackageChooserQmlViewStep : public Calamares::QmlViewStep
{
Q_OBJECT
public:
explicit PackageChooserQmlViewStep( QObject* parent = nullptr );
QString prettyName() const override;
QString prettyStatus() const override;
bool isNextEnabled() const override;
bool isBackEnabled() const override;
bool isAtBeginning() const override;
bool isAtEnd() const override;
//void onActivate() override;
void onLeave() override;
Calamares::JobList jobs() const override;
void setConfigurationMap( const QVariantMap& configurationMap ) override;
QObject* getConfig() override { return m_config; }
private:
Config* m_config;
};
CALAMARES_PLUGIN_FACTORY_DECLARATION( PackageChooserQmlViewStepFactory )
#endif // PACKAGECHOOSERQMLVIEWSTEP_H

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1,2 +0,0 @@
SPDX-FileCopyrightText: 2020 demmm <anke62@gmail.com>
SPDX-License-Identifier: GPL-3.0-or-later

View File

@@ -1,304 +0,0 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
import io.calamares.core 1.0
import io.calamares.ui 1.0
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
Item {
width: parent.width
height: parent.height
Rectangle {
anchors.fill: parent
color: "#f2f2f2"
ButtonGroup {
id: switchGroup
}
Column {
id: column
anchors.centerIn: parent
spacing: 5
Rectangle {
//id: rectangle
width: 700
height: 150
color: "#ffffff"
radius: 10
border.width: 0
Text {
width: 450
height: 104
anchors.centerIn: parent
text: qsTr("OpenRC base system.<br/>
Default option.")
font.pointSize: 10
anchors.verticalCenterOffset: -10
anchors.horizontalCenterOffset: 100
wrapMode: Text.WordWrap
}
Switch {
id: element1
x: 500
y: 110
width: 187
height: 14
text: qsTr("OpenRC")
checked: true
hoverEnabled: true
ButtonGroup.group: switchGroup
indicator: Rectangle {
implicitWidth: 40
implicitHeight: 14
radius: 10
color: element1.checked ? "#3498db" : "#B9B9B9"
border.color: element1.checked ? "#3498db" : "#cccccc"
Rectangle {
x: element1.checked ? parent.width - width : 0
y: (parent.height - height) / 2
width: 20
height: 20
radius: 10
color: element1.down ? "#cccccc" : "#ffffff"
border.color: element1.checked ? (element1.down ? "#3498db" : "#3498db") : "#999999"
}
}
onCheckedChanged: {
if ( checked ) {
config.packageChoice = "openrc"
}
}
}
Image {
id: image1
x: 8
y: 25
height: 100
fillMode: Image.PreserveAspectFit
source: "images/if.png"
}
}
Rectangle {
width: 700
height: 150
radius: 10
border.width: 0
Text {
width: 450
height: 104
anchors.centerIn: parent
text: qsTr("Dinit base system.")
font.pointSize: 10
anchors.verticalCenterOffset: -10
anchors.horizontalCenterOffset: 100
wrapMode: Text.WordWrap
}
Switch {
id: element2
x: 500
y: 110
width: 187
height: 14
text: qsTr("Dinit")
checked: false
hoverEnabled: true
ButtonGroup.group: switchGroup
indicator: Rectangle {
implicitWidth: 40
implicitHeight: 14
radius: 10
color: element2.checked ? "#3498db" : "#B9B9B9"
border.color: element2.checked ? "#3498db" : "#cccccc"
Rectangle {
x: element2.checked ? parent.width - width : 0
y: (parent.height - height) / 2
width: 20
height: 20
radius: 10
color: element2.down ? "#cccccc" : "#ffffff"
border.color: element2.checked ? (element2.down ? "#3498db" : "#3498db") : "#999999"
}
}
onCheckedChanged: {
if ( checked ) {
config.packageChoice = "dinit"
}
}
}
Image {
id: image2
x: 8
y: 25
height: 100
fillMode: Image.PreserveAspectFit
source: "images/if.png"
}
}
Rectangle {
width: 700
height: 150
color: "#ffffff"
radius: 10
border.width: 0
Text {
width: 450
height: 104
anchors.centerIn: parent
text: qsTr("Runit base system.")
font.pointSize: 10
anchors.verticalCenterOffset: -10
anchors.horizontalCenterOffset: 100
wrapMode: Text.WordWrap
}
Switch {
id: element3
x: 500
y: 110
width: 187
height: 14
text: qsTr("Runit")
checked: false
hoverEnabled: true
ButtonGroup.group: switchGroup
indicator: Rectangle {
implicitWidth: 40
implicitHeight: 14
radius: 10
color: element3.checked ? "#3498db" : "#B9B9B9"
border.color: element3.checked ? "#3498db" : "#cccccc"
Rectangle {
x: element3.checked ? parent.width - width : 0
y: (parent.height - height) / 2
width: 20
height: 20
radius: 10
color: element3.down ? "#cccccc" : "#ffffff"
border.color: element3.checked ? (element3.down ? "#3498db" : "#3498db") : "#999999"
}
}
onCheckedChanged: {
if ( checked ) {
config.packageChoice = "runit"
}
}
}
Image {
id: image3
x: 8
y: 25
height: 100
fillMode: Image.PreserveAspectFit
source: "images/if.png"
}
}
Rectangle {
width: 700
height: 150
color: "#ffffff"
radius: 10
border.width: 0
Text {
width: 450
height: 104
anchors.centerIn: parent
text: qsTr("S6 base system.")
font.pointSize: 10
anchors.verticalCenterOffset: -10
anchors.horizontalCenterOffset: 100
wrapMode: Text.WordWrap
}
Switch {
id: element4
x: 500
y: 110
width: 187
height: 14
text: qsTr("S6")
checked: false
hoverEnabled: true
ButtonGroup.group: switchGroup
indicator: Rectangle {
implicitWidth: 40
implicitHeight: 14
radius: 10
color: element4.checked ? "#3498db" : "#B9B9B9"
border.color: element4.checked ? "#3498db" : "#cccccc"
Rectangle {
x: element4.checked ? parent.width - width : 0
y: (parent.height - height) / 2
width: 20
height: 20
radius: 10
color: element4.down ? "#cccccc" : "#ffffff"
border.color: element4.checked ? (element4.down ? "#3498db" : "#3498db") : "#999999"
}
}
onCheckedChanged: {
if ( checked ) {
config.packageChoice = "s6"
}
}
}
Image {
id: image4
x: 8
y: 25
height: 100
fillMode: Image.PreserveAspectFit
source: "images/if.png"
}
}
Rectangle {
width: 700
height: 25
color: "#f2f2f2"
border.width: 0
Text {
height: 25
anchors.centerIn: parent
text: qsTr("Please select an option for your install, or use the default: OpenRC.")
font.pointSize: 10
wrapMode: Text.WordWrap
}
}
}
}
}

View File

@@ -1,6 +0,0 @@
<RCC>
<qresource>
<file alias="packagechooserq.qml">packagechooserq-qt6.qml</file>
<file>images/if.png</file>
</qresource>
</RCC>

View File

@@ -1,66 +0,0 @@
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the low-density software chooser, QML implementation
#
# The example QML implementation uses single-selection, rather than
# a model for the available packages. That makes it simpler: the
# QML itself codes the available options, descriptions and images
# -- after all, this is **low density** selection, so a custom UI
# can make sense for the few choices that need to be made.
#
#
---
# Software installation method:
#
# - "legacy" or "custom" or "contextualprocess"
# When set to "legacy", writes a GlobalStorage value for the choice that
# has been made. The key is *packagechooser_<id>*. The module's
# instance name is used; see the *instances* section of `settings.conf`.
# If there is just one packagechooserq module, and no special instance is set,
# resulting GS key is probably *packagechooser_packagechooserq*.
# (Do note that the prefix of the GS key remains "packagechooser_")
#
# The GS value is a comma-separated list of the IDs of the selected
# packages, or an empty string if none is selected.
#
# With "legacy" installation, you should have a contextualprocess or similar
# module somewhere in the `exec` phase to process the GlobalStorage key
# and actually **do** something for the packages.
#
# - "packages"
# When set to "packages", writes GlobalStorage values suitable for
# consumption by the *packages* module (which should appear later
# in the `exec` section. These package settings will then be handed
# off to whatever package manager is configured there.
#
# There is no need to put this module in the `exec` section. There
# are no jobs that this module provides. You should put **other**
# modules, either *contextualprocess* or *packages* or some custom
# module, in the `exec` section to do the actual work.
#
method: legacy
# Human-visible strings in this module. These are all optional.
# The following translated keys are used:
# - *step*, used in the overall progress view (left-hand pane)
#
# Each key can have a [locale] added to it, which is used as
# the translated string for that locale. For the strings
# associated with the "no-selection" item, see *items*, below
# with the explicit item-*id* "".
#
labels:
step: "Packages"
step[nl]: "Pakketten"
# The *packageChoice* value is used for setting the default selection
# in the QML view; this should match one of the keys used in the QML
# module for package names.
#
# (e.g. the sample QML uses "no_office_suite", "minimal_install" and
# "libreoffice" as possible choices).
#
packageChoice: libreoffice

View File

@@ -1,304 +0,0 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2021 Anke Boersma <demm@kaosx.us>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
import io.calamares.core 1.0
import io.calamares.ui 1.0
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.3
Item {
width: parent.width
height: parent.height
Rectangle {
anchors.fill: parent
color: "#f2f2f2"
ButtonGroup {
id: switchGroup
}
Column {
id: column
anchors.centerIn: parent
spacing: 5
Rectangle {
//id: rectangle
width: 700
height: 150
color: "#ffffff"
radius: 10
border.width: 0
Text {
width: 450
height: 104
anchors.centerIn: parent
text: qsTr("OpenRC base system.<br/>
Default option.")
font.pointSize: 10
anchors.verticalCenterOffset: -10
anchors.horizontalCenterOffset: 100
wrapMode: Text.WordWrap
}
Switch {
id: element1
x: 500
y: 110
width: 187
height: 14
text: qsTr("OpenRC")
checked: true
hoverEnabled: true
ButtonGroup.group: switchGroup
indicator: Rectangle {
implicitWidth: 40
implicitHeight: 14
radius: 10
color: element1.checked ? "#3498db" : "#B9B9B9"
border.color: element1.checked ? "#3498db" : "#cccccc"
Rectangle {
x: element1.checked ? parent.width - width : 0
y: (parent.height - height) / 2
width: 20
height: 20
radius: 10
color: element1.down ? "#cccccc" : "#ffffff"
border.color: element1.checked ? (element1.down ? "#3498db" : "#3498db") : "#999999"
}
}
onCheckedChanged: {
if ( checked ) {
config.packageChoice = "openrc"
}
}
}
Image {
id: image1
x: 8
y: 25
height: 100
fillMode: Image.PreserveAspectFit
source: "images/if.png"
}
}
Rectangle {
width: 700
height: 150
radius: 10
border.width: 0
Text {
width: 450
height: 104
anchors.centerIn: parent
text: qsTr("Dinit base system.")
font.pointSize: 10
anchors.verticalCenterOffset: -10
anchors.horizontalCenterOffset: 100
wrapMode: Text.WordWrap
}
Switch {
id: element2
x: 500
y: 110
width: 187
height: 14
text: qsTr("Dinit")
checked: false
hoverEnabled: true
ButtonGroup.group: switchGroup
indicator: Rectangle {
implicitWidth: 40
implicitHeight: 14
radius: 10
color: element2.checked ? "#3498db" : "#B9B9B9"
border.color: element2.checked ? "#3498db" : "#cccccc"
Rectangle {
x: element2.checked ? parent.width - width : 0
y: (parent.height - height) / 2
width: 20
height: 20
radius: 10
color: element2.down ? "#cccccc" : "#ffffff"
border.color: element2.checked ? (element2.down ? "#3498db" : "#3498db") : "#999999"
}
}
onCheckedChanged: {
if ( checked ) {
config.packageChoice = "dinit"
}
}
}
Image {
id: image2
x: 8
y: 25
height: 100
fillMode: Image.PreserveAspectFit
source: "images/if.png"
}
}
Rectangle {
width: 700
height: 150
color: "#ffffff"
radius: 10
border.width: 0
Text {
width: 450
height: 104
anchors.centerIn: parent
text: qsTr("Runit base system.")
font.pointSize: 10
anchors.verticalCenterOffset: -10
anchors.horizontalCenterOffset: 100
wrapMode: Text.WordWrap
}
Switch {
id: element3
x: 500
y: 110
width: 187
height: 14
text: qsTr("Runit")
checked: false
hoverEnabled: true
ButtonGroup.group: switchGroup
indicator: Rectangle {
implicitWidth: 40
implicitHeight: 14
radius: 10
color: element3.checked ? "#3498db" : "#B9B9B9"
border.color: element3.checked ? "#3498db" : "#cccccc"
Rectangle {
x: element3.checked ? parent.width - width : 0
y: (parent.height - height) / 2
width: 20
height: 20
radius: 10
color: element3.down ? "#cccccc" : "#ffffff"
border.color: element3.checked ? (element3.down ? "#3498db" : "#3498db") : "#999999"
}
}
onCheckedChanged: {
if ( checked ) {
config.packageChoice = "runit"
}
}
}
Image {
id: image3
x: 8
y: 25
height: 100
fillMode: Image.PreserveAspectFit
source: "images/if.png"
}
}
Rectangle {
width: 700
height: 150
color: "#ffffff"
radius: 10
border.width: 0
Text {
width: 450
height: 104
anchors.centerIn: parent
text: qsTr("S6 base system.")
font.pointSize: 10
anchors.verticalCenterOffset: -10
anchors.horizontalCenterOffset: 100
wrapMode: Text.WordWrap
}
Switch {
id: element4
x: 500
y: 110
width: 187
height: 14
text: qsTr("S6")
checked: false
hoverEnabled: true
ButtonGroup.group: switchGroup
indicator: Rectangle {
implicitWidth: 40
implicitHeight: 14
radius: 10
color: element4.checked ? "#3498db" : "#B9B9B9"
border.color: element4.checked ? "#3498db" : "#cccccc"
Rectangle {
x: element4.checked ? parent.width - width : 0
y: (parent.height - height) / 2
width: 20
height: 20
radius: 10
color: element4.down ? "#cccccc" : "#ffffff"
border.color: element4.checked ? (element4.down ? "#3498db" : "#3498db") : "#999999"
}
}
onCheckedChanged: {
if ( checked ) {
config.packageChoice = "s6"
}
}
}
Image {
id: image4
x: 8
y: 25
height: 100
fillMode: Image.PreserveAspectFit
source: "images/if.png"
}
}
Rectangle {
width: 700
height: 25
color: "#f2f2f2"
border.width: 0
Text {
height: 25
anchors.centerIn: parent
text: qsTr("Please select an option for your install, or use the default: OpenRC.")
font.pointSize: 10
wrapMode: Text.WordWrap
}
}
}
}
}

View File

@@ -1,6 +0,0 @@
<RCC>
<qresource>
<file>packagechooserq.qml</file>
<file>images/if.png</file>
</qresource>
</RCC>

View File

@@ -1,35 +0,0 @@
#!/bin/bash
export XAUTHCOOKIE=$XAUTHORITY
readonly conf=/etc/calamares-config-switcher.conf
online_text='<span font="Roboto Regular 12"><b>Online</b> method lets you choose your desktop and most of your system components. It requires a (fast) internet connection and you get the most up-to-date software.
It may lead to incorrectly configured and even unbootable system, if the user makes wrong choices or the internet connection fails.
<b>Still experimental.</b></span>:LBL'
offline_text='<span font="Roboto Regular 12"><b>Offline</b> method copies this awesome live image to your disk. It is faster and immune to user errors.
Choose this if even slightly unsure; you can update at any time after installation.
You know what they say about red buttons.
<b>Seriously, choose offline.</b></span>:LBL'
online_icon='/etc/calamares-online/network-online.svg'
offline_icon='/etc/calamares-offline/network-offline.svg'
online_button='<span foreground="red" font="Roboto Bold 14"> Online</span>!'$online_icon'!:5'
offline_button='<span foreground="lime" font="Roboto Bold 14"> Offline</span>!'$offline_icon'!:7'
yad --center --on-top --form --window-icon='/usr/share/icons/artix/logo.svg' --height=384 --width=768 \
--title='Choose installation method' --image='/usr/share/icons/breeze-dark/apps/48/calamares.svg' \
--text-align='center' --text='<span font="Roboto Bold 14">Choose installation method\n\n</span>' \
--columns=2 --borders=10 --homogeneous --scroll --buttons-layout='spread' \
--field="$online_text" --field="$offline_text" --button="$online_button" --button="$offline_button"
if [ $? -eq 5 ]; then
mode='online'
else
mode='offline'
fi
pkexec ln -snf /etc/calamares-"$mode" /etc/calamares
pkexec env DISPLAY=:0 XAUTHORITY=$XAUTHCOOKIE QT_QPA_PLATFORMTHEME=gtk2 calamares "$@"

View File

@@ -1,8 +0,0 @@
#!/hint/bash
# calamares config switcher configuration
title="Switcher"
text="Select calamares<br>configuration:"
configs=(online offline)

View File

@@ -1,243 +0,0 @@
[Desktop Entry]
Type=Application
Version=1.0
Name=Install Artix
GenericName=System Installer
Keywords=calamares;system;installer;
TryExec=calamares-config-switcher
Exec=calamares-config-switcher
Comment=Calamares — System Installer
Icon=artixlinux-logo
Terminal=false
StartupNotify=true
Categories=Qt;System;
X-AppStream-Ignore=true
Name[ar]=تثبيت النظام
Icon[ar]=كالامارس
GenericName[ar]=مثبت النظام
Comment[ar]=كالامارس - مثبت النظام
Name[as]=চিছটেম ইনস্তল কৰক
Icon[as]=কেলামাৰেচ
GenericName[as]=চিছটেম ইনস্তলাৰ
Comment[as]=কেলামাৰেচ — চিছটেম​ ইনস্তলাৰ
Name[ast]=Instalar el sistema
Icon[ast]=calamares
GenericName[ast]=Instalador del sistema
Comment[ast]=Calamares — Instalador del sistema
Name[az]=Sistemi Quraşdırmaq
Icon[az]=calamares
GenericName[az]=Sistem Quraşdırıcısı
Comment[az]=Calamares Sistem Quraşdırıcısı
Name[az_AZ]=Sistemi quraşdırmaq
Icon[az_AZ]=calamares
GenericName[az_AZ]=Sistem quraşdırcısı
Comment[az_AZ]=Calamares — Sistem Quraşdırıcısı
Name[be]=Усталяваць сістэму
Icon[be]=calamares
GenericName[be]=Усталёўшчык сістэмы
Comment[be]=Calamares — усталёўшчык сістэмы
Name[bg]=Инсталирай системата
Icon[bg]=calamares
GenericName[bg]=Системен инсталатор
Comment[bg]=„Calamares“ Системен инсталатор
Name[bn]=সিস্টেম ইনস্টল করুন
Icon[bn]=ক্যালামারেস
GenericName[bn]=সিস্টেম ইনস্টলার
Comment[bn]=ক্যালামারেস - সিস্টেম ইনস্টলার
Name[ca]=Instal·la el sistema
Icon[ca]=calamares
GenericName[ca]=Instal·lador de sistema
Comment[ca]=Calamares — Instal·lador de sistema
Name[cs_CZ]=Nainstalovat systém
Icon[cs_CZ]=calamares
GenericName[cs_CZ]=Instalátor systému
Comment[cs_CZ]=Calamares instalátor operačních systémů
Name[da]=Installér system
Icon[da]=calamares
GenericName[da]=Systeminstallationsprogram
Comment[da]=Calamares — Systeminstallationsprogram
Name[de]=System installieren
Icon[de]=calamares
GenericName[de]=Installation des Betriebssystems
Comment[de]=Calamares - Installation des Betriebssystems
Name[el]=Εγκατάσταση συστήματος
Icon[el]=calamares
GenericName[el]=Εγκατάσταση συστήματος
Comment[el]=Calamares — Εγκατάσταση συστήματος
Name[en_GB]=Install System
Icon[en_GB]=calamares
GenericName[en_GB]=System Installer
Comment[en_GB]=Calamares — System Installer
Name[eo]=Instali Sistemo
Icon[eo]=calamares
GenericName[eo]=Sistema Instalilo
Comment[eo]=Calamares — Sistema Instalilo
Name[es]=Instalar el sistema
Icon[es]=calamares
GenericName[es]=Instalador del sistema
Comment[es]=Calamares — Instalador del sistema
Name[es_MX]=Instalar el Sistema
Icon[es_MX]=calamares
GenericName[es_MX]=Instalador del sistema
Comment[es_MX]=Calamares - Instalador del sistema
Name[es_PR]=Instalar el sistema
Name[et]=Paigalda süsteem
Icon[et]=calamares
GenericName[et]=Süsteemipaigaldaja
Comment[et]=Calamares — süsteemipaigaldaja
Name[eu]=Sistema instalatu
Icon[eu]=calamares
GenericName[eu]=Sistema instalatzailea
Comment[eu]=Calamares - sistema instalatzailea
Name[fa]=نصب سامانه
Icon[fa]=کالامارس
GenericName[fa]=نصب‌کننده سامانه
Comment[fa]=کالامارس — نصب‌کننده سامانه
Name[fi_FI]=Asenna järjestelmä
Icon[fi_FI]=calamares
GenericName[fi_FI]=Järjestelmän asennusohjelma
Comment[fi_FI]=Calamares — Järjestelmän asentaja
Name[fr]=Installer le système
Icon[fr]=calamares
GenericName[fr]=Installateur système
Comment[fr]=Calamares - Installateur système
Name[fur]=Instale il sisteme
Icon[fur]=calamares
GenericName[fur]=Program di instalazion dal sisteme
Comment[fur]=Calamares — Program di instalazion dal sisteme
Name[gl]=Instalación do Sistema
Icon[gl]=calamares
GenericName[gl]=Instalador de sistemas
Comment[gl]=Calamares — Instalador de sistemas
Name[he]=התקנת מערכת
Icon[he]=calamares
GenericName[he]=אשף התקנה
Comment[he]=Calamares - אשף התקנה
Name[hi]=सिस्टम इंस्टॉल करें
Icon[hi]=calamares
GenericName[hi]=सिस्टम इंस्टॉलर
Comment[hi]=Calamares — सिस्टम इंस्टॉलर
Name[hr]=Instaliraj sustav
Icon[hr]=calamares
GenericName[hr]=Instalacija sustava
Comment[hr]=Calamares — Instalacija sustava
Name[hu]=Rendszer telepítése
Icon[hu]=calamares
GenericName[hu]=Rendszertelepítő
Comment[hu]=Calamares Rendszertelepítő
Name[id]=Instal Sistem
Icon[id]=calamares
GenericName[id]=Pemasang
Comment[id]=Calamares — Pemasang Sistem
Name[ie]=Installar li sistema
Icon[ie]=calamares
GenericName[ie]=Installator del sistema
Comment[ie]=Calamares — Installator del sistema
Name[is]=Setja upp kerfið
Icon[is]=calamares
GenericName[is]=Kerfis uppsetning
Comment[is]=Calamares — Kerfis uppsetning
Name[it_IT]=Installa il sistema
Icon[it_IT]=calamares
GenericName[it_IT]=Programma d'installazione del sistema
Comment[it_IT]=Calamares — Programma d'installazione del sistema
Name[ja]=システムをインストール
Icon[ja]=calamares
GenericName[ja]=システムインストーラー
Comment[ja]=Calamares — システムインストーラー
Name[ko]=시스템 설치
Icon[ko]=깔라마레스
GenericName[ko]=시스템 설치 관리자
Comment[ko]=깔라마레스 — 시스템 설치 관리자
Name[lt]=Įdiegti Sistemą
Icon[lt]=calamares
GenericName[lt]=Sistemos diegimas į kompiuterį
Comment[lt]=Calamares — Sistemos diegimo programa
Name[mk]=Инсталирај го системот
Icon[mk]=calamares
GenericName[mk]=Системен Инсталер
Comment[mk]=Calamares - Системен Инсталер
Name[ml]=സിസ്റ്റം ഇൻസ്റ്റാൾ ചെയ്യുക
Icon[ml]=കലാമാരേസ്
GenericName[ml]=സിസ്റ്റം ഇൻസ്റ്റാളർ
Comment[ml]=കലാമാരേസ് - സിസ്റ്റം ഇൻസ്റ്റാളർ
Name[nb]=Installer System
Icon[nb]=calamares
GenericName[nb]=Systeminstallatør
Comment[nb]=Calamares-systeminstallatør
Name[ne_NP]= सिस्टम इन्स्टल गर्नुहोस्
Icon[ne_NP]=Calamares
GenericName[ne_NP]=सिस्टम इन्स्टलर
Comment[ne_NP]=Calamares - सिस्टम इन्स्टलर
Name[nl]=Installeer systeem
Icon[nl]=calamares
GenericName[nl]=Installatieprogramma
Comment[nl]=Calamares — Installatieprogramma
Name[pl]=Zainstaluj system
Icon[pl]=calamares
GenericName[pl]=Instalator systemu
Comment[pl]=Calamares — Instalator systemu
Name[pt_BR]=Sistema de Instalação
Icon[pt_BR]=calamares
GenericName[pt_BR]=Instalador de Sistema
Comment[pt_BR]=Calamares — Instalador de Sistema
Name[pt_PT]=Instalar Sistema
Icon[pt_PT]=calamares
GenericName[pt_PT]=Instalador de Sistema
Comment[pt_PT]=Instalador de Sistema - Calamares
Name[ro]=Instalează sistemul
Icon[ro]=calamares
GenericName[ro]=Instalator de sistem
Comment[ro]=Calamares — Instalator de sistem
Name[ru]=Установить систему
Icon[ru]=calamares
GenericName[ru]=Установщик системы
Comment[ru]=Calamares - Установщик системы
Name[si]=පද්ධතිය ස්ථාපනය කරන්න
Icon[si]=කැලමරේස්
GenericName[si]=පද්ධති ස්ථාපකය
Comment[si]=Calamares - පද්ධති ස්ථාපකය
Name[sk]=Inštalovať systém
Icon[sk]=calamares
GenericName[sk]=Inštalátor systému
Comment[sk]=Calamares — Inštalátor systému
Name[sl]=Namesti sistem
Name[sq]=Instalo Sistemin
Icon[sq]=calamares
GenericName[sq]=Instalues Sistemi
Comment[sq]=Calamares — Instalues Sistemi
Name[sr]=Инсталирај систем
Icon[sr]=calamares
GenericName[sr]=Инсталатер система
Comment[sr]=Каламарес — инсталатер система
Name[sr@latin]=Instaliraj sistem
Name[sv]=Installera system
Icon[sv]=calamares
GenericName[sv]=Systeminstallerare
Comment[sv]=Calamares — Systeminstallerare
Name[tg]=Насбкунии низом
Icon[tg]=calamares
GenericName[tg]=Насбкунандаи низомӣ
Comment[tg]=Calamares — Насбкунандаи низомӣ
Name[th]=ติดตั้งระบบ
Name[tr_TR]=Sistemi Yükle
Icon[tr_TR]=calamares
GenericName[tr_TR]=Sistem Yükleyici
Comment[tr_TR]=Calamares — Sistem Yükleyici
Name[uk]=Встановити Систему
Icon[uk]=calamares
GenericName[uk]=Встановлювач системи
Comment[uk]=Calamares - Встановлювач системи
Name[vi]=Cài đặt hệ thống
Icon[vi]=calamares
GenericName[vi]=Bộ cài đặt hệ thống
Comment[vi]=Calamares — Bộ cài đặt hệ thống
Name[zh_CN]=安装系统
Icon[zh_CN]=calamares
GenericName[zh_CN]=系统安装程序
Comment[zh_CN]=Calamares — 系统安装程序
Name[zh_TW]=安裝系統
Icon[zh_TW]=calamares
GenericName[zh_TW]=系統安裝程式
Comment[zh_TW]=Calamares ── 系統安裝程式