[plasma/plasma-desktop] /: [kcms/autostart] move autostart kcm to plasma-workspace

Henri Chain null at kde.org
Wed Apr 21 09:48:23 BST 2021


Git commit 90bbdf8373161dd18d8f180f453ec4bc3ed36c46 by Henri Chain.
Committed on 21/04/2021 at 08:45.
Pushed by hchain into branch 'master'.

[kcms/autostart] move autostart kcm to plasma-workspace

M  +0    -1    doc/kcontrol/CMakeLists.txt
D  +0    -3    doc/kcontrol/autostart/CMakeLists.txt
D  +0    -156  doc/kcontrol/autostart/index.docbook
M  +0    -1    kcms/CMakeLists.txt
D  +0    -3    kcms/autostart/AUTHORS
D  +0    -16   kcms/autostart/CMakeLists.txt
D  +0    -3    kcms/autostart/Messages.sh
D  +0    -70   kcms/autostart/autostart.cpp
D  +0    -48   kcms/autostart/autostart.h
D  +0    -435  kcms/autostart/autostartmodel.cpp
D  +0    -87   kcms/autostart/autostartmodel.h
D  +0    -206  kcms/autostart/package/contents/ui/main.qml
D  +0    -196  kcms/autostart/package/metadata.desktop

https://invent.kde.org/plasma/plasma-desktop/commit/90bbdf8373161dd18d8f180f453ec4bc3ed36c46

diff --git a/doc/kcontrol/CMakeLists.txt b/doc/kcontrol/CMakeLists.txt
index cc3f85f14..7362540d5 100644
--- a/doc/kcontrol/CMakeLists.txt
+++ b/doc/kcontrol/CMakeLists.txt
@@ -9,7 +9,6 @@ ecm_optional_add_subdirectory(splashscreen)
 ecm_optional_add_subdirectory(cookies)
 ecm_optional_add_subdirectory(baloo)
 
-ecm_optional_add_subdirectory(autostart)
 ecm_optional_add_subdirectory(cursortheme)
 ecm_optional_add_subdirectory(fonts)
 ecm_optional_add_subdirectory(fontinst)
diff --git a/doc/kcontrol/autostart/CMakeLists.txt b/doc/kcontrol/autostart/CMakeLists.txt
deleted file mode 100644
index fa673b22f..000000000
--- a/doc/kcontrol/autostart/CMakeLists.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-########### install files ###############
-#
-kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${KDE_INSTALL_DOCBUNDLEDIR}/en SUBDIR kcontrol/autostart)
diff --git a/doc/kcontrol/autostart/index.docbook b/doc/kcontrol/autostart/index.docbook
deleted file mode 100644
index e5e7ed442..000000000
--- a/doc/kcontrol/autostart/index.docbook
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" ?>
-<!DOCTYPE article PUBLIC "-//KDE//DTD DocBook XML V4.5-Based Variant V1.1//EN"
-"dtd/kdedbx45.dtd" [
-  <!ENTITY % addindex "IGNORE">
-  <!ENTITY % English "INCLUDE">
-]>
-<article id="autostart" lang="&language;">
-<articleinfo>
-<title>Autostart</title>
-<authorgroup>
-<author>&Anne-Marie.Mahfouf;</author>
-<!-- TRANS:ROLES_OF_TRANSLATORS -->
-</authorgroup>
-
-<date>2021-04-05</date>
-<releaseinfo>&plasma; 5.20</releaseinfo>
-
-<keywordset>
-<keyword>KDE</keyword>
-<keyword>System Settings</keyword>
-<keyword>autostart</keyword>
-<keyword>desktop file</keyword>
-<keyword>script file</keyword>
-</keywordset>
-</articleinfo>
-
-<sect1 id="kcm_autostart">
-<title>Autostart Manager</title>
-
-<para>This module is a configuration tool for managing what programs start up with your personal &plasma;. It allows you to add programs or scripts so they automatically run during startup or shutdown of your &plasma; session and to manage them.</para>
-
-<note><para>Please note that in this module all changes are immediately applied.</para></note>
-
-<para>The program scans <filename>$HOME/.config/autostart/</filename>,
-<filename class="directory">$HOME/.config/plasma-workspace/env</filename> and <filename class="directory">$HOME/.config/plasma-workspace/shutdown</filename> folders to check what programs and scripts are already there and displays them. It allows you to manage them easily.
-</para>
-
-<note><para>Note that you can change the location of your <filename class="directory">Autostart</filename>
-folder in <menuchoice><guimenu>Applications</guimenu> <guimenuitem>Locations</guimenuitem></menuchoice> 
-in the <guilabel>Personalization</guilabel> category of the &systemsettings; and set a different folder 
-than <filename class="directory">$HOME/.config/autostart</filename>.</para></note>
-
-<para>Please read also <ulink url="help:/kcontrol/kcmsmserver">Desktop Session</ulink> and <ulink url="help:/kcontrol/kded">Background Services</ulink> for information how to configure the startup behavior of your &plasma; session.</para>
-
-<para>Some &kde; applications handle the autostart behavior on their own, ⪚ you can enable or disable autostart of an application in the settings dialog (&kalarm;) or you have to use <menuchoice><guimenu>File</guimenu><guimenuitem>Quit</guimenuitem></menuchoice> (&konversation;, &kopete;), otherwise the application is still running in the systemtray and will be restarted on next login.
-</para>
-
-<sect2 id="migration">
-<title>Migration from &kde; Workspaces 4</title>
-<para>To migrate your personal autostart setting from &kde; Workspaces 4:</para>
-<simplelist>
-<member>Copy desktop files from <filename class="directory">$HOME/.kde/Autostart</filename> to <filename class="directory">$HOME/.config/autostart</filename></member>
-<member>Copy pre startup script files from <filename class="directory">$HOME/.kde/Autostart</filename> to <filename class="directory">$HOME/.config/plasma-workspace/env</filename></member>
-<member>Copy shutdown script files from <filename class="directory">$HOME/.kde/Autostart</filename> to <filename class="directory">$HOME/.config/plasma-workspace/shutdown</filename></member>
-</simplelist>
-</sect2>
-
-<sect2 id="disabling_autostart">
-<title>Disabling Autostart Files Provided by Your Distribution</title>
-<para>The correct way to disable an autostart item, for example the printer-applet if you use printer from time to time, is to copy its <filename class="extension">.desktop</filename> file to your personal autostart folder. Anything of the same name in <filename class="directory">$HOME/.config/autostart</filename> overrides the <filename class="extension">.desktop</filename> file in the default package. Add the following line to the copied <filename class="extension">.desktop</filename> file:</para>
-<programlisting>
-Hidden=true
-</programlisting>
-</sect2>
-
-<sect2 id="current">
-<title>Files display</title>
-<para>The main part of the module displays the programs that are loaded when &plasma; starts and scripts that are run when &plasma; starts or shutdowns.</para>
-
-<variablelist>
-<varlistentry><term><guilabel>Icon</guilabel></term>
-<listitem>
-<para>
-This column shows the icon of the program or script you want to start with &plasma;. The icon is extracted from the Desktop file from the Icon key for a program and is the default icon for a script.
-</para>
-</listitem>
-</varlistentry>
-
-<varlistentry><term><guilabel>Name</guilabel></term>
-<listitem>
-<para>
-This column shows the name of the program or script you want to start with &plasma;. The name is extracted from the <filename class="extension">.desktop</filename> file from the <literal>Name</literal> key for a program and is the filename for a script.
-</para>
-</listitem>
-</varlistentry>
-
-<varlistentry><term><guilabel>Properties</guilabel></term>
-<listitem>
-<para>
-This button is only shown when you hover the item with the mouse pointer. The button (only enabled for programs &ie; <filename class="extension">.desktop</filename> files) allows you to change the properties of the program or script. You have general properties, permissions properties, a preview when applicable, and properties related to the application for programs. The default command is extracted from the <filename class="extension">.desktop</filename> file from the <literal>Exec</literal> key.
-</para>
-<para>
-For a script, the command is the path to the script and can not be modified.
-</para>
-</listitem>
-</varlistentry>
-
-<varlistentry><term><guilabel>Remove</guilabel></term>
-<listitem>
-<para>
-This button is only shown when you hover the item with the mouse pointer. Pressing the <guibutton>−</guibutton> button will immediately remove the Desktop file for the program or the script or symbolic link in the <filename class="directory">Autostart</filename> folder.
-</para>
-</listitem>
-</varlistentry>
-</variablelist>
-</sect2>
-
-<sect2 id="actions">
-<title>Actions</title>
-<para>
-On the bottom, you have the combined <guibutton>Add...</guibutton> button to choose the type of item you want to add. You can add programs and login or logout scripts.
-</para>
-
-<variablelist>
-<varlistentry><term><guimenuitem>Add Program</guimenuitem></term>
-<listitem>
-<para>
-Clicking this item displays the standard &plasma; <guilabel>Choose Application</guilabel> dialog and allows you to choose which program you want to start. After choosing the program, clicking <guibutton>OK</guibutton> brings you the properties for this program. 
-</para>
-<para>
-This will copy the program <filename class="extension">.desktop</filename> file in your <filename class="directory">Autostart</filename> folder. 
-</para>
-</listitem>
-</varlistentry>
-
-<varlistentry><term><guimenuitem>Add Login Script...</guimenuitem></term>
-<listitem>
-<para>
-This item opens a dialog that asks you for the location of the script you want to add. Scripts set to run on login are copied or symlinked in <filename class="directory">$HOME/.config/autostart</filename> and will be run during Plasma startup.
-</para>
-</listitem>
-</varlistentry>
-<varlistentry><term><guimenuitem>Add Logout Script...</guimenuitem></term>
-<listitem>
-<para>
-This item opens a dialog that asks you for the location of the script you want to add. Scripts set on to be run on logout are copied or symlinked in the <filename class="directory">$HOME/.config/plasma-workspace/shutdown</filename> directory and will be automatically run during &plasma; shutdown after the user has logged out.
-</para>
-</listitem>
-</varlistentry>
-</variablelist>
-</sect2>
-</sect1>
-</article>
-
-<!--
-Local Variables:
-mode: xml
-sgml-minimize-attributes:nil
-sgml-general-insert-case:lower
-sgml-indent-step:0
-sgml-indent-data:nil
-End:
-
-vim:tabstop=2:shiftwidth=2:expandtab
-kate: space-indent on; indent-width 2; tab-width 2; indent-mode none;
--->
diff --git a/kcms/CMakeLists.txt b/kcms/CMakeLists.txt
index d0f5718e0..5079c2e16 100644
--- a/kcms/CMakeLists.txt
+++ b/kcms/CMakeLists.txt
@@ -10,7 +10,6 @@ endif()
 
 add_subdirectory( access )
 add_subdirectory( dateandtime )
