Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37732905
en ru br
Репозитории ALT

Группа :: Графические оболочки/KDE
Пакет: plasma5-workspace

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: alt-startkde.patch
Скачать


--- a/startkde/plasma-session/startup.cpp
+++ b/startkde/plasma-session/startup.cpp
@@ -203,7 +203,7 @@ Startup::Startup(QObject *parent)
     const AutoStart autostart;
 
     // Keep for KF5; remove in KF6 (KInit will be gone then)
-    QProcess::execute(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/start_kdeinit_wrapper"), QStringList());
+    QProcess::execute(QStringLiteral("/usr/libexec/kf5/start_kdeinit_wrapper"), QStringList());
 
     KJob *windowManagerJob = nullptr;
     if (qEnvironmentVariable("XDG_SESSION_TYPE") != QLatin1String("wayland")) {
--- a/startkde/startplasma-wayland.cpp
+++ b/startkde/startplasma-wayland.cpp
@@ -14,6 +14,7 @@
 
 int main(int argc, char **argv)
 {
+    QProcess::execute(QStringLiteral("/usr/bin/dbus-restart-kde5"), QStringList());
     QCoreApplication app(argc, argv);
 
     createConfigDirectory();
--- a/startkde/startplasma-x11.cpp
+++ b/startkde/startplasma-x11.cpp
@@ -23,6 +23,7 @@ int main(int argc, char **argv)
     signal(SIGHUP, sighupHandler);
     qputenv("QT_NO_XDG_DESKTOP_PORTAL", QByteArrayLiteral("1"));
 
+    QProcess::execute(QStringLiteral("/usr/bin/dbus-restart-kde5"), QStringList());
     QCoreApplication app(argc, argv);
 
     // Check if a Plasma session already is running and whether it's possible to connect to X
--- a/startkde/startplasma.cpp
+++ b/startkde/startplasma.cpp
@@ -37,6 +37,52 @@
 #include "../kcms/lookandfeel/lookandfeelmanager.h"
 #include "debug.h"
 
+void __insert_to_environment_variable(const QByteArray &var_name, const QString& add_value, const QStringList& after_names = QStringList(), bool insert_after=true) {
+    if(var_name.isEmpty() || add_value.isEmpty() )
+	return;
+    QString initial_var(qEnvironmentVariable(var_name));
+    QStringList initial_list(initial_var.split(QStringLiteral(":"), Qt::SkipEmptyParts, Qt::CaseSensitive));
+    QStringList result_list;
+    bool is_addon_inserted = false;
+    for(QString part: initial_list) {
+	while( part.endsWith(QStringLiteral("/"), Qt::CaseSensitive) ) {
+	    part.chop(1);
+	}
+	if( part == add_value ) {
+	    return;
+	}
+	if( is_addon_inserted ) {
+	    result_list << part;
+	} else {
+	    for(const QString &aftername: after_names) {
+		if( part ==  aftername ) {
+		    if( insert_after ) {
+			result_list << part << add_value;
+		    } else {
+			result_list << add_value << part;
+		    }
+		    is_addon_inserted = true;
+		    break;
+		}
+	    }
+	    if( !is_addon_inserted ) {
+		result_list << part;
+	    }
+	}
+    }
+    if( !is_addon_inserted ) {
+	if( insert_after ) {
+	    result_list.append(add_value);
+	} else {
+	    result_list.prepend(add_value);
+	}
+	is_addon_inserted = true;
+    }
+    if( is_addon_inserted ) {
+	qputenv(var_name, result_list.join(QStringLiteral(":")).toLatin1());
+    }
+}
+
 QTextStream out(stderr);
 
 void sigtermHandler(int signalNumber)
@@ -50,7 +96,7 @@ void sigtermHandler(int signalNumber)
 void messageBox(const QString &text)
 {
     out << text;
-    runSync(QStringLiteral("xmessage"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text});
+    runSync(QStringLiteral("xmessage"), {QStringLiteral("-center"), QStringLiteral("-geometry"), QStringLiteral("500x100"), text});
 }
 
 QStringList allServices(const QLatin1String &prefix)
@@ -131,7 +177,7 @@ void sourceFiles(const QStringList &file
     if (filteredFiles.isEmpty())
         return;
 
-    filteredFiles.prepend(QStringLiteral(CMAKE_INSTALL_FULL_LIBEXECDIR "/plasma-sourceenv.sh"));
+    filteredFiles.prepend(QStringLiteral("/usr/libexec/kf5/plasma-sourceenv.sh"));
 
     QProcess p;
     p.start(QStringLiteral("/bin/sh"), filteredFiles);
@@ -156,6 +202,30 @@ void sourceFiles(const QStringList &file
 
 void createConfigDirectory()
 {
+    __insert_to_environment_variable("PATH", QStringLiteral("/usr/lib/kf5/bin"),  QStringList() << QStringLiteral("/usr/local/bin"), true);
+    __insert_to_environment_variable("PATH", QStringLiteral("/usr/lib/kf5/bin"),  QStringList() << QStringLiteral("/usr/bin") << QStringLiteral("/bin"), false);
+
+    __insert_to_environment_variable("LIBEXEC_PATH", QStringLiteral("/usr/libexec"));
+    __insert_to_environment_variable("LIBEXEC_PATH", QStringLiteral("/usr/libexec/kf5"),  QStringList() << QStringLiteral("/usr/libexec"), false);
+
+    if (QFileInfo(QStringLiteral("/usr/lib/openssh/kf5-ksshaskpass")).isExecutable()) {
+        qputenv("SSH_ASKPASS", "/usr/lib/openssh/kf5-ksshaskpass");
+    }
+
+    __insert_to_environment_variable("XDG_DATA_DIRS", QStringLiteral("/usr/share"));
+    __insert_to_environment_variable("XDG_DATA_DIRS", QStringLiteral("/usr/share/kf5"),  QStringList() << QStringLiteral("/usr/share"), false);
+
+    __insert_to_environment_variable("XDG_CONFIG_DIRS", QStringLiteral("/etc/xdg"));
+    __insert_to_environment_variable("XDG_CONFIG_DIRS", QStringLiteral("/etc/kf5/xdg"),  QStringList() << QStringLiteral("/etc/xdg"), false);
+
+    QString local_data_path(QDir::homePath().append(QStringLiteral("/.local/share")));
+    if( QDir(local_data_path).exists() ) {
+        QString local_data_path_kf5(local_data_path.append(QStringLiteral("/kf5")));
+        if( !QFileInfo(local_data_path_kf5).exists() ) {
+            QFile::link(QStringLiteral("./"), local_data_path_kf5);
+        }
+    }
+
     const QString configDir = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
     if (!QDir().mkpath(configDir))
         out << "Could not create config directory XDG_CONFIG_HOME: " << configDir << '\n';
@@ -197,7 +267,7 @@ void setupCursor(bool wayland)
     const auto kcminputrc_mouse_cursortheme = inputCfg.readEntry("cursorTheme", QStringLiteral("breeze_cursors"));
     if (!kcminputrc_mouse_cursortheme.isEmpty()) {
 #ifdef XCURSOR_PATH
-        QByteArray path(XCURSOR_PATH);
+        QByteArray path("/usr/share/kf5/icons:$XCURSOR_PATH:~/.icons:/usr/share/icons");
         path.replace("$XCURSOR_PATH", qgetenv("XCURSOR_PATH"));
         qputenv("XCURSOR_PATH", path);
 #endif
@@ -690,7 +760,7 @@ bool startPlasmaSession(bool wayland)
             }
         });
 
-        startPlasmaSession->start(QStringLiteral(CMAKE_INSTALL_FULL_BINDIR "/plasma_session"), plasmaSessionOptions);
+        startPlasmaSession->start(QStringLiteral("/usr/lib/kf5/bin/plasma_session"), plasmaSessionOptions);
     } else {
         qCDebug(PLASMA_STARTUP) << "Using systemd boot";
         const QString platform = wayland ? QStringLiteral("wayland") : QStringLiteral("x11");
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin