Warning, /plasma/plasma-welcome/README.md is written in an unsupported language. File is not indexed.
0001 <!--
0002 SPDX-License-Identifier: CC0-1.0
0003 SPDX-FileCopyrightText: 2022-Nate Graham <nate@kde.org>
0004 -->
0005
0006 # Plasma Welcome App
0007 Friendly onboarding wizard for Plasma
0008
0009 Welcome Center is the perfect introduction to KDE Plasma! It can help you learn how to connect to the internet, install apps, customize the system, and more!
0010
0011 There are four mutually exclusive usage modes:
0012 - Run the app normally and it will show a welcome/onboarding wizard.
0013 - Run the app with the `--post-update` argument to show a post-update message.
0014 - Run the app with the `--post-update-beta` argument to show a post-update message for beta releases.
0015 - Run the app with the `--live-environment` argument to show a reduced wizard with the live installer page and no settings pages.
0016
0017 ## Screenshots
0018 | Welcome to KDE Plasma! | Managing Software | Getting Involved |
0019 | --- | --- | --- |
0020 |  |  |  |
0021
0022 # For live distributions
0023 When Welcome Center is ran in a live environment, it can show a reduced wizard with a page welcoming the user to the disibution and without any settings pages.
0024
0025 To ensure that Welcome Center's launcher recognises the live environment, you will need to create/change the config in your live user's `~/.config/plasma-welcomerc`:
0026
0027 ```conf
0028 [General]
0029 LiveEnvironment=true
0030 LiveInstaller=calamares
0031 ```
0032
0033 `LiveInstaller` is optional, used to show a shortcut to launch the installer. It should be the name of a desktop file in `/usr/share/applications`, without the `.desktop` extension.
0034
0035 # Customizing the first page
0036 By default, the first page introduces the distro and mostly talks about Plasma and KDE. If desired, this can be changed by placing a specially crafted desktop file at `/usr/share/plasma/plasma-welcome/intro-customization.desktop`. In this file, you can supply custom intro text, which will be displayed first, before the standard text talking about Plasma and KDE. It is recommended to keep this text short.
0037
0038 In addition, you can optionally specify a custom icon or image to replace the Konqi image, a custom caption for it, and a custom URL to open when clicking on it. Text can be localized in the standard way that text in desktop files is localized. Note that you are expected to do this yourself!
0039
0040 ## Example intro text customization file
0041 ```
0042 [Desktop Entry]
0043 # Required since this is a Desktop file; ignored
0044 Type=Application
0045
0046 # Required; becomes the first paragraph on the Welcome page
0047 # Don't forget to offer translations of the text!
0048 Name=Welcome to NateOS! It's the best OS ever, until it explodes. Did you know that's a feature? It's right there on the box!
0049 Name[fr]=Bienvenue sur NateOS! C'est le meilleur système d'exploitation du monde, justqu'à qu'il esplose. Saviez-vous que c'est intentionnel? C'est écrit sur la boîte!
0050
0051 # Optional; replaces the default image on the Welcome page
0052 # can be an icon name or an absolute path to an image on disk beginning with file:/
0053 Icon=edit-bomb
0054
0055 # Optional; replaces the default image caption on the Welcome page
0056 # Don't forget to offer translations of the text!
0057 Comment=This is what a bomb looks like. Don't worry, you'll become very familiar with them!
0058 Comment[fr]=Voici à quoi ressemble une bombe. Ne vous inquiétez pas, vous allez vous familiariser avec elles!
0059
0060 # Optional; replaces the default URL opened when clicking on the Welcome page's image or icon
0061 URL=https://www.youtube.com/watch?v=dQw4w9WgXcQ
0062 ```
0063
0064 Translations can be tested by manually running Welcome Center in a different language, e.g. `LANG=fr_FR plasma-welcome`.
0065
0066 # Extending Welcome Center with custom pages
0067 Custom distro-specific pages can be embedded in the app, and will appear right before the "Get Involved" page. Only content that is safely skippable should be added, since the user can close the app at any time, potentially before they see your custom pages.
0068
0069 To make custom pages visible to the app, place them in `/usr/share/plasma/plasma-welcome/extra-pages/`, prefixed with a number and a dash. For example if you define two pages with the following names:
0070
0071 - `01-WelcomeToDistro.qml`
0072 - `02-InstallMediaCodecs.qml`
0073
0074 These two pages will be added into the wizard, with WelcomeToDistro shown first, and then InstallMediaCodecs.
0075
0076 Custom pages are QML files with a root item that inherit from `Kirigami.Page`. Any content within the page is supported, though to maintain visual consistency with existing pages, it is recommended to use `GenericPage`, `ScrollablePage` or `KCMPage` as the root item and set the `heading` and `description` properties, with any custom content going beneath them. You can reference [existing pages](src/contents/ui/pages) when creating your own.
0077
0078 Because pages are written in QML without support for C++ support code, only functions that can be performed entirely with QML are available. Here are some examples:
0079
0080 ## Open a URL in the default web browser
0081 ```
0082 Kirigami.Icon {
0083 source: "media-default-track"
0084 HoverHandler {
0085 cursorShape: Qt.PointingHandCursor
0086 }
0087 TapHandler {
0088 onTapped: Qt.openUrlExternally("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
0089 }
0090 }
0091 ```
0092
0093 ## Open an external app
0094 ```
0095 ApplicationIcon {
0096 anchors.centerIn: parent
0097 application: "org.kde.dolphin"
0098 size: Kirigami.Units.gridUnit * 10
0099 }
0100 ```
0101
0102 ## Run a terminal command
0103 ```
0104 Kirigami.Icon {
0105 source: "notification"
0106 HoverHandler {
0107 cursorShape: Qt.PointingHandCursor
0108 }
0109 TapHandler {
0110 onTapped: Controller.runCommand("notify-send foo bar")
0111 }
0112 }
0113 ```
0114
0115 ## Embed a KCM in the page
0116 ```
0117 KCMPage {
0118 heading: i18nc("@title: window", "Learn about Activities")
0119 description: i18nc("@info:usagetip", "Activities can be used to separate high-level projects or tasks so you can focus on one at a time. You can set them up in System Settings, and also right here.")
0120
0121 path: "kcm_activities"
0122 }
0123 ```
0124
0125 If you find that your specific use case can't be supported with these tools, please file a bug report at https://bugs.kde.org/enter_bug.cgi?product=Welcome%20Center detailing the use case and what would be needed to support it.
0126
0127 ## Example custom page
0128 Name this file `01-NateOS.qml` and place it in `/usr/share/plasma/plasma-welcome/extra-pages/`:
0129
0130 ```
0131 /*
0132 * SPDX-FileCopyrightText: 2021 Felipe Kinoshita <kinofhek@gmail.com>
0133 * SPDX-FileCopyrightText: 2022 Nate Graham <nate@kde.org>
0134 *
0135 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0136 */
0137
0138 import QtQuick
0139 import QtQuick.Controls as QQC2
0140 import QtQuick.Layouts
0141 import org.kde.kirigami as Kirigami
0142 import Qt5Compat.GraphicalEffects
0143
0144 import org.kde.plasma.welcome
0145
0146 GenericPage {
0147 heading: i18nc("@info:window", "Welcome to NateOS")
0148 description: i18nc("@info:usagetip", "It's the best distro in the world… <i>until it explodes</i>.")
0149
0150 topContent: [
0151 Kirigami.UrlButton {
0152 Layout.topMargin: Kirigami.Units.largeSpacing
0153 text: i18nc("@action:button", "All your base are belong to us")
0154 url: "https://en.wikipedia.org/wiki/All_your_base_are_belong_to_us"
0155 }
0156 ]
0157
0158 ColumnLayout {
0159 anchors.centerIn: parent
0160 spacing: 0
0161
0162 Kirigami.Icon {
0163 id: image
0164 Layout.preferredWidth: Kirigami.Units.gridUnit * 10
0165 Layout.preferredHeight: Layout.preferredWidth
0166
0167 source: "granatier"
0168
0169 HoverHandler {
0170 id: hoverHandler
0171 cursorShape: Qt.PointingHandCursor
0172 }
0173
0174 TapHandler {
0175 onTapped: showPassiveNotification(i18n("You have no chance to survive make your time"));
0176 }
0177
0178 QQC2.ToolTip {
0179 visible: hoverHandler.hovered
0180 text: i18nc("@action:button", "Detonate the bomb")
0181 }
0182
0183 layer.enabled: true
0184 layer.effect: DropShadow {
0185 transparentBorder: true
0186 horizontalOffset: 0
0187 verticalOffset: 1
0188 radius: 20
0189 samples: 20
0190 color: Qt.rgba(0, 0, 0, 0.2)
0191 }
0192 }
0193
0194 Kirigami.Heading {
0195 Layout.alignment: Qt.AlignHCenter
0196 Layout.bottomMargin: Kirigami.Units.gridUnit
0197 text: i18nc("@title a friendly warning", "Someone set us up the bomb")
0198 wrapMode: Text.WordWrap
0199 level: 3
0200 }
0201 }
0202 }
0203 ```