-add_subdirectory( autostart )
 add_subdirectory( ksplash )
 
 add_subdirectory( launch )
diff --git a/kcms/autostart/AUTHORS b/kcms/autostart/AUTHORS
deleted file mode 100644
index 040409dba..000000000
--- a/kcms/autostart/AUTHORS
+++ /dev/null
@@ -1,3 +0,0 @@
-Stephen Leaf <smileaf at gmail.com>
-Montel Laurent <montel at kde.org>
-Nicolas Fella <nicolas.fella at gmx.de>
diff --git a/kcms/autostart/CMakeLists.txt b/kcms/autostart/CMakeLists.txt
deleted file mode 100644
index 93644f68c..000000000
--- a/kcms/autostart/CMakeLists.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-# KI18N Translation Domain for this library
-add_definitions(-DTRANSLATION_DOMAIN=\"kcm_autostart\")
-
-set(kcm_autostart_PART_SRCS
-   autostartmodel.cpp
-   autostart.cpp )
-
-add_library(kcm_autostart MODULE ${kcm_autostart_PART_SRCS})
-
-target_link_libraries(kcm_autostart KF5::I18n KF5::KIOCore KF5::KIOWidgets KF5::QuickAddons)
-
-kcoreaddons_desktop_to_json(kcm_autostart "package/metadata.desktop")
-
-install(TARGETS kcm_autostart  DESTINATION ${KDE_INSTALL_PLUGINDIR}/kcms )
-install(FILES package/metadata.desktop RENAME autostart.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR})
-kpackage_install_package(package kcm_autostart kcms)
diff --git a/kcms/autostart/Messages.sh b/kcms/autostart/Messages.sh
deleted file mode 100644
index 6a41f58b1..000000000
--- a/kcms/autostart/Messages.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env bash
-
-$XGETTEXT `find . -name '*.cpp' -o -name '*.qml'` -o $podir/kcm_autostart.pot
diff --git a/kcms/autostart/autostart.cpp b/kcms/autostart/autostart.cpp
deleted file mode 100644
index 50512c821..000000000
--- a/kcms/autostart/autostart.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2006-2007 by Stephen Leaf                               *
- *   smileaf at gmail.com                                                     *
- *   Copyright (C) 2008 by Montel Laurent <montel at kde.org>                 *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA          *
- ***************************************************************************/
-#include "autostart.h"
-
-#include <KAboutData>
-#include <KLocalizedString>
-
-K_PLUGIN_CLASS_WITH_JSON(Autostart, "metadata.json")
-
-Autostart::Autostart(QObject *parent, const QVariantList &)
-    : KQuickAddons::ConfigModule(parent)
-    , m_model(new AutostartModel(this))
-{
-    setButtons(Help);
-
-    qmlRegisterUncreatableType<AutostartModel>("org.kde.plasma.kcm.autostart", 1, 0, "AutostartModel", QStringLiteral("Only for enums"));
-
-    KAboutData *about = new KAboutData(QStringLiteral("kcm_autostart"),
-                                       i18n("Autostart"),
-                                       QStringLiteral("1.0"),
-                                       i18n("Session Autostart Manager Control Panel Module"),
-                                       KAboutLicense::GPL,
-                                       i18n("Copyright © 2006–2020 Autostart Manager team"));
-    about->addAuthor(i18n("Stephen Leaf"), QString(), QStringLiteral("smileaf at gmail.com"));
-    about->addAuthor(i18n("Montel Laurent"), i18n("Maintainer"), QStringLiteral("montel at kde.org"));
-    about->addAuthor(i18n("Nicolas Fella"), QString(), QStringLiteral("nicolas.fella at gmx.de"));
-    setAboutData(about);
-}
-
-Autostart::~Autostart()
-{
-}
-
-AutostartModel *Autostart::model() const
-{
-    return m_model;
-}
-
-void Autostart::load()
-{
-    m_model->load();
-}
-
-void Autostart::defaults()
-{
-}
-
-void Autostart::save()
-{
-}
-
-#include "autostart.moc"
diff --git a/kcms/autostart/autostart.h b/kcms/autostart/autostart.h
deleted file mode 100644
index 208c9f6e0..000000000
--- a/kcms/autostart/autostart.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2006-2007 by Stephen Leaf                               *
- *   smileaf at gmail.com                                                     *
- *   Copyright (C) 2008 by Montel Laurent <montel at kde.org>                 *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA          *
- ***************************************************************************/
-
-#ifndef AUTOSTART_H
-#define AUTOSTART_H
-
-#include <KQuickAddons/ConfigModule>
-
-#include "autostartmodel.h"
-
-class Autostart : public KQuickAddons::ConfigModule
-{
-    Q_OBJECT
-    Q_PROPERTY(AutostartModel *model READ model CONSTANT)
-
-public:
-    explicit Autostart(QObject *parent, const QVariantList &);
-    ~Autostart() override;
-
-    void load() override;
-    void save() override;
-    void defaults() override;
-
-    AutostartModel *model() const;
-
-private:
-    AutostartModel *m_model;
-};
-
-#endif
diff --git a/kcms/autostart/autostartmodel.cpp b/kcms/autostart/autostartmodel.cpp
deleted file mode 100644
index 94d800c84..000000000
--- a/kcms/autostart/autostartmodel.cpp
+++ /dev/null
@@ -1,435 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2020 by Méven Car <meven.car at enioka.com>                *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA          *
- ***************************************************************************/
-#include "autostartmodel.h"
-
-#include <KConfigGroup>
-#include <KDesktopFile>
-#include <KShell>
-#include <QDebug>
-#include <QDir>
-#include <QQuickItem>
-#include <QQuickRenderControl>
-#include <QStandardPaths>
-#include <QWindow>
-
-#include <KFileItem>
-#include <KIO/CopyJob>
-#include <KIO/DeleteJob>
-#include <KLocalizedString>
-#include <KOpenWithDialog>
-#include <KPropertiesDialog>
-
-#include <optional>
-
-// FDO user autostart directories are
-// .config/autostart which has .desktop files executed by klaunch
-
-// Then we have Plasma-specific locations which run scripts
-// .config/autostart-scripts which has scripts executed by ksmserver
-// .config/plasma-workspace/shutdown which has scripts executed by startkde
-// .config/plasma-workspace/env which has scripts executed by startkde
-
-// in the case of pre-startup they have to end in .sh
-// everywhere else it doesn't matter
-
-// the comment above describes how autostart *currently* works, it is not definitive documentation on how autostart *should* work
-
-// share/autostart shouldn't be an option as this should be reserved for global autostart entries
-
-static std::optional<AutostartEntry> loadDesktopEntry(const QString &fileName)
-{
-    KDesktopFile config(fileName);
-    const KConfigGroup grp = config.desktopGroup();
-    const auto name = config.readName();
-
-    const bool hidden = grp.readEntry("Hidden", false);
-
-    if (hidden) {
-        return {};
-    }
-
-    const QStringList notShowList = grp.readXdgListEntry("NotShowIn");
-    const QStringList onlyShowList = grp.readXdgListEntry("OnlyShowIn");
-    const bool enabled = !(notShowList.contains(QLatin1String("KDE")) || (!onlyShowList.isEmpty() && !onlyShowList.contains(QLatin1String("KDE"))));
-
-    if (!enabled) {
-        return {};
-    }
-
-    const auto lstEntry = grp.readXdgListEntry("OnlyShowIn");
-    const bool onlyInPlasma = lstEntry.contains(QLatin1String("KDE"));
-    const QString iconName = config.readIcon();
-
-    const QString tryCommand = grp.readEntry("TryExec");
-
-    // Try to filter out entries that point to nonexistant programs
-    // If TryExec is either found in $PATH or is an absolute file path that exists
-    // This doesn't detect uninstalled Flatpaks for example though
-    if (!tryCommand.isEmpty() && QStandardPaths::findExecutable(tryCommand).isEmpty() && !QFile::exists(tryCommand)) {
-        return {};
-    }
-
-    return std::optional<AutostartEntry>({name,
-                                          AutostartModel::AutostartEntrySource::XdgAutoStart, // .config/autostart load desktop at startup
-                                          enabled,
-                                          fileName,
-                                          onlyInPlasma,
-                                          iconName});
-}
-
-AutostartModel::AutostartModel(QObject *parent)
-    : QAbstractListModel(parent)
-{
-}
-
-QString AutostartModel::XdgAutoStartPath() const
-{
-    return QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + QLatin1String("/autostart/");
-}
-
-void AutostartModel::load()
-{
-    beginResetModel();
-
-    m_entries.clear();
-
-    QDir autostartdir(XdgAutoStartPath());
-    if (!autostartdir.exists()) {
-        autostartdir.mkpath(XdgAutoStartPath());
-    }
-
-    autostartdir.setFilter(QDir::Files | QDir::NoDotAndDotDot);
-
-    const auto filesInfo = autostartdir.entryInfoList();
-    for (const QFileInfo &fi : filesInfo) {
-        if (!KDesktopFile::isDesktopFile(fi.fileName())) {
-            continue;
-        }
-
-        const std::optional<AutostartEntry> entry = loadDesktopEntry(fi.absoluteFilePath());
-
-        if (!entry) {
-            continue;
-        }
-
-        m_entries.push_back(entry.value());
-    }
-
-    loadScriptsFromDir(QStringLiteral("/autostart-scripts/"), AutostartModel::AutostartEntrySource::XdgScripts);
-    // Treat them as XdgScripts so they appear together in the UI
-    loadScriptsFromDir(QStringLiteral("/plasma-workspace/env/"), AutostartModel::AutostartEntrySource::XdgScripts);
-
-    loadScriptsFromDir(QStringLiteral("/plasma-workspace/shutdown/"), AutostartModel::AutostartEntrySource::PlasmaShutdown);
-
-    endResetModel();
-}
-
-void AutostartModel::loadScriptsFromDir(const QString &subDir, AutostartModel::AutostartEntrySource kind)
-{
-    const QString path = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + subDir;
-    QDir dir(path);
-    if (!dir.exists()) {
-        dir.mkpath(path);
-    }
-
-    dir.setFilter(QDir::Files | QDir::NoDotAndDotDot);
-
-    const auto autostartDirFilesInfo = dir.entryInfoList();
-    for (const QFileInfo &fi : autostartDirFilesInfo) {
-        QString fileName = fi.absoluteFilePath();
-        const bool isSymlink = fi.isSymLink();
-        if (isSymlink) {
-            fileName = fi.symLinkTarget();
-        }
-
-        m_entries.push_back({fileName, kind, true, fi.absoluteFilePath(), false, QStringLiteral("dialog-scripts")});
-    }
-}
-
-int AutostartModel::rowCount(const QModelIndex &parent) const
-{
-    if (parent.isValid()) {
-        return 0;
-    }
-
-    return m_entries.count();
-}
-
-bool AutostartModel::reloadEntry(const QModelIndex &index, const QString &fileName)
-{
-    if (!checkIndex(index)) {
-        return false;
-    }
-
-    const std::optional<AutostartEntry> newEntry = loadDesktopEntry(fileName);
-
-    if (!newEntry) {
-        return false;
-    }
-
-    m_entries.replace(index.row(), newEntry.value());
-    Q_EMIT dataChanged(index, index);
-    return true;
-}
-
-QVariant AutostartModel::data(const QModelIndex &index, int role) const
-{
-    if (!checkIndex(index)) {
-        return QVariant();
-    }
-
-    const auto &entry = m_entries.at(index.row());
-
-    switch (role) {
-    case Qt::DisplayRole:
-        return entry.name;
-    case Enabled:
-        return entry.enabled;
-    case Source:
-        return entry.source;
-    case FileName:
-        return entry.fileName;
-    case OnlyInPlasma:
-        return entry.onlyInPlasma;
-    case IconName:
-        return entry.iconName;
-    }
-
-    return QVariant();
-}
-
-void AutostartModel::addApplication(const KService::Ptr &service)
-{
-    QString desktopPath;
-    // It is important to ensure that we make an exact copy of an existing
-    // desktop file (if selected) to enable users to override global autostarts.
-    // Also see
-    // https://bugs.launchpad.net/ubuntu/+source/kde-workspace/+bug/923360
-    if (service->desktopEntryName().isEmpty() || service->entryPath().isEmpty()) {
-        // create a new desktop file in s_desktopPath
-        desktopPath = XdgAutoStartPath() + service->name() + QStringLiteral(".desktop");
-
-        KDesktopFile desktopFile(desktopPath);
-        KConfigGroup kcg = desktopFile.desktopGroup();
-        kcg.writeEntry("Name", service->name());
-        kcg.writeEntry("Exec", service->exec());
-        kcg.writeEntry("Icon", service->icon());
-        kcg.writeEntry("Path", "");
-        kcg.writeEntry("Terminal", service->terminal() ? "True" : "False");
-        kcg.writeEntry("Type", "Application");
-        desktopFile.sync();
-
-    } else {
-        desktopPath = XdgAutoStartPath() + service->desktopEntryName() + QStringLiteral(".desktop");
-
-        QFile::remove(desktopPath);
-
-        // copy original desktop file to new path
-        KDesktopFile desktopFile(service->entryPath());
-        auto newDeskTopFile = desktopFile.copyTo(desktopPath);
-        newDeskTopFile->sync();
-    }
-
-    const auto entry = AutostartEntry{service->name(),
-                                      AutostartModel::AutostartEntrySource::XdgAutoStart, // .config/autostart load desktop at startup
-                                      true,
-                                      desktopPath,
-                                      false,
-                                      service->icon()};
-
-    int lastApplication = -1;
-    for (const AutostartEntry &e : qAsConst(m_entries)) {
-        if (e.source == AutostartModel::AutostartEntrySource::XdgScripts) {
-            break;
-        }
-        ++lastApplication;
-    }
-
-    // push before the script items
-    const int index = lastApplication + 1;
-
-    beginInsertRows(QModelIndex(), index, index);
-
-    m_entries.insert(index, entry);
-
-    endInsertRows();
-}
-
-void AutostartModel::showApplicationDialog(QQuickItem *context)
-{
-    KOpenWithDialog *owdlg = new KOpenWithDialog();
-    owdlg->setAttribute(Qt::WA_DeleteOnClose);
-
-    if (context && context->window()) {
-        if (QWindow *actualWindow = QQuickRenderControl::renderWindowFor(context->window())) {
-            owdlg->winId(); // so it creates windowHandle
-            owdlg->windowHandle()->setTransientParent(actualWindow);
-            owdlg->setModal(true);
-        }
-    }
-
-    connect(owdlg, &QDialog::finished, this, [this, owdlg](int result) {
-        if (result != QDialog::Accepted) {
-            return;
-        }
-
-        const KService::Ptr service = owdlg->service();
-
-        Q_ASSERT(service);
-        if (!service) {
-            return; // Don't crash if KOpenWith wasn't able to create service.
-        }
-
-        addApplication(service);
-    });
-    owdlg->open();
-}
-
-void AutostartModel::addScript(const QUrl &url, AutostartModel::AutostartEntrySource kind)
-{
-    const QFileInfo file(url.toLocalFile());
-
-    if (!file.isAbsolute()) {
-        Q_EMIT error(i18n("\"%1\" is not an absolute url.", url.toLocalFile()));
-        return;
-    } else if (!file.exists()) {
-        Q_EMIT error(i18n("\"%1\" does not exist.", url.toLocalFile()));
-        return;
-    } else if (!file.isFile()) {
-        Q_EMIT error(i18n("\"%1\" is not a file.", url.toLocalFile()));
-        return;
-    } else if (!file.isReadable()) {
-        Q_EMIT error(i18n("\"%1\" is not readable.", url.toLocalFile()));
-        return;
-    }
-
-    const QString fileName = url.fileName();
-    int index = 0;
-    QString folder;
-
-    if (kind == AutostartModel::AutostartEntrySource::XdgScripts) {
-        int lastLoginScript = -1;
-        for (const AutostartEntry &e : qAsConst(m_entries)) {
-            if (e.source == AutostartModel::AutostartEntrySource::PlasmaShutdown) {
-                break;
-            }
-            ++lastLoginScript;
-        }
-
-        index = lastLoginScript + 1;
-        folder = QStringLiteral("/autostart-scripts/");
-    } else if (kind == AutostartModel::AutostartEntrySource::PlasmaShutdown) {
-        index = m_entries.size();
-        folder = QStringLiteral("/plasma-workspace/shutdown/");
-    } else {
-        Q_ASSERT(0);
-    }
-
-    QUrl destinationScript = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + folder + fileName);
-    KIO::CopyJob *job = KIO::link(url, destinationScript, KIO::HideProgressInfo);
-    job->setAutoRename(true);
-    job->setProperty("finalUrl", destinationScript);
-
-    connect(job, &KIO::CopyJob::renamed, this, [](KIO::Job *job, const QUrl &from, const QUrl &to) {
-        Q_UNUSED(from)
-        // in case the destination filename had to be renamed
-        job->setProperty("finalUrl", to);
-    });
-
-    connect(job, &KJob::finished, this, [this, index, url, kind](KJob *theJob) {
-        if (theJob->error()) {
-            qWarning() << "Could add script entry" << theJob->errorString();
-            return;
-        }
-
-        beginInsertRows(QModelIndex(), index, index);
-
-        const QUrl dest = theJob->property("finalUrl").toUrl();
-
-        AutostartEntry entry = AutostartEntry{dest.fileName(), kind, true, dest.path(), false, QStringLiteral("dialog-scripts")};
-
-        m_entries.insert(index, entry);
-
-        endInsertRows();
-    });
-
-    job->start();
-}
-
-void AutostartModel::removeEntry(int row)
-{
-    const auto entry = m_entries.at(row);
-
-    KIO::DeleteJob *job = KIO::del(QUrl::fromLocalFile(entry.fileName), KIO::HideProgressInfo);
-
-    connect(job, &KJob::finished, this, [this, row, entry](KJob *theJob) {
-        if (theJob->error()) {
-            qWarning() << "Could not remove entry" << theJob->errorString();
-            return;
-        }
-
-        beginRemoveRows(QModelIndex(), row, row);
-        m_entries.remove(row);
-
-        endRemoveRows();
-    });
-
-    job->start();
-}
-
-QHash<int, QByteArray> AutostartModel::roleNames() const
-{
-    QHash<int, QByteArray> roleNames = QAbstractListModel::roleNames();
-
-    roleNames.insert(Name, QByteArrayLiteral("name"));
-    roleNames.insert(Enabled, QByteArrayLiteral("enabled"));
-    roleNames.insert(Source, QByteArrayLiteral("source"));
-    roleNames.insert(FileName, QByteArrayLiteral("fileName"));
-    roleNames.insert(OnlyInPlasma, QByteArrayLiteral("onlyInPlasma"));
-    roleNames.insert(IconName, QByteArrayLiteral("iconName"));
-
-    return roleNames;
-}
-
-void AutostartModel::editApplication(int row, QQuickItem *context)
-{
-    const QModelIndex idx = index(row, 0);
-
-    const QString fileName = data(idx, AutostartModel::Roles::FileName).toString();
-    KFileItem kfi(QUrl::fromLocalFile(fileName));
-    kfi.setDelayedMimeTypes(true);
-
-    KPropertiesDialog *dlg = new KPropertiesDialog(kfi, nullptr);
-    dlg->setAttribute(Qt::WA_DeleteOnClose);
-
-    if (context && context->window()) {
-        if (QWindow *actualWindow = QQuickRenderControl::renderWindowFor(context->window())) {
-            dlg->winId(); // so it creates windowHandle
-            dlg->windowHandle()->setTransientParent(actualWindow);
-            dlg->setModal(true);
-        }
-    }
-
-    connect(dlg, &QDialog::finished, this, [this, idx, dlg](int result) {
-        if (result == QDialog::Accepted) {
-            reloadEntry(idx, dlg->item().localPath());
-        }
-    });
-    dlg->open();
-}
diff --git a/kcms/autostart/autostartmodel.h b/kcms/autostart/autostartmodel.h
deleted file mode 100644
index 201725d5f..000000000
--- a/kcms/autostart/autostartmodel.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2020 by Méven Car <meven.car at enioka.com>                *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA          *
- ***************************************************************************/
-#ifndef AUTOSTARTMODEL_H
-#define AUTOSTARTMODEL_H
-
-#include <QAbstractListModel>
-
-#include <KService>
-
-struct AutostartEntry;
-class QQuickItem;
-
-class AutostartModel : public QAbstractListModel
-{
-    Q_OBJECT
-
-public:
-    explicit AutostartModel(QObject *parent = nullptr);
-
-    enum Roles {
-        Name = Qt::DisplayRole,
-        IconName = Qt::DecorationRole,
-        Enabled = Qt::UserRole + 1,
-        Source,
-        FileName,
-        OnlyInPlasma,
-    };
-
-    enum AutostartEntrySource {
-        XdgAutoStart = 0,
-        XdgScripts = 1,
-        PlasmaShutdown = 2,
-        PlasmaStart = 3,
-    };
-    Q_ENUM(AutostartEntrySource)
-
-    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
-    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
-    QHash<int, QByteArray> roleNames() const override;
-
-    bool reloadEntry(const QModelIndex &index, const QString &fileName);
-
-    Q_INVOKABLE void removeEntry(int row);
-    Q_INVOKABLE void editApplication(int row, QQuickItem *context);
-    Q_INVOKABLE void addScript(const QUrl &url, AutostartEntrySource kind);
-    Q_INVOKABLE void showApplicationDialog(QQuickItem *context);
-
-    void load();
-
-Q_SIGNALS:
-    void error(const QString &message);
-
-private:
-    void addApplication(const KService::Ptr &service);
-    void loadScriptsFromDir(const QString &subDir, AutostartEntrySource kind);
-    QString XdgAutoStartPath() const;
-
-    QVector<AutostartEntry> m_entries;
-};
-
-struct AutostartEntry {
-    QString name; // Human readable name or script file path. In case of symlinks the target file path
-    AutostartModel::AutostartEntrySource source;
-    bool enabled;
-    QString fileName; // the file backing the entry
-    bool onlyInPlasma;
-    QString iconName;
-};
-Q_DECLARE_TYPEINFO(AutostartEntry, Q_MOVABLE_TYPE);
-
-#endif // AUTOSTARTMODEL_H
diff --git a/kcms/autostart/package/contents/ui/main.qml b/kcms/autostart/package/contents/ui/main.qml
deleted file mode 100644
index 644c417cc..000000000
--- a/kcms/autostart/package/contents/ui/main.qml
+++ /dev/null
@@ -1,206 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2020 by Nicolas Fella <nicolas.fella at gmx.de             *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA          *
- ***************************************************************************/
-
-import QtQuick 2.10
-import QtQuick.Controls 2.10
-import QtQuick.Layouts 1.11
-import org.kde.kirigami 2.13 as Kirigami
-import QtQuick.Dialogs 1.3
-import org.kde.kcm 1.2 as KCM
-import org.kde.plasma.kcm.autostart 1.0
-
-KCM.ScrollViewKCM {
-
-    id: root
-
-    implicitHeight: Kirigami.Units.gridUnit * 28
-    implicitWidth: Kirigami.Units.gridUnit * 28
-
-    header: Kirigami.InlineMessage {
-        id: errorMessage
-        type: Kirigami.MessageType.Error
-        showCloseButton: true
-
-        Connections {
-            target: kcm.model
-            function onError(message) {
-                errorMessage.visible = true
-                errorMessage.text = message
-            }
-        }
-    }
-
-    view: ListView {
-        clip: true
-        model: kcm.model
-
-        delegate: Kirigami.SwipeListItem {
-
-            Item {
-                Kirigami.Icon {
-                    id: appIcon
-                    source: model.iconName
-                    width: Kirigami.Units.iconSizes.medium
-                    height: Kirigami.Units.iconSizes.medium
-                }
-
-                Label {
-                    height: appIcon.height
-                    text: model.name
-                    elide: Text.ElideRight
-                    anchors.left: appIcon.right
-                    anchors.leftMargin: Kirigami.Units.largeSpacing
-                    anchors.right: parent.right
-                }
-            }
-
-            actions: [
-                Kirigami.Action {
-                    text: i18n("Properties")
-                    icon.name: "document-properties"
-                    onTriggered: kcm.model.editApplication(model.index, root)
-                    visible: model.source === AutostartModel.XdgAutoStart
-                },
-                Kirigami.Action {
-                    text: i18n("Remove")
-                    icon.name: "list-remove"
-                    onTriggered: kcm.model.removeEntry(model.index)
-                }
-            ]
-        }
-
-        section.property: "source"
-        section.delegate: Kirigami.ListSectionHeader {
-            text: {
-                if (section == AutostartModel.XdgAutoStart) {
-                    return i18n("Applications")
-                }
-                if (section == AutostartModel.XdgScripts || section == AutostartModel.PlasmaStart) {
-                    return i18n("Login Scripts")
-                }
-                if (section == AutostartModel.PlasmaShutdown) {
-                    return i18n("Logout Scripts")
-                }
-            }
-        }
-
-        Kirigami.PlaceholderMessage {
-            anchors.centerIn: parent
-            width: parent.width - (Kirigami.Units.largeSpacing * 4)
-            visible: parent.count === 0
-            text: i18n("No user-specified autostart items")
-            explanation: xi18nc("@info", "Click the <interface>Add...</interface> button below to add some")
-        }
-    }
-
-    footer: Row {
-        spacing: Kirigami.Units.largeSpacing
-
-        Loader {
-            id: loginFileDialogLoader
-
-            active: false
-
-            sourceComponent: FileDialog {
-                id: loginFileDialog
-                title: i18n("Choose Login Script")
-                folder: shortcuts.home
-                selectMultiple: false
-                onAccepted: {
-                    kcm.model.addScript(loginFileDialog.fileUrl, AutostartModel.XdgScripts)
-                    loginFileDialogLoader.active = false
-                }
-
-                onRejected: loginFileDialogLoader.active = false
-
-                Component.onCompleted: open()
-            }
-        }
-
-        Loader {
-            id: logoutFileDialogLoader
-
-            active: false
-
-            sourceComponent: FileDialog {
-                id: logoutFileDialog
-                title: i18n("Choose Logout Script")
-                folder: shortcuts.home
-                selectMultiple: false
-                onAccepted: {
-                    kcm.model.addScript(logoutFileDialog.fileUrl, AutostartModel.PlasmaShutdown)
-                    logoutFileDialogLoader.active = false
-                }
-
-                onRejected: logoutFileDialogLoader.active = false
-
-                Component.onCompleted: open()
-            }
-        }
-
-        Button {
-            id: menuButton
-
-            icon.name: "list-add"
-            text: i18n("Add...")
-
-            checkable: true
-            checked: menu.opened
-
-            onPressed: {
-                // Appear above the button, not below it, since the button is at
-                // the bottom of the window and QQC2 items can't leave the window
-
-                // HACK: since we want to position the menu above the button,
-                // we need to know the menu's height, but it only has a height
-                // after the first time it's been shown, so until then, we need
-                // to provide an artificially-synthesized-and-hopefully-good-enough
-                // height value
-                var menuHeight = menu.height && menu.height > 0 ? menu.height : Kirigami.Units.gridUnit * 3
-                menu.popup(menuButton, 0, -menuHeight)
-            }
-        }
-
-        Menu {
-            id: menu
-
-            modal: true
-            dim: false
-
-            MenuItem {
-                text: i18n("Add Application...")
-                icon.name: "list-add"
-
-                onClicked: kcm.model.showApplicationDialog(root)
-            }
-            MenuItem {
-                text: i18n("Add Login Script...")
-                icon.name: "list-add"
-
-                onClicked: loginFileDialogLoader.active = true
-            }
-            MenuItem {
-                text: i18n("Add Logout Script...")
-                icon.name: "list-add"
-
-                onClicked: logoutFileDialogLoader.active = true
-            }
-        }
-    }
-}
diff --git a/kcms/autostart/package/metadata.desktop b/kcms/autostart/package/metadata.desktop
deleted file mode 100644
index 6d729306a..000000000
--- a/kcms/autostart/package/metadata.desktop
+++ /dev/null
@@ -1,196 +0,0 @@
-[Desktop Entry]
-Name=Autostart
-Name[af]=Outomatiese begin
-Name[ar]=البدء الآليّ
-Name[ast]=Aniciu automáticu
-Name[az]=Avtomatik başlama
-Name[be]=Аўтаматычны запуск
-Name[be at latin]=Aŭtamatyčnaje ŭklučeńnie
-Name[bg]=Автоматично стартиране
-Name[bn]=অটো-স্টার্ট
-Name[bn_IN]=স্বয়ং-আরম্ভ
-Name[br]=Emloc'h
-Name[bs]=Samopokretanje
-Name[ca]=Inici automàtic
-Name[ca at valencia]=Inici automàtic
-Name[cs]=Automatické spuštění
-Name[csb]=Aùtomatné zrëszanié
-Name[cy]=Hunan-gychwyn
-Name[da]=Autostart
-Name[de]=Autostart
-Name[el]=Αυτόματη εκκίνηση
-Name[en_GB]=Autostart
-Name[eo]=Aŭtomata lanĉo
-Name[es]=Autoarranque
-Name[et]=Autostart
-Name[eu]=Hasiera automatikoa
-Name[fa]=آغاز خودکار
-Name[fi]=Automaattikäynnistys
-Name[fr]=Démarrage automatique
-Name[fy]=Auto-úteinsette
-Name[ga]=Tosú uathoibríoch
-Name[gl]=Inicio automático
-Name[gu]=આપમેળેશરૂ
-Name[he]=הפעלה אוטומטית
-Name[hi]=स्वतःप्रारंभ
-Name[hne]=खुद से चालू
-Name[hr]=Automatsko pokretanje
-Name[hsb]=Awtostart
-Name[hu]=Automatikus indítás
-Name[ia]=Auto starta
-Name[id]=Automulai
-Name[is]=Sjálfræsing
-Name[it]=Avvio automatico
-Name[ja]=自動起動
-Name[ka]=ავტოგაშვება
-Name[kk]=Автобастау
-Name[km]=ចាប់ផ្ដើម​ស្វ័យប្រវត្តិ
-Name[kn]=ಸ್ವಯಮಾರಂಭ
-Name[ko]=자동 시작
-Name[ku]=Bixweber Bide Destpêkirin
-Name[lt]=Automatinis paleidimas
-Name[lv]=Autopalaišana
-Name[mai]=स्वतः चालू
-Name[mk]=Автостарт
-Name[ml]=ഓട്ടോസ്റ്റാര്‍ട്ട്
-Name[mr]=स्वप्रारंभ
-Name[ms]=Automula
-Name[nb]=Autostart
-Name[nds]=Autostart
-Name[nl]=Autostart
-Name[nn]=Autostart
-Name[or]=ସ୍ୱୟଂଚାଳନ
-Name[pa]=ਆਟੋ-ਸਟਾਰਟ
-Name[pl]=Samo-uruchamiane
-Name[pt]=Arranque
-Name[pt_BR]=Iniciar automaticamente
-Name[ro]=Pornire automată
-Name[ru]=Автозапуск
-Name[si]=ක්‍ෂණික ඇරඹුම
-Name[sk]=Automatické spustenie
-Name[sl]=Samodejni zagon
-Name[sr]=Самопокретање
-Name[sr at ijekavian]=Самопокретање
-Name[sr at ijekavianlatin]=Samopokretanje
-Name[sr at latin]=Samopokretanje
-Name[sv]=Automatisk start
-Name[ta]=சுயதுவக்கம்
-Name[te]=స్వయంచాలకప్రారంభం
-Name[tg]=Оғози худкор
-Name[th]=เริ่มอัตโนมัติ
-Name[tr]=Otomatik Başlat
-Name[ug]=ئۆزلۈكىدىن قوزغات
-Name[uk]=Автозапуск
-Name[uz]=Avto-boshlash
-Name[uz at cyrillic]=Авто-бошлаш
-Name[vi]=Khởi động tự động
-Name[wa]=Enondaedje tot seu
-Name[xh]=Isiqalo esizenzekelayo
-Name[x-test]=xxAutostartxx
-Name[zh_CN]=自动启动
-Name[zh_TW]=自動啟動
-Comment=Automatically Started Applications
-Comment[ar]=التّطبيقات التي تبدأ آليًّا
-Comment[az]=Avtomatik işə düşən tətbiqlər
-Comment[bs]=Aplikacije pokrenute automatski
-Comment[ca]=Aplicacions iniciades automàticament
-Comment[ca at valencia]=Aplicacions iniciades automàticament
-Comment[cs]=Automaticky spouštěné aplikace
-Comment[da]=Programmer der startes automatisk
-Comment[de]=Automatisch zu startende Anwendungen
-Comment[el]=Εφαρμογές που ξεκινούν αυτόματα
-Comment[en_GB]=Automatically Started Applications
-Comment[es]=Aplicaciones iniciadas automáticamente
-Comment[et]=Automaatselt käivituvad rakendused
-Comment[eu]=Automatikoki abiarazitako aplikazioak
-Comment[fi]=Automaattisesti käynnistetyt ohjelmat
-Comment[fr]=Applications lancées automatiquement
-Comment[gl]=Aplicacións iniciadas automaticamente
-Comment[he]=פתח אוטומטית יישומים
-Comment[hu]=Automatikusan indított alkalmazások
-Comment[ia]=Applicationes initiate automaticamente
-Comment[id]=Secara Otomatis Menjalankan Aplikasi
-Comment[is]=Sjálfkrafa ræst forrit
-Comment[it]=Applicazioni avviate automaticamente
-Comment[ja]=自動的に起動されるアプリケーション
-Comment[ko]=자동으로 시작되는 프로그램
-Comment[lt]=Automatiškai paleidžiamos programos
-Comment[ml]=താനേ തുടങ്ങിയ പ്രയോഗങ്ങൾ
-Comment[mr]=स्वप्रारंभअनुप्रयोग
-Comment[nb]=Programmer som startes automatisk
-Comment[nds]=Automaatsch opropen Programmen
-Comment[nl]=Automatisch gestarte toepassingen
-Comment[nn]=Program som vert starta automatisk
-Comment[pa]=ਆਟੋਮੈਟਿਕ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ
-Comment[pl]=Samoczynnie uruchamiane programy
-Comment[pt]=Aplicações Iniciadas Automaticamente
-Comment[pt_BR]=Aplicativos iniciados automaticamente
-Comment[ro]=Aplicații pornite automat
-Comment[ru]=Автоматический запуск приложений
-Comment[sk]=Automaticky spustené aplikácie
-Comment[sl]=Samodejno zagnani programi
-Comment[sr]=Програми који се аутоматски покрећу
-Comment[sr at ijekavian]=Програми који се аутоматски покрећу
-Comment[sr at ijekavianlatin]=Programi koji se automatski pokreću
-Comment[sr at latin]=Programi koji se automatski pokreću
-Comment[sv]=Program som startas automatiskt
-Comment[ta]=தானாக தொடக்கப்படும் செயலிகள்
-Comment[tr]=Otomatik Başlatılan Uygulamalar
-Comment[uk]=Програми, що запускаються автоматично
-Comment[vi]=Các ứng dụng được khởi động tự động
-Comment[x-test]=xxAutomatically Started Applicationsxx
-Comment[zh_CN]=自动启动的应用程序
-Comment[zh_TW]=自動啟動應用程式
-Encoding=UTF-8
-Type=Service
-Icon=system-run
-X-KDE-Library=kcm_autostart
-X-KDE-ServiceTypes=KCModule
-X-KDE-FormFactors=desktop
-X-Plasma-MainScript=ui/main.qml
-X-KDE-System-Settings-Parent-Category=session
-X-KDE-ParentApp=kcontrol
-X-KDE-Keywords=Autostart Manager,autostart,startup,system startup,plasma start,cron
-X-KDE-Keywords[az]=Autostart Manager,autostart,startup,system startup,plasma start,cronAvtomatik başlama meneceri, avtomatik başlama, sistemin işə salınması Plasmanın başladılması
-X-KDE-Keywords[ca]=Gestor de l'inici automàtic,inici automàtic,inici,inici del sistema,inici del Plasma,cron
-X-KDE-Keywords[ca at valencia]=Gestor de l'inici automàtic,inici automàtic,inici,inici del sistema,inici del plasma,cron
-X-KDE-Keywords[cs]=správce automatického spuštění,automatické spuštění,spuštění systému,spuštění plasma,cron
-X-KDE-Keywords[da]=autostart,opstart,systemstart,plasma start,cron
-X-KDE-Keywords[de]=Autostartverwaltung,Autostart,Startvorgang,Systemstart,Plasma-Start,Cron
-X-KDE-Keywords[el]=διαχειριστής αυτόματης εκκίνησης,αυτόματη εκκίνηση,έναρξη,έναρξη συστήματος,έναρξη plasma,cron
-X-KDE-Keywords[en_GB]=Autostart Manager,autostart,startup,system startup,plasma start,cron
-X-KDE-Keywords[es]=Gestor de inicio automático,inicio automático,inicio,inicio del sistema,inicio de plasma,cron
-X-KDE-Keywords[et]=Autostardi haldur,autostart,käivitamine,süsteemi käivitamine,plasma käivitamine,cron
-X-KDE-Keywords[eu]=Hasiera automatikoaren kudeatzailea,hasiera automatikoa,abioa,sistemaren abioa,plasma abiatu,cron
-X-KDE-Keywords[fi]=automaattikäynnistys,hallinta,käynnistys,järjestelmän käynnistys,Plasman käynnistys,cron
-X-KDE-Keywords[fr]=Gestionnaire de démarrage, démarrage automatique, démarrage, démarrage du système, démarrage de plasma, cron
-X-KDE-Keywords[gl]=Xestor de inicio, inicio automático, inicio, sistema de arranque, inicio de plasma, cron
-X-KDE-Keywords[hu]=Automatikus indítás kezelő,automatikus indítás,indulás,rendszerindulás,plasma indulás,cron
-X-KDE-Keywords[ia]=Gestor de autoinitio,autoinitio,initio,initio de systema.initio de plasma,cron
-X-KDE-Keywords[id]=Pengelola Automulai,automulai,pemulaian,pemulaian sistem,mulai plasma,cron
-X-KDE-Keywords[it]=Gestore avvio automatico,avvio automatico,avvio,avvio del sistema,avvio di plasma,cron
-X-KDE-Keywords[ja]=自動起動マネージャ,自動起動,起動
-X-KDE-Keywords[ko]=Autostart Manager,autostart,startup,system startup,plasma start,cron,자동 시작,자동시작,시작프로그램,시스템 시작,plasma 시작
-X-KDE-Keywords[lt]=Automatinio paleidimo tvarkytuvė,automatinio paleidimo tvakrytuve,automatinis paleidimas,paleistis,sistemos paleidimas,kde paleidimas,plasma paleidimas,cron
-X-KDE-Keywords[nl]=Autostartbeheerder,autostarten,opstarten,opstarten systeem,opstarten plasma,cron
-X-KDE-Keywords[nn]=autostart-handsaming,autostart,oppstart,systemstart,plasma-start,cron
-X-KDE-Keywords[pl]=Menadżer autostartu,autostart,uruchamianie,uruchamianie systemu,plasma,kde start,cron
-X-KDE-Keywords[pt]=Gestor de arranque,arranque,início,arranque do sistema,início do plasma,cron
-X-KDE-Keywords[pt_BR]=Gerenciado de inicialização,inicialização,início,inicialização do sistema,início do plasma,cron
-X-KDE-Keywords[ro]=gestionar pornire automată,pornire,pornire sistem,pornire plasma,cron
-X-KDE-Keywords[ru]=Autostart Manager,autostart,startup,system startup,kde start,cron,диспетчер автоматического запуска,автоматический запуск,автозапуск,загрузка системы,запуск Plasma
-X-KDE-Keywords[sk]=Správca automatického spustenia,autostart,spustenie,spustenie systému,štart kde,cron
-X-KDE-Keywords[sl]=upravljalnik samodejnega zagona,zagon,samodejni zagon,sistemski zagon,zagon plasme,system startup,plasma start,cron
-X-KDE-Keywords[sr]=Autostart Manager,autostart,startup,system startup,plasma start,cron,самопокретање,менаџер самопокретања,покретање система,покретање Плазме
-X-KDE-Keywords[sr at ijekavian]=Autostart Manager,autostart,startup,system startup,plasma start,cron,самопокретање,менаџер самопокретања,покретање система,покретање Плазме
-X-KDE-Keywords[sr at ijekavianlatin]=Autostart Manager,autostart,startup,system startup,plasma start,cron,samopokretanje,menadžer samopokretanja,pokretanje sistema,pokretanje Plasme
-X-KDE-Keywords[sr at latin]=Autostart Manager,autostart,startup,system startup,plasma start,cron,samopokretanje,menadžer samopokretanja,pokretanje sistema,pokretanje Plasme
-X-KDE-Keywords[sv]=Hantering av autostart,autostart,start,systemstart,plasma-start,cron
-X-KDE-Keywords[tr]=Otomatik Başlatma Yöneticisi, otomatik,başlatma,sistem başlangıcı,plasma başlangıcı,görevler,cron
-X-KDE-Keywords[uk]=Autostart Manager,autostart,startup,system startup,plasma start,cron,керування автозапуском,автозапуск,запуск,запуск системи,запуск плазми
-X-KDE-Keywords[vi]=Autostart Manager,autostart,startup,system startup,plasma start,cron,trình quản lí khởi động tự động,khởi động tự động,khởi động,khởi động hệ thống,khởi động plasma
-X-KDE-Keywords[x-test]=xxAutostart Managerxx,xxautostartxx,xxstartupxx,xxsystem startupxx,xxplasma startxx,xxcronxx
-X-KDE-Keywords[zh_CN]=Autostart Manager,autostart,startup,system startup,plasma start,cron,自动启动管理器,自动启动,启动,系统启动,plasma 启动,任务调度
-X-KDE-Keywords[zh_TW]=Autostart Manager,autostart,startup,system startup,plasma start,cron
-X-DocPath=kcontrol/autostart/index.html
-X-KDE-Weight=30


More information about the kde-doc-english mailing list