diff --git a/src/main/appBadge.ts b/src/main/appBadge.ts index 46abe1db..602c14ab 100644 --- a/src/main/appBadge.ts +++ b/src/main/appBadge.ts @@ -7,6 +7,7 @@ import { app, NativeImage, nativeImage } from "electron"; import { join } from "path"; import { BADGE_DIR } from "shared/paths"; +import { exec } from "child_process"; const imgCache = new Map(); function loadBadge(index: number) { @@ -25,7 +26,18 @@ export function setBadgeCount(count: number) { switch (process.platform) { case "linux": if (count === -1) count = 0; - app.setBadgeCount(count); + // app.setBadgeCount(count); + + function emitDBusBadge(count: number, visible: boolean) { + const badgeCountCommand = `gdbus emit --session --object-path / --signal com.canonical.Unity.LauncherEntry.Update "application://vesktop.desktop" "{'count': , 'count-visible': <${visible}>}"`; + exec(badgeCountCommand) + } + + if (count === 0) { + emitDBusBadge(count, false); + break; + } + emitDBusBadge(count, true); break; case "darwin": if (count === 0) { diff --git a/src/main/mainWindow.ts b/src/main/mainWindow.ts index 5bbbb619..33f5a282 100644 --- a/src/main/mainWindow.ts +++ b/src/main/mainWindow.ts @@ -445,6 +445,10 @@ function createMainWindow() { }); if (Settings.store.staticTitle) win.on("page-title-updated", e => e.preventDefault()); + else if (Settings.store.appBadge) mainWin.webContents.on('page-title-updated', (_, title) => { + let cleanedTitle = title.replace(/^\(\d+\)\s*/, ''); + mainWin.setTitle(cleanedTitle); + }); initWindowBoundsListeners(win); if (!isDeckGameMode && (Settings.store.tray ?? true) && process.platform !== "darwin") initTray(win);