Compare commits
2 commits
main
...
systemd-bo
Author | SHA1 | Date | |
---|---|---|---|
91a5b5f814 | |||
2bf3336c01 |
13 changed files with 1368 additions and 320 deletions
|
@ -1,23 +1,64 @@
|
||||||
|
/* === This file is part of Calamares Extensions - <http://github.com/calamares-extensions> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* An *ImageSlide* is a *Slide* (it offers the API that *Presentation*
|
||||||
|
* expects) while displaying only a single image. This is useful
|
||||||
|
* for presentations that are all images, with no interaction or text.
|
||||||
|
*/
|
||||||
|
|
||||||
import QtQuick 2.5
|
import QtQuick 2.5
|
||||||
|
|
||||||
|
/* To use an *ImageSlide*, instantiate it inside your *Presentation*
|
||||||
|
* and set the *src* property to a path to an image file in a supported
|
||||||
|
* format. Relative paths are ok.
|
||||||
|
*/
|
||||||
Item {
|
Item {
|
||||||
id: imageslide
|
id: imageslide
|
||||||
|
|
||||||
|
/* Slides should be non-visible at the start; the *Presentation*
|
||||||
|
* handles visibility (so that one slide at a time is visible).
|
||||||
|
*/
|
||||||
visible: false
|
visible: false
|
||||||
|
/* Make this item fill up the parent, so that alignment of the
|
||||||
|
* image (below) works out to "middle of the parent".
|
||||||
|
*/
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
|
/* The *Presentation* manages visibility of children that have
|
||||||
|
* attribute *isSlide* and *isSlide* is set to *true*. Other
|
||||||
|
* children are ignored, so we need to set this so that the
|
||||||
|
* *ImageSlide* elements are treated like slides.
|
||||||
|
*/
|
||||||
property bool isSlide: true;
|
property bool isSlide: true;
|
||||||
|
/* The *Presentation* allows slides to have notes, so just leave
|
||||||
|
* an empty string here.
|
||||||
|
*/
|
||||||
property string notes;
|
property string notes;
|
||||||
|
|
||||||
|
|
||||||
|
/* This is the important property for *ImageSlide*: the path to the
|
||||||
|
* image to display. When instantiating *ImageSlide*, set this for
|
||||||
|
* each instance. Relative paths are ok.
|
||||||
|
*/
|
||||||
property string src;
|
property string src;
|
||||||
|
|
||||||
|
/* The image itself. It has fixed sizes (300x150px). You could set
|
||||||
|
* an aspect ratio here (e.g. `height: width / 2`) as well.
|
||||||
|
*
|
||||||
|
* This binds the image source (filename) to the string *src*
|
||||||
|
* in the *ImageSlide* element, for convenience in setting things
|
||||||
|
* up in the overall slideshow. If you want to make width and
|
||||||
|
* height configurable, add a property above and then bind to
|
||||||
|
* them from the Image element.
|
||||||
|
*/
|
||||||
Image {
|
Image {
|
||||||
id: image
|
id: image
|
||||||
source: src
|
source: src
|
||||||
|
width: 1280
|
||||||
|
height: 720
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
269
etc/calamares/branding/parchlinux/Map.qml
Normal file
269
etc/calamares/branding/parchlinux/Map.qml
Normal file
|
@ -0,0 +1,269 @@
|
||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* Calamares is Free Software: see the License-Identifier above.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.10
|
||||||
|
import QtQuick.Controls 2.10
|
||||||
|
import QtQuick.Window 2.14
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
|
||||||
|
import org.kde.kirigami 2.7 as Kirigami
|
||||||
|
|
||||||
|
import QtLocation 5.14
|
||||||
|
import QtPositioning 5.14
|
||||||
|
|
||||||
|
Column {
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
// These are used by the map query to initially center the
|
||||||
|
// map on the user's likely location. They are updated by
|
||||||
|
// getIp() which does a more accurate GeoIP lookup than
|
||||||
|
// the default one in Calamares
|
||||||
|
property var cityName: ""
|
||||||
|
property var countryName: ""
|
||||||
|
|
||||||
|
/* This is an extra GeoIP lookup, which will find better-accuracy
|
||||||
|
* location data for the user's IP, and then sets the current timezone
|
||||||
|
* and map location. Call it from Component.onCompleted so that
|
||||||
|
* it happens "on time" before the page is shown.
|
||||||
|
*/
|
||||||
|
function getIpOnline() {
|
||||||
|
var xhr = new XMLHttpRequest
|
||||||
|
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState === XMLHttpRequest.DONE) {
|
||||||
|
var responseJSON = JSON.parse(xhr.responseText)
|
||||||
|
var tz = responseJSON.timezone
|
||||||
|
var ct = responseJSON.city
|
||||||
|
var cy = responseJSON.country
|
||||||
|
|
||||||
|
cityName = ct
|
||||||
|
countryName = cy
|
||||||
|
|
||||||
|
config.setCurrentLocation(tz)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define the target of the request
|
||||||
|
xhr.open("GET", "https://get.geojs.io/v1/ip/geo.json")
|
||||||
|
// Execute the request
|
||||||
|
xhr.send()
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is an "offline" GeoIP lookup -- it just follows what
|
||||||
|
* Calamares itself has figured out with its GeoIP or configuration.
|
||||||
|
* Call it from the **Component** onActivate() -- in localeq.qml --
|
||||||
|
* so it happens as the page is shown.
|
||||||
|
*/
|
||||||
|
function getIpOffline() {
|
||||||
|
cityName = config.currentLocation.zone
|
||||||
|
countryName = config.currentLocation.countryCode
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is an **accurate** TZ lookup method: it queries an
|
||||||
|
* online service for the TZ at the given coordinates. It
|
||||||
|
* requires an internet connection, though, and the distribution
|
||||||
|
* will need to have an account with geonames to not hit the
|
||||||
|
* daily query limit.
|
||||||
|
*
|
||||||
|
* See below, in MouseArea, for calling the right method.
|
||||||
|
*/
|
||||||
|
function getTzOnline() {
|
||||||
|
var xhr = new XMLHttpRequest
|
||||||
|
var latC = map.center.latitude
|
||||||
|
var lonC = map.center.longitude
|
||||||
|
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState === XMLHttpRequest.DONE) {
|
||||||
|
var responseJSON = JSON.parse(xhr.responseText)
|
||||||
|
var tz2 = responseJSON.timezoneId
|
||||||
|
|
||||||
|
config.setCurrentLocation(tz2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Online lookup", latC, lonC)
|
||||||
|
// Needs to move to localeq.conf, each distribution will need their own account
|
||||||
|
xhr.open("GET", "http://api.geonames.org/timezoneJSON?lat=" + latC + "&lng=" + lonC + "&username=SOME_USERNAME")
|
||||||
|
xhr.send()
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is a quick TZ lookup method: it uses the existing
|
||||||
|
* Calamares "closest TZ" code, which has lots of caveats.
|
||||||
|
*
|
||||||
|
* See below, in MouseArea, for calling the right method.
|
||||||
|
*/
|
||||||
|
function getTzOffline() {
|
||||||
|
var latC = map.center.latitude
|
||||||
|
var lonC = map.center.longitude
|
||||||
|
var tz = config.zonesModel.lookup(latC, lonC)
|
||||||
|
console.log("Offline lookup", latC, lonC)
|
||||||
|
config.setCurrentLocation(tz.region, tz.zone)
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height / 1.28
|
||||||
|
|
||||||
|
Plugin {
|
||||||
|
id: mapPlugin
|
||||||
|
name: "esri" // "esri", "here", "itemsoverlay", "mapbox", "mapboxgl", "osm"
|
||||||
|
}
|
||||||
|
|
||||||
|
Map {
|
||||||
|
id: map
|
||||||
|
anchors.fill: parent
|
||||||
|
plugin: mapPlugin
|
||||||
|
activeMapType: supportedMapTypes[0]
|
||||||
|
//might be desirable to set zoom level configurable?
|
||||||
|
zoomLevel: 5
|
||||||
|
bearing: 0
|
||||||
|
tilt: 0
|
||||||
|
copyrightsVisible : true
|
||||||
|
fieldOfView : 0
|
||||||
|
|
||||||
|
GeocodeModel {
|
||||||
|
id: geocodeModel
|
||||||
|
plugin: mapPlugin
|
||||||
|
autoUpdate: true
|
||||||
|
query: Address {
|
||||||
|
id: address
|
||||||
|
city: cityName
|
||||||
|
country: countryName
|
||||||
|
}
|
||||||
|
|
||||||
|
onLocationsChanged: {
|
||||||
|
if (count == 1) {
|
||||||
|
map.center.latitude = get(0).coordinate.latitude
|
||||||
|
map.center.longitude = get(0).coordinate.longitude
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MapQuickItem {
|
||||||
|
id: marker
|
||||||
|
anchorPoint.x: image.width/4
|
||||||
|
anchorPoint.y: image.height
|
||||||
|
coordinate: QtPositioning.coordinate(
|
||||||
|
map.center.latitude,
|
||||||
|
map.center.longitude)
|
||||||
|
//coordinate: QtPositioning.coordinate(40.730610, -73.935242) // New York
|
||||||
|
|
||||||
|
sourceItem: Image {
|
||||||
|
id: image
|
||||||
|
width: 32
|
||||||
|
height: 32
|
||||||
|
source: "img/pin.svg"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
acceptedButtons: Qt.LeftButton
|
||||||
|
anchors.fill: map
|
||||||
|
hoverEnabled: true
|
||||||
|
property var coordinate: map.toCoordinate(Qt.point(mouseX, mouseY))
|
||||||
|
Label {
|
||||||
|
x: parent.mouseX - width -5
|
||||||
|
y: parent.mouseY - height - 5
|
||||||
|
text: "%1, %2".arg(
|
||||||
|
parent.coordinate.latitude).arg(parent.coordinate.longitude)
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
marker.coordinate = coordinate
|
||||||
|
map.center.latitude = coordinate.latitude
|
||||||
|
map.center.longitude = coordinate.longitude
|
||||||
|
|
||||||
|
// Pick a TZ lookup method here (quick:offline, accurate:online)
|
||||||
|
getTzOffline();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.bottomMargin: 5
|
||||||
|
anchors.rightMargin: 10
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
width: 32
|
||||||
|
height:32
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
Image {
|
||||||
|
source: "img/plus.png"
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 36
|
||||||
|
height: 36
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: map.zoomLevel++
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
width: 32
|
||||||
|
height:32
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
Image {
|
||||||
|
source: "img/minus.png"
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 32
|
||||||
|
height: 32
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: map.zoomLevel--
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: 100
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: location
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 300
|
||||||
|
height: 30
|
||||||
|
color: Kirigami.Theme.backgroundColor
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: tzText
|
||||||
|
text: qsTr("Timezone: %1").arg(config.currentTimezoneName)
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If you want an extra (and accurate) GeoIP lookup,
|
||||||
|
* enable this one and disable the offline lookup in
|
||||||
|
* onActivate().
|
||||||
|
Component.onCompleted: getIpOnline();
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
anchors.top: location.bottom
|
||||||
|
anchors.topMargin: 20
|
||||||
|
padding: 10
|
||||||
|
width: parent.width
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
Kirigami.Theme.backgroundColor: Kirigami.Theme.backgroundColor
|
||||||
|
text: qsTr("Please select your preferred location on the map so the installer can suggest the locale
|
||||||
|
and timezone settings for you. You can fine-tune the suggested settings below. Search the map by dragging
|
||||||
|
to move and using the +/- buttons to zoom in/out or use mouse scrolling for zooming.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
236
etc/calamares/branding/parchlinux/Offline.qml
Normal file
236
etc/calamares/branding/parchlinux/Offline.qml
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020-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.10
|
||||||
|
import QtQuick.Controls 2.10
|
||||||
|
import QtQuick.Window 2.14
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
|
||||||
|
import org.kde.kirigami 2.7 as Kirigami
|
||||||
|
|
||||||
|
Page {
|
||||||
|
width: 800 //parent.width
|
||||||
|
height: 500
|
||||||
|
|
||||||
|
id: control
|
||||||
|
property string currentRegion
|
||||||
|
property string currentZone
|
||||||
|
|
||||||
|
StackView {
|
||||||
|
id: stack
|
||||||
|
anchors.fill: parent
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
initialItem: Item {
|
||||||
|
|
||||||
|
Label {
|
||||||
|
|
||||||
|
id: region
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
horizontalAlignment: Text.AlignCenter
|
||||||
|
text: qsTr("Select your preferred Region, or use the default settings.")
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
|
||||||
|
id: list
|
||||||
|
ScrollBar.vertical: ScrollBar {
|
||||||
|
active: true
|
||||||
|
}
|
||||||
|
|
||||||
|
width: parent.width / 2
|
||||||
|
height: parent.height / 1.5
|
||||||
|
anchors.centerIn: parent
|
||||||
|
anchors.verticalCenterOffset: -30
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
spacing: 2
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
|
||||||
|
z: parent.z - 1
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "#BDC3C7"
|
||||||
|
radius: 5
|
||||||
|
opacity: 0.7
|
||||||
|
}
|
||||||
|
|
||||||
|
model: config.regionModel
|
||||||
|
currentIndex: -1
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
width: parent.width
|
||||||
|
highlighted: ListView.isCurrentItem
|
||||||
|
|
||||||
|
Label {
|
||||||
|
|
||||||
|
text: model.name
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
width: parent.width
|
||||||
|
height: 30
|
||||||
|
color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
|
||||||
|
color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 0.3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
|
||||||
|
list.currentIndex = index
|
||||||
|
control.currentRegion = model.name
|
||||||
|
config.regionalZonesModel.region = control.currentRegion
|
||||||
|
tztext.text = qsTr("Timezone: %1").arg(config.currentTimezoneName)
|
||||||
|
stack.push(zoneView)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: zoneView
|
||||||
|
|
||||||
|
Item {
|
||||||
|
|
||||||
|
Label {
|
||||||
|
|
||||||
|
id: zone
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
text: qsTr("Select your preferred Zone within your Region.")
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
|
||||||
|
id: list2
|
||||||
|
ScrollBar.vertical: ScrollBar {
|
||||||
|
active: true
|
||||||
|
}
|
||||||
|
|
||||||
|
width: parent.width / 2
|
||||||
|
height: parent.height / 1.5
|
||||||
|
anchors.centerIn: parent
|
||||||
|
anchors.verticalCenterOffset: -30
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
spacing: 2
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
|
||||||
|
z: parent.z - 1
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "#BDC3C7"
|
||||||
|
radius: 5
|
||||||
|
opacity: 0.7
|
||||||
|
}
|
||||||
|
|
||||||
|
model: config.regionalZonesModel
|
||||||
|
currentIndex : -1
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
width: parent.width
|
||||||
|
highlighted: ListView.isCurrentItem
|
||||||
|
|
||||||
|
Label {
|
||||||
|
|
||||||
|
text: model.name
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
width: parent.width
|
||||||
|
height: 30
|
||||||
|
color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
|
||||||
|
color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor
|
||||||
|
opacity: highlighted || hovered ? 0.5 : 0.3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
|
||||||
|
list2.currentIndex = index
|
||||||
|
list2.positionViewAtIndex(index, ListView.Center)
|
||||||
|
control.currentZone = model.name
|
||||||
|
config.setCurrentLocation(control.currentRegion, control.currentZone)
|
||||||
|
tztext.text = qsTr("Timezone: %1").arg(config.currentTimezoneName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
|
||||||
|
Layout.fillWidth: true
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.verticalCenterOffset: -30
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: parent.width / 15
|
||||||
|
icon.name: "go-previous"
|
||||||
|
text: qsTr("Zones")
|
||||||
|
onClicked: stack.pop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
|
||||||
|
width: parent.width
|
||||||
|
height: 60
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
|
||||||
|
Item {
|
||||||
|
|
||||||
|
id: location
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 300
|
||||||
|
height: 30
|
||||||
|
color: Kirigami.Theme.backgroundColor
|
||||||
|
|
||||||
|
Text {
|
||||||
|
|
||||||
|
id: tztext
|
||||||
|
text: qsTr("Timezone: %1").arg(config.currentTimezoneName)
|
||||||
|
color: Kirigami.Theme.textColor
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
|
||||||
|
anchors.top: location.bottom
|
||||||
|
anchors.topMargin: 20
|
||||||
|
padding: 10
|
||||||
|
width: parent.width
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
Kirigami.Theme.backgroundColor: Kirigami.Theme.backgroundColor
|
||||||
|
text: qsTr("You can fine-tune Language and Locale settings below.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
103
etc/calamares/branding/parchlinux/Requirements.qml
Normal file
103
etc/calamares/branding/parchlinux/Requirements.qml
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020 Anke Boersma <demm@kaosx.us>
|
||||||
|
* SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
|
* 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.7
|
||||||
|
import QtQuick.Controls 2.2
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
import org.kde.kirigami 2.7 as Kirigami
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
focus: true
|
||||||
|
Kirigami.Theme.backgroundColor: Kirigami.Theme.backgroundColor
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.topMargin: 50
|
||||||
|
|
||||||
|
TextArea {
|
||||||
|
id: required
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.topMargin: 1
|
||||||
|
horizontalAlignment: TextEdit.AlignHCenter
|
||||||
|
width: 640
|
||||||
|
font.pointSize: 11
|
||||||
|
textFormat: Text.RichText
|
||||||
|
antialiasing: true
|
||||||
|
activeFocusOnPress: false
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
|
||||||
|
property var requirementsText: qsTr("<p>This computer does not satisfy the minimum requirements for installing %1.<br/>
|
||||||
|
Installation cannot continue.</p>").arg(Branding.string(Branding.VersionedName))
|
||||||
|
property var recommendationsText: qsTr("<p>This computer does not satisfy some of the recommended requirements for setting up %1.<br/>
|
||||||
|
Setup can continue, but some features might be disabled.</p>").arg(Branding.string(Branding.VersionedName))
|
||||||
|
|
||||||
|
text: config.requirementsModel.satisfiedMandatory ? recommendationsText : requirementsText
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: 640
|
||||||
|
height: 360
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.top: required.bottom
|
||||||
|
anchors.topMargin: 5
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: requirementsDelegate
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: 640
|
||||||
|
height: 35
|
||||||
|
visible: true
|
||||||
|
|
||||||
|
Column {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
implicitWidth: 640
|
||||||
|
implicitHeight: 35
|
||||||
|
// Colors and images based on the two satisfied-bools:
|
||||||
|
// - if satisfied, then green / ok
|
||||||
|
// - otherwise if mandatory, then red / stop
|
||||||
|
// - otherwise, then yellow / warning
|
||||||
|
border.color: satisfied ? "#228b22" : (mandatory ? "#ff0000" : "#ffa411")
|
||||||
|
color: satisfied ? "#f0fff0" : (mandatory ? "#ffc0cb" : "#ffefd5")
|
||||||
|
|
||||||
|
Image {
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.margins: 20
|
||||||
|
source: satisfied ? "qrc:/data/images/yes.svgz" : (mandatory ? "qrc:/data/images/no.svgz" : "qrc:/data/images/information.svgz")
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: satisfied ? details : negatedText
|
||||||
|
anchors.centerIn: parent
|
||||||
|
font.pointSize: 11
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: requirementsList
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 5
|
||||||
|
// This uses the filtered model, so that only unsatisfied
|
||||||
|
// requirements are ever shown. You could use *requirementsModel*
|
||||||
|
// to get all of them.
|
||||||
|
model: config.unsatisfiedRequirements
|
||||||
|
delegate: requirementsDelegate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
101
etc/calamares/branding/parchlinux/about.qml
Normal file
101
etc/calamares/branding/parchlinux/about.qml
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
/* === This file is part of Calamares - <https://calamares.io> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2020 2022 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.7
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
import QtQuick.Window 2.3
|
||||||
|
|
||||||
|
ApplicationWindow {
|
||||||
|
id: about
|
||||||
|
visible: true
|
||||||
|
width: 760
|
||||||
|
height: 400
|
||||||
|
title: qsTr("About Calamares")
|
||||||
|
|
||||||
|
property var appName: "Calamares"
|
||||||
|
property var appVersion: "3.3 RC"
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: textArea
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "#f2f2f2"
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: column
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: 560
|
||||||
|
height: 250
|
||||||
|
radius: 10
|
||||||
|
border.width: 0
|
||||||
|
|
||||||
|
Text {
|
||||||
|
width: 400
|
||||||
|
height: 250
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: qsTr("<h1>%1</h1><br/>
|
||||||
|
<strong>%2<br/>
|
||||||
|
for %3</strong><br/><br/>
|
||||||
|
Copyright 2014-2017 Teo Mrnjavac <teo@kde.org><br/>
|
||||||
|
Copyright 2017-2022 Adriaan de Groot <groot@kde.org><br/>
|
||||||
|
Thanks to <a href='https://calamares.io/team/'>the Calamares team</a>
|
||||||
|
and the <a href=\"https://www.transifex.com/kaos/kaos/\">KaOS
|
||||||
|
translators team</a>.<br/><br/>
|
||||||
|
<a href='https://calamares.io/'>Calamares</a>
|
||||||
|
development is sponsored by <br/>
|
||||||
|
<a href='http://www.blue-systems.com/'>Blue Systems</a> -
|
||||||
|
Liberating Software." )
|
||||||
|
.arg(appName)
|
||||||
|
.arg(appVersion)
|
||||||
|
.arg(Branding.string(Branding.VersionedName))
|
||||||
|
|
||||||
|
onLinkActivated: Qt.openUrlExternally(link)
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
acceptedButtons: Qt.NoButton
|
||||||
|
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||||
|
}
|
||||||
|
|
||||||
|
font.pointSize: 10
|
||||||
|
anchors.verticalCenterOffset: 10
|
||||||
|
anchors.horizontalCenterOffset: 40
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
x: 8
|
||||||
|
y: 12
|
||||||
|
height: 100
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
source: "squid.png"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
icon.name: "window-close"
|
||||||
|
text: qsTr("Close")
|
||||||
|
hoverEnabled: true
|
||||||
|
onClicked: about.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -5,12 +5,12 @@ welcomeStyleCalamares: false
|
||||||
|
|
||||||
welcomeExpandingLogo: true
|
welcomeExpandingLogo: true
|
||||||
|
|
||||||
windowExpanding: normal
|
windowExpanding: noexpand
|
||||||
|
windowSize: 1280px,720px
|
||||||
windowPlacement: center
|
windowPlacement: center
|
||||||
|
|
||||||
sidebar: widget
|
#sidebar: qml,top
|
||||||
|
sidebar: none
|
||||||
navigation: widget
|
navigation: widget
|
||||||
|
|
||||||
strings:
|
strings:
|
||||||
|
@ -28,10 +28,10 @@ images:
|
||||||
productWelcome: "idioma.png"
|
productWelcome: "idioma.png"
|
||||||
|
|
||||||
style:
|
style:
|
||||||
sidebarBackground: "#FFFFFF"
|
SidebarBackground: "#282c34"
|
||||||
sidebarText: "#292F34"
|
SidebarText: "#FFFFFF"
|
||||||
sidebarTextSelect: "#ffffff"
|
SidebarTextSelect: "#cc0000"
|
||||||
sidebarTextHighlight: "#2093d1"
|
SidebarTextHighlight: "#000000"
|
||||||
|
|
||||||
slideshow: "show.qml"
|
slideshow: "show.qml"
|
||||||
|
|
||||||
|
|
|
@ -1,53 +1,111 @@
|
||||||
|
/* === This file is part of Calamares Extensions - <http://github.com/calamares-extensions> ===
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org>
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* This is a simple slideshow for use during the *exec* phase of
|
||||||
|
* installation, that displays a handful of slides. It uses
|
||||||
|
* the *Presentation* QML components -- this allows, for instance,
|
||||||
|
* notes to be added to slides, and for arrow navigation to be
|
||||||
|
* used. But at its core it's just a bunch of images, repeating.
|
||||||
|
*
|
||||||
|
* For this kind of limited functionality, it may be better to
|
||||||
|
* use the "plain images" slideshow format in Calamares, although
|
||||||
|
* then you don't have any say in how things are animated.
|
||||||
|
*
|
||||||
|
* This slideshow is written for *slideshowAPI* version 1, so in
|
||||||
|
* `branding.desc` set that appropriately.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
import QtQuick 2.0;
|
import QtQuick 2.0 // Basic QML
|
||||||
import calamares.slideshow 1.0;
|
import calamares.slideshow 1.0 // Calamares slideshow: Presentation
|
||||||
import io.calamares.ui 1.0 // Calamares internals: Branding
|
import io.calamares.ui 1.0 // Calamares internals: Branding
|
||||||
|
|
||||||
|
/* *Presentation* comes from the pre-installed calamares.slideshow
|
||||||
|
* that comes with Calamares itself. See `Presentation.qml` in the
|
||||||
|
* Calamares repository for details and documentation.
|
||||||
|
*
|
||||||
|
* The important parts of presentation are:
|
||||||
|
* - it has a property *activatedInCalamares* which is set to *true*
|
||||||
|
* when the slideshow becomes visible, *false* afterwards.
|
||||||
|
* - it expects one or more children with a property *isSlide*
|
||||||
|
* set to *true*.
|
||||||
|
* - it has a function *goToNextSlide()* to do just that (where
|
||||||
|
* "slides" is the sequence of children that have property
|
||||||
|
* *isSlide* set to *true*.
|
||||||
|
*
|
||||||
|
*/
|
||||||
Presentation
|
Presentation
|
||||||
{
|
{
|
||||||
id: presentation
|
id: presentation
|
||||||
|
|
||||||
|
/* This timer ticks once per second (1000ms, set in *interval*)
|
||||||
|
* and calls *goToNextSlide()* each time. Note that it needs
|
||||||
|
* to know the *id* of the presentation, so keep *id* (above)
|
||||||
|
* matched with the function call.
|
||||||
|
*
|
||||||
|
* The timer starts when the presentation is activated; you could
|
||||||
|
* also set *running* to true, but that might cost extra resources.
|
||||||
|
*/
|
||||||
Timer {
|
Timer {
|
||||||
interval: 30000
|
interval: 15000
|
||||||
running: presentation.activatedInCalamares
|
running: presentation.activatedInCalamares
|
||||||
repeat: true
|
repeat: true
|
||||||
onTriggered: presentation.goToNextSlide()
|
onTriggered: presentation.goToNextSlide()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* These functions are called when the presentation starts and
|
||||||
|
* ends, respectively. They could be used to start the timer,
|
||||||
|
* but that is done automatically through *activatedInCalamares*,
|
||||||
|
* so there's nothing **to** do.
|
||||||
|
*
|
||||||
|
* Leaving these functions out is fine, although Calamares will
|
||||||
|
* complain that they are missing, then.
|
||||||
|
*/
|
||||||
function onActivate() { }
|
function onActivate() { }
|
||||||
function onLeave() { }
|
function onLeave() { }
|
||||||
|
|
||||||
|
|
||||||
|
/* A presentation is an Item: it has no visual appearance at all.
|
||||||
|
* Give it a background, which fills the whole area of the presentation.
|
||||||
|
* Setting *z* to a low value places this rectangle **behind** other
|
||||||
|
* things in the presentation -- which is correct for a background.
|
||||||
|
*
|
||||||
|
* This uses the background set in the styles section of `branding.desc`.
|
||||||
|
*/
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: mybackground
|
id: mybackground
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Branding.styleString(Branding.SidebarBackground)
|
color: "#282c34"
|
||||||
z: -1
|
z: -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The *ImageSlide* is a component unique to this branding directory.
|
||||||
|
* The QML file `ImageSlide.qml` can be stored alongside `show.qml`
|
||||||
|
* and it will be loaded on-demand. See the documentation in that
|
||||||
|
* file for details, but it comes down to this: for each *ImageSlide*,
|
||||||
|
* set *src* to a suitable value (an image path in this directory)
|
||||||
|
* and that will be displayed.
|
||||||
|
*/
|
||||||
ImageSlide {
|
ImageSlide {
|
||||||
src: "slide01.png"
|
src: "slide-01.png"
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageSlide {
|
ImageSlide {
|
||||||
src: "slide02.png"
|
src: "slide-02.png"
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageSlide {
|
ImageSlide {
|
||||||
src: "slide03.png"
|
src: "slide-03.png"
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageSlide {
|
ImageSlide {
|
||||||
src: "slide04.png"
|
src: "slide-04.png"
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageSlide {
|
ImageSlide {
|
||||||
src: "slide05.png"
|
src: "slide-05.png"
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageSlide {
|
|
||||||
src: "slide06.png"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
399
etc/calamares/branding/parchlinux/stylesheet-codes.qss
Normal file
399
etc/calamares/branding/parchlinux/stylesheet-codes.qss
Normal file
|
@ -0,0 +1,399 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
A branding component can ship a stylesheet (like this one)
|
||||||
|
which is applied to parts of the Calamares user-interface.
|
||||||
|
In principle, all parts can be styled through CSS.
|
||||||
|
Missing parts should be filed as issues.
|
||||||
|
|
||||||
|
The IDs are based on the object names in the C++ code.
|
||||||
|
You can use the Debug Dialog to find out object names:
|
||||||
|
- Open the debug dialog
|
||||||
|
- Choose tab *Tools*
|
||||||
|
- Click *Widget Tree* button
|
||||||
|
The list of object names is printed in the log.
|
||||||
|
|
||||||
|
Documentation for styling Qt Widgets through a stylesheet
|
||||||
|
can be found at
|
||||||
|
https://doc.qt.io/qt-5/stylesheet-examples.html
|
||||||
|
https://doc.qt.io/qt-5/stylesheet-reference.html
|
||||||
|
In Calamares, styling widget classes is supported (e.g.
|
||||||
|
using `QComboBox` as a selector).
|
||||||
|
|
||||||
|
This example stylesheet has all the actual styling commented out.
|
||||||
|
The examples are not exhaustive.
|
||||||
|
|
||||||
|
Use gammaray
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* ########## MAIN APPLICATION WINDOW ########## */
|
||||||
|
|
||||||
|
#mainApp {
|
||||||
|
color: #a3aed2
|
||||||
|
}
|
||||||
|
|
||||||
|
#mainText{
|
||||||
|
font : bold 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebarApp {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#logoApp {
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebarMenuApp {
|
||||||
|
padding: 3px;
|
||||||
|
background-color: #394260;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTextEdit, QListView {
|
||||||
|
}
|
||||||
|
QDialogButtonBox {
|
||||||
|
}
|
||||||
|
QAbstractSpinBox {
|
||||||
|
}
|
||||||
|
QListWidget::item:alternate {
|
||||||
|
}
|
||||||
|
|
||||||
|
#view-button-back:hover {
|
||||||
|
color: #769FF0;
|
||||||
|
}
|
||||||
|
#view-button-next:hover {
|
||||||
|
color: #769FF0;
|
||||||
|
}
|
||||||
|
#view-button-cancel:hover {
|
||||||
|
color: #769FF0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#debugButton {
|
||||||
|
font: bold 8px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
#debugButton:hover {
|
||||||
|
color: #769FF0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#aboutButton:hover {
|
||||||
|
color: #769FF0;
|
||||||
|
}
|
||||||
|
#donateButton:hover {
|
||||||
|
color: #769FF0;
|
||||||
|
}
|
||||||
|
#supportButton:hover {
|
||||||
|
color: #769FF0;
|
||||||
|
}
|
||||||
|
#knownIssuesButton:hover {
|
||||||
|
color: #769FF0;
|
||||||
|
}
|
||||||
|
#releaseNotesButton:hover {
|
||||||
|
color: #769FF0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## TOOLTIP ########## */
|
||||||
|
|
||||||
|
QToolTip {
|
||||||
|
background-color: #769FF0;
|
||||||
|
font : 16px;
|
||||||
|
color: white;
|
||||||
|
padding: 3px;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton {
|
||||||
|
font : 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialogButtonBox {
|
||||||
|
dialogbuttonbox-buttons-have-icons: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## SCROLL BAR ########## */
|
||||||
|
|
||||||
|
QScrollBar:vertical {
|
||||||
|
background: #efefef;
|
||||||
|
width: 20px;
|
||||||
|
margin: 38px 0 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QScrollBar::handle:vertical {
|
||||||
|
background: #769FF0;
|
||||||
|
max-height: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QScrollBar::sub-line:vertical {
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
height: 20px;
|
||||||
|
subcontrol-position: top;
|
||||||
|
subcontrol-origin: margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
QScrollBar::add-line:vertical {
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
height: 20px;
|
||||||
|
subcontrol-position: bottom;
|
||||||
|
subcontrol-origin: margin;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## QLIST VIEW ########## */
|
||||||
|
|
||||||
|
QListView {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QListView::item:alternate {
|
||||||
|
color: #769FF0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QListView::item:!alternate:selected:active {
|
||||||
|
background: #769FF0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QListView::item:selected:active {
|
||||||
|
background: #769FF0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QListView::item:selected:!active {
|
||||||
|
background: #769FF0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QListView::item:hover {
|
||||||
|
background: #769FF0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QListView#listLayout::item:!alternate:selected:active {
|
||||||
|
background: #769FF0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
QListView#listVariant::item:!alternate:selected:active {
|
||||||
|
background: #769FF0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* ########## QLINE EDIT ########## */
|
||||||
|
|
||||||
|
QLineEdit#LE_TestKeyboard {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QLineEdit#m_passphraseLineEdit, QLineEdit#vgName,
|
||||||
|
QLineEdit#m_confirmLineEdit {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QLineEdit#textBoxUserVerifiedPassword, QLineEdit#textBoxVerifiedRootPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QLineEdit#textBoxFullName, QLineEdit#textBoxLoginName, QLineEdit#textBoxHostName,
|
||||||
|
QLineEdit#textBoxUserPassword, QLineEdit#textBoxRootPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#textBoxFullName, #textBoxLoginName, #textBoxHostName, #textBoxUserPassword,
|
||||||
|
#textBoxRootPassword, #textBoxAutoLogin, #vgName {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#textBoxUserVerifiedPassword, #textBoxVerifiedRootPassword,
|
||||||
|
#LE_TestKeyboard, #m_confirmLineEdit, #m_passphraseLineEdit {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ##########PARTITION ########## */
|
||||||
|
|
||||||
|
#partitionLabel {
|
||||||
|
}
|
||||||
|
|
||||||
|
#partitionLabelsView {
|
||||||
|
}
|
||||||
|
|
||||||
|
#CreatePartitionDialog {
|
||||||
|
}
|
||||||
|
|
||||||
|
#partResizerWidget {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## PAGE_USERSETUP ########## */
|
||||||
|
|
||||||
|
#labelWhatIsYourName {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#textBoxFullName {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelFullName {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelFullNameError {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#username_label_2 {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#textBoxLoginName {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelUsername {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelUsernameError {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#hostname_label_2 {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#textBoxHostName {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelHostname {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelHostnameError {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#password_label_2 {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#textBoxUserPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#textBoxUserVerifiedPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelUserPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelUserPasswordError {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#checkBoxRequireStrongPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#checkBoxDoAutoLogin {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#checkBoxReusePassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelChooseRootPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#textBoxRootPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#textBoxVerifiedRootPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelRootPassword {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
#labelRootPasswordError {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## COMBO BOX ########## */
|
||||||
|
|
||||||
|
QComboBox {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QComboBox::item:selected {
|
||||||
|
background: #769FF0;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mountPointComboBox::drop-down {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## SPIN BOX ########## */
|
||||||
|
|
||||||
|
QSpinBox {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QLineEdit {
|
||||||
|
font: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## TREE VIEW ########## */
|
||||||
|
|
||||||
|
QTreeView {
|
||||||
|
font: 16px;
|
||||||
|
show-decoration-selected: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTreeView::item {
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTreeView::item:selected {
|
||||||
|
background: #769FF0;
|
||||||
|
font: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTreeView::branch:has-siblings:!adjoins-item {
|
||||||
|
}
|
||||||
|
QTreeView::branch:has-siblings:adjoins-item {
|
||||||
|
}
|
||||||
|
QTreeView::branch:!has-children:!has-siblings:adjoins-item {
|
||||||
|
}
|
||||||
|
QTreeView::branch:has-children:!has-siblings:closed,
|
||||||
|
QTreeView::branch:closed:has-children:has-siblings {
|
||||||
|
}
|
||||||
|
QTreeView::branch:open:has-children:!has-siblings,
|
||||||
|
QTreeView::branch:open:has-children:has-siblings {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## CHECK BOX ########## */
|
||||||
|
|
||||||
|
QCheckBox {
|
||||||
|
}
|
||||||
|
QCheckBox::indicator:unchecked {
|
||||||
|
}
|
||||||
|
QCheckBox::indicator:checked {
|
||||||
|
}
|
||||||
|
QItemSelectionModel::Select {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## HEADER VIEW ########## */
|
||||||
|
|
||||||
|
QHeaderView::section {
|
||||||
|
font : 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ########## PROGRESS BAR ########## */
|
||||||
|
|
||||||
|
QProgressBar {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
QProgressBar::chunk {
|
||||||
|
background-color: #769FF0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#debugButton {
|
||||||
|
font: bold 8px;
|
||||||
|
color: #394260;
|
||||||
|
}
|
||||||
|
#debugButton:hover {
|
||||||
|
color: #394260;
|
||||||
|
}
|
|
@ -1,253 +1,132 @@
|
||||||
|
/*** Main application window.
|
||||||
/* ########## MAIN APPLICATION WINDOW ########## */
|
*
|
||||||
|
* The main application window has the sidebar, which in turn
|
||||||
|
* contains a logo and a list of items -- note that the list
|
||||||
|
* can **not** be styled, since it has its own custom C++
|
||||||
|
* delegate code.
|
||||||
|
*/
|
||||||
|
|
||||||
#mainApp {
|
#mainApp {
|
||||||
}
|
color: #a3aed2;
|
||||||
|
background-color: #1b1a26;
|
||||||
#mainText{
|
|
||||||
font : bold 16px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebarApp {
|
#sidebarApp {
|
||||||
|
color: #a3aed2;
|
||||||
|
background-color: #1b1a26;
|
||||||
}
|
}
|
||||||
|
|
||||||
#logoApp {
|
#logoApp {
|
||||||
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebarMenuApp {
|
/*** Welcome module.
|
||||||
padding: 0px;
|
*
|
||||||
background-color: none;
|
* There are plenty of parts, but the buttons are the most interesting
|
||||||
}
|
* ones (donate, release notes, ...). The little icon image can be
|
||||||
|
* styled through *qproperty-icon*, which is a little obscure.
|
||||||
|
* URLs can reference the QRC paths of the Calamares application
|
||||||
|
* or loaded via plugins or within the filesystem. There is no
|
||||||
|
* comprehensive list of available icons, though.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*** Generic Widgets.
|
||||||
|
*
|
||||||
|
* You can style **all** widgets of a given class by selecting
|
||||||
|
* the class name. Some widgets have specialized sub-selectors.
|
||||||
|
*/
|
||||||
|
|
||||||
QWidget {
|
QWidget {
|
||||||
font: 16px;
|
font: 16px;
|
||||||
}
|
color: #769ff0;
|
||||||
|
background-color: #1b1a26;
|
||||||
QTextEdit, QListView {
|
|
||||||
}
|
|
||||||
QDialogButtonBox {
|
|
||||||
}
|
|
||||||
QAbstractSpinBox {
|
|
||||||
}
|
|
||||||
QListWidget::item:alternate {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#debugButton {
|
|
||||||
font: bold 8px;
|
|
||||||
color: #292F34;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ########## TOOLTIP ########## */
|
|
||||||
|
|
||||||
QPushButton {
|
|
||||||
font : 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDialogButtonBox {
|
|
||||||
dialogbuttonbox-buttons-have-icons: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ########## QLIST VIEW ########## */
|
|
||||||
|
|
||||||
QListView {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ########## QLINE EDIT ########## */
|
|
||||||
|
|
||||||
QLineEdit#LE_TestKeyboard {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QLineEdit#m_passphraseLineEdit, QLineEdit#vgName,
|
|
||||||
QLineEdit#m_confirmLineEdit {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QLineEdit#textBoxUserVerifiedPassword, QLineEdit#textBoxVerifiedRootPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
QLineEdit#textBoxFullName, QLineEdit#textBoxLoginName, QLineEdit#textBoxHostName,
|
|
||||||
QLineEdit#textBoxUserPassword, QLineEdit#textBoxRootPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#textBoxFullName, #textBoxLoginName, #textBoxHostName, #textBoxUserPassword,
|
|
||||||
#textBoxRootPassword, #textBoxAutoLogin, #vgName {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#textBoxUserVerifiedPassword, #textBoxVerifiedRootPassword,
|
|
||||||
#LE_TestKeyboard, #m_confirmLineEdit, #m_passphraseLineEdit {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ##########PARTITION ########## */
|
|
||||||
|
|
||||||
#partResizerWidget {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ########## PAGE_USERSETUP ########## */
|
|
||||||
|
|
||||||
#labelWhatIsYourName {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#textBoxFullName {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelFullName {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelFullNameError {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#username_label_2 {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#textBoxLoginName {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelUsername {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelUsernameError {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#hostname_label_2 {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#textBoxHostName {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelHostname {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelHostnameError {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#password_label_2 {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#textBoxUserPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#textBoxUserVerifiedPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelUserPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelUserPasswordError {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#checkBoxRequireStrongPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#checkBoxDoAutoLogin {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#checkBoxReusePassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelChooseRootPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#textBoxRootPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#textBoxVerifiedRootPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelRootPassword {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
#labelRootPasswordError {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ########## COMBO BOX ########## */
|
|
||||||
|
|
||||||
QComboBox {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mountPointComboBox::drop-down {
|
|
||||||
font: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ########## SPIN BOX ########## */
|
|
||||||
|
|
||||||
QSpinBox {
|
|
||||||
font: 16px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QLineEdit {
|
QLineEdit {
|
||||||
font: 16px;
|
font: 16px;
|
||||||
|
color: #a3aed2;
|
||||||
|
background-color: #394260;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ########## TREE VIEW ########## */
|
QListView {
|
||||||
|
font: 16px;
|
||||||
|
color: #769ff0;
|
||||||
|
alternate-background-color: #769ff0;
|
||||||
|
background-color: #394260;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton {
|
||||||
|
font: 16px;
|
||||||
|
color: #769ff0;
|
||||||
|
background-color: #1b1a26;
|
||||||
|
border-color: #394260;
|
||||||
|
border-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QToolTip {
|
||||||
|
font: 16px;
|
||||||
|
color: #769ff0;
|
||||||
|
background-color: #212736;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
QTreeView {
|
QTreeView {
|
||||||
font: 16px;
|
font: 16px;
|
||||||
show-decoration-selected: 0;
|
color: #769ff0;
|
||||||
|
alternate-background-color: #769ff0;
|
||||||
|
background-color: #212736;
|
||||||
}
|
}
|
||||||
|
|
||||||
QTreeView::item {
|
#layoutSelector {
|
||||||
padding: 2px;
|
font: 16px;
|
||||||
|
color: #a3aed2;
|
||||||
|
selection-color: #a3aed2;
|
||||||
|
background-color: #1b1a26;
|
||||||
|
selection-background-color: #1b1a26;
|
||||||
}
|
}
|
||||||
|
|
||||||
QTreeView::branch:has-siblings:!adjoins-item {
|
#variantSelector {
|
||||||
}
|
font: 16px;
|
||||||
QTreeView::branch:has-siblings:adjoins-item {
|
color: #a3aed2;
|
||||||
}
|
selection-color: #a3aed2;
|
||||||
QTreeView::branch:!has-children:!has-siblings:adjoins-item {
|
background-color: #1b1a26;
|
||||||
}
|
selection-background-color: #1b1a26;
|
||||||
QTreeView::branch:has-children:!has-siblings:closed,
|
|
||||||
QTreeView::branch:closed:has-children:has-siblings {
|
|
||||||
}
|
|
||||||
QTreeView::branch:open:has-children:!has-siblings,
|
|
||||||
QTreeView::branch:open:has-children:has-siblings {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ########## CHECK BOX ########## */
|
#scrollAreaWidgetContents {
|
||||||
|
color: #a3aed2;
|
||||||
QCheckBox {
|
|
||||||
}
|
|
||||||
QCheckBox::indicator:unchecked {
|
|
||||||
}
|
|
||||||
QCheckBox::indicator:checked {
|
|
||||||
}
|
|
||||||
QItemSelectionModel::Select {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ########## HEADER VIEW ########## */
|
#defineInfoLabel {
|
||||||
|
color: #a3aed2;
|
||||||
QHeaderView::section {
|
|
||||||
font : 16px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#debugButton {
|
/*
|
||||||
background-color: none;
|
QPushButton#aboutButton { qproperty-icon: url(:/data/images/release.svg); }
|
||||||
font: 12px;
|
#donateButton,
|
||||||
color: #edecf0;
|
#supportButton,
|
||||||
height: 32px;
|
#releaseNotesButton,
|
||||||
border: none;
|
#knownIssuesButton { qproperty-icon: url(:/data/images/help.svg); }
|
||||||
}
|
*/
|
||||||
|
|
||||||
#debugButton:hover {
|
/*** Partitioning module.
|
||||||
color: #ff7f7f;
|
*
|
||||||
}
|
* Many moving parts, which you will need to experiment with.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
#bootInfoIcon { }
|
||||||
|
#bootInfoLable { }
|
||||||
|
#deviceInfoIcon { }
|
||||||
|
#partitionBarView { }
|
||||||
|
*/
|
||||||
|
|
||||||
#aboutButton {
|
/*** Licensing module.
|
||||||
background-color: none;
|
*
|
||||||
font: 12px;
|
* The licensing module paints individual widgets for each of
|
||||||
color: #292F34;
|
* the licenses. The item can be collapsed or expanded.
|
||||||
height: 32px;
|
*/
|
||||||
border: none;
|
|
||||||
}
|
/*
|
||||||
|
#licenseItem { }
|
||||||
|
#licenseItemFullText { }
|
||||||
|
*/
|
||||||
|
|
|
@ -1,58 +1,24 @@
|
||||||
#efiBootLoaderVar: "packagechooser_bootloader"
|
|
||||||
# Possible options are 'grub', 'sb-shim' and 'systemd-boot'.
|
# Possible options are 'grub', 'sb-shim' and 'systemd-boot'.
|
||||||
efiBootLoader: "grub"
|
efiBootLoader: "systemd-boot"
|
||||||
# systemd-boot configuration files settings, set kernel search path, kernel name
|
|
||||||
# and amount of time before default selection boots
|
|
||||||
kernelSearchPath: "/usr/lib/modules"
|
kernelSearchPath: "/usr/lib/modules"
|
||||||
kernelName: "vmlinuz"
|
#kernelName: "vmlinuz"
|
||||||
|
kernelPattern: "^vmlinuz.*"
|
||||||
timeout: "10"
|
timeout: "10"
|
||||||
|
|
||||||
# systemd-boot and refind support custom kernel params
|
# systemd-boot and refind support custom kernel params
|
||||||
kernelParams: [ "quiet" ]
|
kernelParams: [ "nvme_load=YES","nowatchdog","quiet" ]
|
||||||
#refindKernelList: [ "linux","linux-lts","linux-zen","linux-hardened" ]
|
refindKernelList: [ "linux","linux-lts","linux-zen","linux-hardened" ]
|
||||||
# GRUB 2 binary names and boot directory
|
|
||||||
# Some distributions (e.g. Fedora) use grub2-* (resp. /boot/grub2/) names.
|
|
||||||
# These names are also used when using sb-shim, since that needs some
|
|
||||||
# GRUB functionality (notably grub-probe) to work. As needed, you may use
|
|
||||||
# complete paths like `/usr/bin/efibootmgr` for the executables.
|
|
||||||
#
|
|
||||||
grubInstall: "grub-install"
|
grubInstall: "grub-install"
|
||||||
grubMkconfig: "grub-mkconfig"
|
grubMkconfig: "grub-mkconfig"
|
||||||
grubCfg: "/boot/grub/grub.cfg"
|
grubCfg: "/boot/grub/grub.cfg"
|
||||||
grubProbe: "grub-probe"
|
grubProbe: "grub-probe"
|
||||||
efiBootMgr: "efibootmgr"
|
efiBootMgr: "efibootmgr"
|
||||||
|
efiBootloaderId: "parchlinux"
|
||||||
|
|
||||||
# Optionally set the bootloader ID to use for EFI. This is passed to
|
|
||||||
# grub-install --bootloader-id.
|
|
||||||
#
|
|
||||||
# If not set here, the value from bootloaderEntryName from branding.desc
|
|
||||||
# is used, with problematic characters (space and slash) replaced.
|
|
||||||
#
|
|
||||||
# The ID is also used as a directory name within the EFI environment,
|
|
||||||
# and the bootloader is copied from /boot/efi/EFI/<dirname>/ . When
|
|
||||||
# setting the option here, keep in mind that the name is sanitized
|
|
||||||
# (problematic characters, see above, are replaced).
|
|
||||||
#
|
|
||||||
# There are some special words possible at the end of *efiBootloaderId*:
|
|
||||||
# ${SERIAL} can be used to obtain a uniquely-numbered suffix
|
|
||||||
# that is added to the Id (yielding, e.g., `dirname1` or `dirname72`)
|
|
||||||
# ${RANDOM} can be used to obtain a unique 4-digit hex suffix
|
|
||||||
# ${PHRASE} can be used to obtain a unique 1-to-3-word suffix
|
|
||||||
# from a dictionary of space-themed words
|
|
||||||
# These words must be at the **end** of the *efiBootloaderId* value.
|
|
||||||
# There must also be at most one of them. If there is none, no suffix-
|
|
||||||
# processing is done and the *efiBootloaderId* is used unchanged.
|
|
||||||
#
|
|
||||||
# NOTE: Debian derivatives that use the unmodified Debian GRUB EFI
|
|
||||||
# packages may need to set this to "debian" because that is
|
|
||||||
# hard-coded in `grubx64.efi`.
|
|
||||||
#
|
|
||||||
# efiBootloaderId: "dirname"
|
|
||||||
|
|
||||||
# Optionally install a copy of the GRUB EFI bootloader as the EFI
|
|
||||||
# fallback loader (either bootia32.efi or bootx64.efi depending on
|
|
||||||
# the system). This may be needed on certain systems (Intel DH87MC
|
|
||||||
# seems to be the only one). If you set this to false, take care
|
|
||||||
# to add another module to optionally install the fallback on those
|
|
||||||
# boards that need it.
|
|
||||||
installEFIFallback: false
|
installEFIFallback: false
|
||||||
|
|
||||||
|
loaderEntries:
|
||||||
|
- "timeout 5"
|
||||||
|
- "console-mode auto"
|
||||||
|
- "reboot-for-bitlocker 1"
|
|
@ -5,6 +5,8 @@
|
||||||
# target as a usable chroot / "live" system).
|
# target as a usable chroot / "live" system).
|
||||||
---
|
---
|
||||||
|
|
||||||
|
setSELinux: false
|
||||||
|
|
||||||
extraMounts:
|
extraMounts:
|
||||||
- device: proc
|
- device: proc
|
||||||
fs: proc
|
fs: proc
|
||||||
|
@ -40,10 +42,10 @@ btrfsSubvolumes:
|
||||||
|
|
||||||
mountOptions:
|
mountOptions:
|
||||||
- filesystem: default
|
- filesystem: default
|
||||||
options: [ defaults, noatime ]
|
options: [ noatime ]
|
||||||
- filesystem: efi
|
- filesystem: efi
|
||||||
options: [ defaults, umask=0077 ]
|
options: [ fmask=0137, dmask=0027 ]
|
||||||
- filesystem: btrfs
|
- filesystem: btrfs
|
||||||
options: [ defaults, noatime, compress=zstd ]
|
options: [ noatime, compress=zstd ]
|
||||||
- filesystem: btrfs_swap
|
- filesystem: btrfs_swap
|
||||||
options: [ defaults, noatime ]
|
options: [ noatime ]
|
|
@ -3,11 +3,15 @@
|
||||||
#
|
#
|
||||||
# partition handling.
|
# partition handling.
|
||||||
---
|
---
|
||||||
|
efi:
|
||||||
|
mountPoint: "/efi"
|
||||||
|
recommendedSize: 1024MiB
|
||||||
|
minimumSize: 500MiB
|
||||||
|
label: "EFI"
|
||||||
|
|
||||||
efiSystemPartition: "/boot/efi"
|
|
||||||
|
|
||||||
# set to 512M for best compatinbility for buggy old EFI firmware
|
# set to 512M for best compatinbility for buggy old EFI firmware
|
||||||
efiSystemPartitionSize: 512M
|
#efiSystemPartitionSize: 512M
|
||||||
|
|
||||||
userSwapChoices:
|
userSwapChoices:
|
||||||
- none # Create no swap, use no swap
|
- none # Create no swap, use no swap
|
||||||
|
@ -15,6 +19,7 @@ userSwapChoices:
|
||||||
- suspend # At least main memory size
|
- suspend # At least main memory size
|
||||||
- file # To swap file instead of partition
|
- file # To swap file instead of partition
|
||||||
|
|
||||||
|
|
||||||
drawNestedPartitions: false
|
drawNestedPartitions: false
|
||||||
|
|
||||||
alwaysShowPartitionLabels: true
|
alwaysShowPartitionLabels: true
|
||||||
|
@ -25,19 +30,10 @@ initialSwapChoice: none
|
||||||
|
|
||||||
defaultFileSystemType: "ext4"
|
defaultFileSystemType: "ext4"
|
||||||
|
|
||||||
# Selectable filesystem type, used when "erase" is done.
|
showNotEncryptedBootMessage: false
|
||||||
#
|
|
||||||
# When erasing the disk, the *defaultFileSystemType* is used (see
|
luksGeneration: luks1
|
||||||
# above), but it is also possible to give users a choice:
|
|
||||||
# list suitable filesystems here. A drop-down is provided
|
|
||||||
# to pick which is the filesystems will be used.
|
|
||||||
#
|
|
||||||
# The value *defaultFileSystemType* is added to this list (with a warning)
|
|
||||||
# if not present; the default pick is the *defaultFileSystemType*.
|
|
||||||
#
|
|
||||||
# If not specified at all, uses *defaultFileSystemType* without a
|
|
||||||
# warning (this matches traditional no-choice-available behavior best).
|
|
||||||
# availableFileSystemTypes: ["ext4","btrfs","xfs","f2fs"]
|
|
||||||
|
|
||||||
availableFileSystemTypes: ["ext4","f2fs","xfs","btrfs"]
|
availableFileSystemTypes: ["ext4","f2fs","xfs","btrfs"]
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ sudoersGroup: wheel
|
||||||
autologinGroup: autologin
|
autologinGroup: autologin
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sudoersConfigureWithGroup: true
|
sudoersConfigureWithGroup: true
|
||||||
|
|
||||||
setRootPassword: false
|
setRootPassword: false
|
||||||
|
@ -32,11 +31,11 @@ doAutologin: false
|
||||||
|
|
||||||
# These are very weak -- actually, none at all -- requirements
|
# These are very weak -- actually, none at all -- requirements
|
||||||
passwordRequirements:
|
passwordRequirements:
|
||||||
minLength: -1 # Password at least this many characters
|
minLength: 1 # Password at least this many characters
|
||||||
maxLength: 10 # Password at most this many characters
|
# maxLength: 10 # Password at most this many characters
|
||||||
libpwquality:
|
# libpwquality:
|
||||||
- minlen=0
|
# - minlen=0
|
||||||
- minclass=0
|
# - minclass=0
|
||||||
|
|
||||||
allowWeakPasswords: true
|
allowWeakPasswords: true
|
||||||
|
|
||||||
|
@ -49,7 +48,6 @@ user:
|
||||||
hostname:
|
hostname:
|
||||||
location: EtcFile
|
location: EtcFile
|
||||||
writeHostsFile: true
|
writeHostsFile: true
|
||||||
template: "ParchBox-${cpu}"
|
|
||||||
forbidden_names: [ localhost ]
|
forbidden_names: [ localhost ]
|
||||||
|
|
||||||
presets:
|
presets:
|
||||||
|
|
Loading…
Add table
Reference in a new issue