diff --git a/CHANGES b/CHANGES
index cf5f9637e..58602f256 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,10 +6,11 @@ website will have to do for older versions.
# 3.2.24 (unreleased) #
This release contains contributions from (alphabetically by first name):
- - No external contributors yet
+ - Gaël PORTAY
## Core ##
- - No core changes yet
+ - There is now a bash-completions script for Calamares; turn on
+ the (CMake-time) option INSTALL_COMPLETION to get it. (Thanks Gaël)
## Modules ##
- No module changes yet
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bc14780a9..6edece315 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,6 +49,7 @@ set( CALAMARES_VERSION_RC 1 ) # Set to 0 during release cycle, 1 during develop
#
option( INSTALL_CONFIG "Install configuration files" OFF )
option( INSTALL_POLKIT "Install Polkit configuration" ON )
+option( INSTALL_COMPLETION "Install shell completions" OFF )
option( BUILD_TESTING "Build the testing tree." ON )
option( WITH_PYTHON "Enable Python modules API (requires Boost.Python)." ON )
option( WITH_PYTHONQT "Enable next generation Python modules API (experimental, requires PythonQt)." OFF )
@@ -389,6 +390,13 @@ list( SORT CALAMARES_TRANSLATION_LANGUAGES )
add_subdirectory( lang ) # i18n tools
+if ( INSTALL_COMPLETION )
+ if( NOT CMAKE_INSTALL_BASHCOMPLETIONDIR )
+ set( CMAKE_INSTALL_BASHCOMPLETIONDIR "${CMAKE_INSTALL_DATADIR}/bash-completion/completions" )
+ endif()
+
+ install( FILES ${CMAKE_SOURCE_DIR}/data/completion/bash/calamares DESTINATION "${CMAKE_INSTALL_BASHCOMPLETIONDIR}" )
+endif()
### Example Distro
#
diff --git a/data/completion/bash/calamares b/data/completion/bash/calamares
new file mode 100644
index 000000000..47c2bb268
--- /dev/null
+++ b/data/completion/bash/calamares
@@ -0,0 +1,36 @@
+# === This file is part of Calamares - ===
+#
+# Copyright 2020, Gaël PORTAY
+#
+# Calamares 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.
+#
+# Calamares 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 Calamares. If not, see .
+
+_calamares()
+{
+ local cur prev words cword
+ _init_completion || return
+
+ case "$prev" in
+ -D)
+ COMPREPLY=( $( compgen -W "$( seq 0 1 8 )" -- "$cur" ) )
+ return
+ ;;
+ -c|--config)
+ _filedir
+ return
+ ;;
+ esac
+
+ COMPREPLY=( $( compgen -W "-h --help -v --version -d --debug -D -c --config -X -xdg-config -T --debug-translation" -- "$cur" ) )
+} &&
+complete -F _calamares calamares
diff --git a/src/modules/partition/core/PartitionActions.cpp b/src/modules/partition/core/PartitionActions.cpp
index 5e785c9d1..d0de2c0d4 100644
--- a/src/modules/partition/core/PartitionActions.cpp
+++ b/src/modules/partition/core/PartitionActions.cpp
@@ -151,6 +151,10 @@ doAutopartition( PartitionCoreModule* core, Device* dev, Choices::AutoPartitionO
KPM_PARTITION_FLAG( None ) );
PartitionInfo::setFormat( efiPartition, true );
PartitionInfo::setMountPoint( efiPartition, o.efiPartitionMountPoint );
+ if ( gs->contains( "efiSystemPartitionName" ) )
+ {
+ efiPartition->setLabel( gs->value( "efiSystemPartitionName" ).toString() );
+ }
core->createPartition( dev, efiPartition, KPM_PARTITION_FLAG_ESP );
firstFreeSector = lastSector + 1;
}
diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp
index ed35fafa4..48d250ca4 100644
--- a/src/modules/partition/gui/PartitionViewStep.cpp
+++ b/src/modules/partition/gui/PartitionViewStep.cpp
@@ -538,6 +538,12 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap )
gs->insert( "efiSystemPartitionSize", CalamaresUtils::getString( configurationMap, "efiSystemPartitionSize" ) );
}
+ // Read and parse key efiSystemPartitionName
+ if ( configurationMap.contains( "efiSystemPartitionName" ) )
+ {
+ gs->insert( "efiSystemPartitionName", CalamaresUtils::getString( configurationMap, "efiSystemPartitionName" ) );
+ }
+
// SWAP SETTINGS
//
// This is a bit convoluted because there's legacy settings to handle as well
diff --git a/src/modules/partition/jobs/FillGlobalStorageJob.cpp b/src/modules/partition/jobs/FillGlobalStorageJob.cpp
index ac65b5ff6..a302a3f31 100644
--- a/src/modules/partition/jobs/FillGlobalStorageJob.cpp
+++ b/src/modules/partition/jobs/FillGlobalStorageJob.cpp
@@ -107,7 +107,7 @@ mapForPartition( Partition* partition, const QString& uuid )
Logger::CDebug deb;
using TR = Logger::DebugRow< const char* const, const QString& >;
deb << Logger::SubEntry << "mapping for" << partition->partitionPath() << partition->deviceNode()
- << TR( "mtpoint:", PartitionInfo::mountPoint( partition ) ) << TR( "fs:", map[ "fs" ].toString() )
+ << TR( "mountPoint:", PartitionInfo::mountPoint( partition ) ) << TR( "fs:", map[ "fs" ].toString() )
<< TR( "fsName", map[ "fsName" ].toString() ) << TR( "uuid", uuid )
<< TR( "claimed", map[ "claimed" ].toString() );
diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf
index 241e4ea05..f6cc34ee4 100644
--- a/src/modules/partition/partition.conf
+++ b/src/modules/partition/partition.conf
@@ -7,6 +7,10 @@ efiSystemPartition: "/boot/efi"
# If nothing is specified, the default size of 300MiB will be used.
# efiSystemPartitionSize: 300M
+# This optional setting specifies the name of the EFI system partition.
+# If nothing is specified, the partition name is left unset.
+# efiSystemPartitionName: EFI
+
# In autogenerated partitioning, allow the user to select a swap size?
# If there is exactly one choice, no UI is presented, and the user
# cannot make a choice -- this setting is used. If there is more than
diff --git a/src/modules/welcomeq/img/language-icon-48px.png b/src/modules/welcomeq/img/language-icon-48px.png
new file mode 100644
index 000000000..4012a4bee
Binary files /dev/null and b/src/modules/welcomeq/img/language-icon-48px.png differ
diff --git a/src/modules/welcomeq/release_notes.qml b/src/modules/welcomeq/release_notes.qml
new file mode 100644
index 000000000..ce9d1d4af
--- /dev/null
+++ b/src/modules/welcomeq/release_notes.qml
@@ -0,0 +1,100 @@
+/* === This file is part of Calamares - ===
+ *
+ * Copyright 2020, Anke Boersma
+ *
+ * Calamares 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.
+ *
+ * Calamares 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 Calamares. If not, see .
+ */
+
+import io.calamares.ui 1.0
+
+import QtQuick 2.7
+import QtQuick.Controls 2.2
+import QtQuick.Window 2.2
+import QtQuick.Layouts 1.3
+
+Rectangle {
+ width: parent.width
+ height: parent.height
+ focus: true
+ color: "#f2f2f2"
+
+ Flickable {
+ id: flick
+ anchors.fill: parent
+ contentHeight: 3500
+
+ ScrollBar.vertical: ScrollBar {
+ id: fscrollbar
+ width: 10
+ policy: ScrollBar.AlwaysOn
+ }
+
+ TextArea {
+ id: intro
+ x: 130
+ y: 8
+ width: 640
+ font.pointSize: 14
+ textFormat: Text.RichText
+ antialiasing: true
+ activeFocusOnPress: false
+ wrapMode: Text.WordWrap
+
+ text: qsTr("%1
+ This an example QML file, showing options in RichText with Flickable content.
+
+ QML with RichText can use HTML tags, Flickable content is useful for touchscreens.
+
+ This is bold text
+ This is italic text
+ This is underlined text
+ This text will be center-aligned.
+ This is strikethrough
+
+ Code example:
+ ls -l /home
+
+ Lists:
+
+ - Intel CPU systems
+ - AMD CPU systems
+
+
+ The vertical scrollbar is adjustable, current width set to 10.
").arg(Branding.string(Branding.VersionedName))
+
+ }
+ }
+
+ ToolButton {
+ id: toolButton
+ x: 19
+ y: 29
+ width: 105
+ height: 48
+ text: qsTr("Back")
+ hoverEnabled: true
+ onClicked: load.source = ""
+
+ Image {
+ id: image1
+ x: 0
+ y: 13
+ width: 22
+ height: 22
+ source: "img/chevron-left-solid.svg"
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+}
diff --git a/src/modules/welcomeq/welcomeq.qml b/src/modules/welcomeq/welcomeq.qml
index 729b61b28..6330f5116 100644
--- a/src/modules/welcomeq/welcomeq.qml
+++ b/src/modules/welcomeq/welcomeq.qml
@@ -16,6 +16,7 @@
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see .
*/
+import io.calamares.core 1.0
import io.calamares.ui 1.0
import QtQuick 2.10
@@ -29,21 +30,21 @@ Page
{
id: welcome
- header: Item
- {
+ header: Item {
width: parent.width
height: parent.height
- Text
- {
+ Text {
id: welcomeTopText
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
+ horizontalAlignment: Text.AlignHCenter
+ padding: 40
// In QML, QString::arg() only takes one argument
- text: qsTr("Welcome to the %1 %2
installer
").arg(Branding.string(Branding.ProductName)).arg(Branding.string(Branding.Version))
+ text: qsTr("Welcome to the %1 %2
installer
+ This program will ask you some questions and set up %1 on your computer.
").arg(Branding.string(Branding.ProductName)).arg(Branding.string(Branding.Version))
}
- Image
- {
+ Image {
id: welcomeImage
anchors.centerIn: parent
// imagePath() returns a full pathname, so make it refer to the filesystem
@@ -55,36 +56,31 @@ Page
fillMode: Image.PreserveAspectFit
}
- RowLayout
- {
+ RowLayout {
id: buttonBar
- width: parent.width
+ width: parent.width / 1.5
height: 64
anchors.bottom: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
spacing: Kirigami.Units.largeSpacing* 2
-/* Traditionally Calamares has had an "About" button that talks about
- * Calamares itself, which just isn't a very useful thing in someone
- * else's installation ISO.
- */
- Button
- {
+ Button {
Layout.fillWidth: true
text: qsTr("About")
icon.name: "dialog-information"
Kirigami.Theme.backgroundColor: Qt.rgba(Kirigami.Theme.backgroundColor.r, Kirigami.Theme.backgroundColor.g, Kirigami.Theme.backgroundColor.b, 0.4)
Kirigami.Theme.textColor: Kirigami.Theme.textColor
- visible: false
+ visible: true
onClicked: {
- //onClicked: load.source = "file:/usr/share/calamares/branding/kaos_branding/show.qml"
+ //onClicked: load.source = "file:/usr/share/calamares/branding/default/show.qml"
onClicked: load.source = "about.qml"
}
}
- Button
- {
+
+ Button {
Layout.fillWidth: true
text: qsTr("Support")
icon.name: "system-help"
@@ -94,8 +90,8 @@ Page
visible: config.supportUrl !== ""
onClicked: Qt.openUrlExternally(config.supportUrl)
}
- Button
- {
+
+ Button {
Layout.fillWidth: true
text: qsTr("Known issues")
icon.name: "tools-report-bug"
@@ -105,8 +101,8 @@ Page
visible: config.knownIssuesUrl !== ""
onClicked: Qt.openUrlExternally(config.knownIssuesUrl)
}
- Button
- {
+
+ Button {
Layout.fillWidth: true
text: qsTr("Release notes")
icon.name: "folder-text"
@@ -114,10 +110,11 @@ Page
Kirigami.Theme.textColor: Kirigami.Theme.textColor
visible: config.releaseNotesUrl !== ""
- onClicked: Qt.openUrlExternally(config.releaseNotesUrl)
+ onClicked: load.source = "release_notes.qml"
+ //onClicked: load.source = "file:/usr/share/calamares/release_notes.qml"
}
- Button
- {
+
+ Button {
Layout.fillWidth: true
text: qsTr("Donate")
icon.name: "taxes-finances"
@@ -128,8 +125,41 @@ Page
onClicked: Qt.openUrlExternally(config.donateUrl)
}
}
- Loader
- {
+
+ RowLayout {
+ id: languageBar
+ width: parent.width /1.2
+ height: 48
+
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: parent.height /7
+ anchors.horizontalCenter: parent.horizontalCenter
+ spacing: Kirigami.Units.largeSpacing* 4
+
+ Rectangle {
+ width: parent.width
+ Layout.fillWidth: true
+ focus: true
+ Image {
+ id: image
+ height: 48
+ fillMode: Image.PreserveAspectFit
+ source: "img/language-icon-48px.png"
+ }
+
+ ComboBox {
+ id: languages
+ anchors.left: image.right
+ width: languageBar.width /1.1
+ textRole: "label"
+ currentIndex: 4 //model.currentIndex
+ model: config.languagesModel
+ onCurrentIndexChanged: console.debug(currentText, currentIndex)
+ }
+ }
+ }
+
+ Loader {
id:load
anchors.fill: parent
}
diff --git a/src/modules/welcomeq/welcomeq.qrc b/src/modules/welcomeq/welcomeq.qrc
index 84e598a27..71431254e 100644
--- a/src/modules/welcomeq/welcomeq.qrc
+++ b/src/modules/welcomeq/welcomeq.qrc
@@ -2,7 +2,9 @@
welcomeq.qml
about.qml
+ release_notes.qml
img/squid.png
img/chevron-left-solid.svg
+ img/language-icon-48px.png