Files
electron/patches/chromium/fix_linux_tray_id.patch
electron-roller[bot] 595920a308 chore: bump chromium to 144.0.7512.1 (main) (#48768)
* chore: bump chromium in DEPS to 144.0.7507.0

* chore: bump chromium in DEPS to 144.0.7508.0

* chore: update patches

* 7101838: [pathbuilder] Enforce immutable SkPath APIs globally

https://chromium-review.googlesource.com/c/chromium/src/+/7101838

* chore: update filenames.libcxx.gni

* [pathbuilder] Enforce immutable SkPath APIs globally

https://chromium-review.googlesource.com/c/chromium/src/+/7101838

* Reduce service_worker_info.h includes in headers

https://chromium-review.googlesource.com/c/chromium/src/+/7108401

* chore: bump chromium in DEPS to 144.0.7510.0

* chore: update patches

* Use internal popup menus for tabs in actor-controlled states

https://chromium-review.googlesource.com/c/chromium/src/+/7074751

* [api] Delete deprecated fields on v8::Isolate

https://chromium-review.googlesource.com/c/v8/v8/+/7081397
xref: 98d243aea0

* Fixup Reduce service_worker_info.h includes in headers

* Promote deprecation of v8::Context and v8::Object API methods

https://chromium-review.googlesource.com/c/v8/v8/+/7087956

* fixup Promote deprecation of v8::Context and v8::Object API methods

* chore: bump chromium in DEPS to 144.0.7512.1

* chore: update patches

* fixup [pathbuilder] Enforce immutable SkPath APIs global

* chore: update filenames.hunspell.gni

* fix deprecation of v8::Context and v8::Object API methods for nan

https://chromium-review.googlesource.com/c/v8/v8/+/7087956

* [PDF] Implement PdfHelpBubbleHandlerFactory

https://chromium-review.googlesource.com/c/chromium/src/+/7056325

also: [PDF Ink Signatures] Hook up IPH
https://chromium-review.googlesource.com/c/chromium/src/+/7056207

* Remove base/hash/md5.h

https://chromium-review.googlesource.com/c/chromium/src/+/7113738

* fixup for lint

* Remove deprecated interceptor callback types and AccessControl enum

https://chromium-review.googlesource.com/c/v8/v8/+/7112747

* fixup for lint

* fixup [PDF] Implement PdfHelpBubbleHandlerFactory

* use base::SHA1HashString instead of std::hash

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2025-11-07 10:13:45 -05:00

77 lines
3.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Damglador <vse.stopchanskyi@gmail.com>
Date: Mon, 27 Oct 2025 23:35:43 +0100
Subject: fix: allow setting tray id
This is needed to allow setting custom tray id when initializing a tray icon.
With current behaviour all programs get chrome_status_icon_1 as their id in tray.
So tray can't tell apart Electron apps,
which introduces issues like https://bugs.kde.org/show_bug.cgi?id=470840.
This patch can be removed after being upstreamed. See discussion at
https://github.com/electron/electron/pull/48675#issuecomment-3452781711
for more info.
diff --git a/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.cc b/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.cc
index 27b65721dc9f127b15f92821d3f3ea4ce0a2f19c..ff69b5cab40156a30872ee1793f4e72a38d91b03 100644
--- a/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.cc
+++ b/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.cc
@@ -131,8 +131,8 @@ int NextServiceId() {
return ++status_icon_count;
}
-std::string PropertyIdFromId(int service_id) {
- return "chrome_status_icon_" + base::NumberToString(service_id);
+std::string PropertyIdFromId(int service_id, const std::string_view app_name) {
+ return base::StrCat({ app_name, "_status_icon_", base::NumberToString(service_id) });
}
using DbusImage = std::tuple</*width=*/int32_t,
@@ -222,12 +222,13 @@ base::FilePath WriteIconFile(size_t icon_file_id,
} // namespace
-StatusIconLinuxDbus::StatusIconLinuxDbus()
+StatusIconLinuxDbus::StatusIconLinuxDbus(const std::string_view app_name)
: bus_(dbus_thread_linux::GetSharedSessionBus()),
should_write_icon_to_file_(ShouldWriteIconToFile()),
icon_task_runner_(base::ThreadPool::CreateSequencedTaskRunner(
{base::MayBlock(), base::TaskPriority::USER_VISIBLE,
- base::TaskShutdownBehavior::BLOCK_SHUTDOWN})) {
+ base::TaskShutdownBehavior::BLOCK_SHUTDOWN})),
+ app_name_(app_name) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
CheckStatusNotifierWatcherHasOwner();
}
@@ -396,7 +397,7 @@ void StatusIconLinuxDbus::OnHostRegisteredResponse(
properties_->SetProperty<"s">(kInterfaceStatusNotifierItem, kPropertyCategory,
kPropertyValueCategory, false);
properties_->SetProperty<"s">(kInterfaceStatusNotifierItem, kPropertyId,
- PropertyIdFromId(service_id_), false);
+ PropertyIdFromId(service_id_, app_name_), false);
properties_->SetProperty<"s">(kInterfaceStatusNotifierItem,
kPropertyOverlayIconName, "", false);
properties_->SetProperty<"s">(kInterfaceStatusNotifierItem, kPropertyStatus,
diff --git a/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.h b/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.h
index 7b6b005f98e5de8b858a39e733dbf95888df3bc3..bf85004d8f42b30f12662078b24b684ea5c0c924 100644
--- a/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.h
+++ b/chrome/browser/ui/views/status_icons/status_icon_linux_dbus.h
@@ -36,7 +36,7 @@ class StatusIconLinuxDbus : public ui::StatusIconLinux,
public ui::SimpleMenuModel::Delegate,
public base::RefCounted<StatusIconLinuxDbus> {
public:
- StatusIconLinuxDbus();
+ StatusIconLinuxDbus(const std::string_view app_name = "chrome");
StatusIconLinuxDbus(const StatusIconLinuxDbus&) = delete;
StatusIconLinuxDbus& operator=(const StatusIconLinuxDbus&) = delete;
@@ -137,6 +137,8 @@ class StatusIconLinuxDbus : public ui::StatusIconLinux,
size_t icon_file_id_ = 0;
base::FilePath icon_file_;
+ std::string app_name_;
+
base::WeakPtrFactory<StatusIconLinuxDbus> weak_factory_{this};
};