Группа :: Графические оболочки/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");