unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Zheng Junjie <zhengjunjie@iscas.ac.cn>
To: 65785@debbugs.gnu.org
Subject: [bug#65785] [PATCH] gnu: kwin: Unwrap executable name for desktop file search.
Date: Wed,  6 Sep 2023 23:43:53 +0800	[thread overview]
Message-ID: <836a7a424e74184fcd6ab76f77f6c4b6a45c126f.1694015033.git.zhengjunjie@iscas.ac.cn> (raw)

see https://github.com/NixOS/nixpkgs/pull/116549

* gnu/packages/patches/kwin-unwrap-executable-name-for-dot-desktop-search.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/kde-plasma.scm (kwin)[origin]: Use it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/kde-plasma.scm                   |  1 +
 ...ecutable-name-for-dot-desktop-search.patch | 89 +++++++++++++++++++
 3 files changed, 91 insertions(+)
 create mode 100644 gnu/packages/patches/kwin-unwrap-executable-name-for-dot-desktop-search.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 6ccd27cba5..f8af4366ef 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1475,6 +1475,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/kobodeluxe-midicon-segmentation-fault.patch	\
   %D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch	\
   %D%/packages/patches/kodi-set-libcurl-ssl-parameters.patch		\
+  %D%/packages/patches/kwin-unwrap-executable-name-for-dot-desktop-search.patch\
   %D%/packages/patches/kodi-mesa-eglchromium.patch		\
   %D%/packages/patches/laby-make-install.patch			\
   %D%/packages/patches/laby-use-tmpdir-from-runtime.patch	\
diff --git a/gnu/packages/kde-plasma.scm b/gnu/packages/kde-plasma.scm
index 11586a6ce2..331ab28cd1 100644
--- a/gnu/packages/kde-plasma.scm
+++ b/gnu/packages/kde-plasma.scm
@@ -1210,6 +1210,7 @@ (define-public kwin
               (method url-fetch)
               (uri (string-append "mirror://kde/stable/plasma/" version "/"
                                   name "-" version ".tar.xz"))
+              (patches (search-patches "kwin-unwrap-executable-name-for-dot-desktop-search.patch"))
               (sha256
                (base32
                 "0bssp76lzqqlan5pfg6wjf4z9c6pl6p66ri8p82vqqw406x5bzyb"))))
diff --git a/gnu/packages/patches/kwin-unwrap-executable-name-for-dot-desktop-search.patch b/gnu/packages/patches/kwin-unwrap-executable-name-for-dot-desktop-search.patch
new file mode 100644
index 0000000000..8f67553138
--- /dev/null
+++ b/gnu/packages/patches/kwin-unwrap-executable-name-for-dot-desktop-search.patch
@@ -0,0 +1,89 @@
+origin patch from nixos.
+
+see https://github.com/NixOS/nixpkgs/blob/2457551a54ffbd93b7d8f84af8b8fb3aac5cbdd5/pkgs/desktops/plasma-5/kwin/0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch
+
+---
+ src/guix_utils.h     | 41 +++++++++++++++++++++++++++++++++++++++++
+ src/service_utils.h   |  4 +++-
+ src/waylandwindow.cpp |  5 ++++-
+ 3 files changed, 48 insertions(+), 2 deletions(-)
+ create mode 100644 src/guix_utils.h
+
+diff a/src/guix_utils.h b/src/guix_utils.h
+new file mode 100644
+index 0000000..726065d
+--- /dev/null
++++ b/src/guix_utils.h
+@@ -0,0 +1,24 @@
++#ifndef GUIX_UTILS_H
++#define GUIX_UTILS_H
++
++// kwin
++#include <kwinglobals.h>
++
++namespace KWin
++{
++
++static QString unwrapExecutablePath(const QString &in_executablePath)
++{
++    QString executablePath(in_executablePath);
++
++    while (executablePath.endsWith("-real") && executablePath[executablePath.lastIndexOf("/")+1] == QChar('.')) {
++        executablePath.remove(executablePath.length() - 5, 5);
++        executablePath.remove(executablePath.lastIndexOf("/")+1, 1);
++    }
++
++    return executablePath;
++}
++
++}// namespace
++
++#endif // GUIX_UTILS_H
+diff a/src/utils/serviceutils.h b/src/utils/serviceutils.h
+index 8a70c1f..475b15d 100644
+--- a/src/utils/serviceutils.h
++++ b/src/utils/serviceutils.h
+@@ -19,6 +19,7 @@
+ #include <QLoggingCategory>
+ //KF
+ #include <KApplicationTrader>
++#include "guix_utils.h"
+ 
+ namespace KWin
+ {
+@@ -26,8 +27,9 @@ namespace KWin
+ const static QString s_waylandInterfaceName = QStringLiteral("X-KDE-Wayland-Interfaces");
+ const static QString s_dbusRestrictedInterfaceName = QStringLiteral("X-KDE-DBUS-Restricted-Interfaces");
+ 
+-static QStringList fetchProcessServiceField(const QString &executablePath, const QString &fieldName)
++static QStringList fetchProcessServiceField(const QString &in_executablePath, const QString &fieldName)
+ {
++    const QString executablePath = unwrapExecutablePath(in_executablePath);
+     // needed to be able to use the logging category in a header static function
+     static QLoggingCategory KWIN_UTILS ("KWIN_UTILS", QtWarningMsg);
+     const auto servicesFound = KApplicationTrader::query([&executablePath] (const KService::Ptr &service) {
+diff a/src/waylandwindow.cpp b/src/waylandwindow.cpp
+index fd2c0c1..ae8cf96 100644
+--- a/src/waylandwindow.cpp
++++ b/src/waylandwindow.cpp
+@@ -10,6 +10,7 @@
+ #include "screens.h"
+ #include "wayland_server.h"
+ #include "workspace.h"
++#include "guix_utils.h"
+ 
+ #include <KWaylandServer/display.h>
+ #include <KWaylandServer/clientbuffer.h>
+@@ -173,7 +174,9 @@ void WaylandWindow::updateIcon()
+ 
+ void WaylandWindow::updateResourceName()
+ {
+-    const QFileInfo fileInfo(surface()->client()->executablePath());
++    const QString in_path = surface()->client()->executablePath();
++    const QString path = unwrapExecutablePath(in_path);
++    const QFileInfo fileInfo(path);
+     if (fileInfo.exists()) {
+         const QByteArray executableFileName = fileInfo.fileName().toUtf8();
+         setResourceClass(executableFileName, executableFileName);
+-- 
+2.32.0
\ No newline at end of file

base-commit: 6113e0529d61df7425f64e30a6bf77f7cfdfe5a5
prerequisite-patch-id: 913694f521724b04504a8a442176f68277104422
-- 
2.41.0





             reply	other threads:[~2023-09-06 15:45 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-06 15:43 Zheng Junjie [this message]
2023-09-14 21:31 ` bug#65785: [PATCH] gnu: kwin: Unwrap executable name for desktop file search Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=836a7a424e74184fcd6ab76f77f6c4b6a45c126f.1694015033.git.zhengjunjie@iscas.ac.cn \
    --to=zhengjunjie@iscas.ac.cn \
    --cc=65785@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).