diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index e5478692c..44ccb0bcf 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Installieren Sie Plugins aus dem Abschnitt \"Verfügbar\".", "installed-no-plugins-label": "Keine Plugins installiert", "installing": "{plugin} wird installiert...", + "notify-updates": "Plugin-Update-Benachrichtigungen", + "notify-updates-description": "Zeige ein Benachrichtigungs-Popup an, wenn neue Plugin-Updates verfügbar sind.", "open-plugin-page": "Plugin-Seite öffnen", "open-plugins-tab": "Plugin-Einstellungen öffnen", "plugin-settings-title": "{plugin} Einstellungen", diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index ee30a5466..8b42ad239 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Install plugins from the \"Available\" section.", "installed-no-plugins-label": "No plugins installed", "installing": "Installing {plugin}...", + "notify-updates": "Plugin update notifications", + "notify-updates-description": "Show a notification popup when new plugin updates are available.", "open-plugin-page": "Open plugin page", "open-plugins-tab": "Open plugins settings", "plugin-settings-title": "{plugin} Settings", diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index eec82c2c1..df2b9c929 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Instale los plugins de la sección \"Disponible\".", "installed-no-plugins-label": "No hay plugins instalados", "installing": "Instalando {plugin}...", + "notify-updates": "Notificaciones de actualización de plugins", + "notify-updates-description": "Mostrar una notificación emergente cuando haya nuevas actualizaciones de plugins disponibles.", "open-plugin-page": "Abrir página del plugin", "open-plugins-tab": "Abrir la configuración de los plugins", "plugin-settings-title": "Ajustes de {plugin}", diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index 1e38e3afb..9a221b082 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Installez les plugins depuis la section \"Disponible\".", "installed-no-plugins-label": "Aucun plugin installé", "installing": "Installation de {plugin}...", + "notify-updates": "Notifications de mise à jour des plugins", + "notify-updates-description": "Afficher une notification contextuelle lorsque de nouvelles mises à jour de plugins sont disponibles.", "open-plugin-page": "Ouvrir la page du plugin", "open-plugins-tab": "Ouvrir les paramètres des plugins", "plugin-settings-title": "Paramètres de {plugin}", diff --git a/Assets/Translations/hu.json b/Assets/Translations/hu.json index feed127e4..d4659d874 100644 --- a/Assets/Translations/hu.json +++ b/Assets/Translations/hu.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Bővítmények telepítése az \"Elérhető\" szakaszban lehetséges.", "installed-no-plugins-label": "Nincs telepített bővítmény", "installing": "{plugin} telepítése...", + "notify-updates": "Bővítményfrissítési értesítések", + "notify-updates-description": "Értesítési előugró ablak megjelenítése, ha új bővítményfrissítések érhetők el.", "open-plugin-page": "Bővítmény oldal megnyitása", "open-plugins-tab": "Bővítmények beállításainak megnyitása", "plugin-settings-title": "{plugin} beállításai", diff --git a/Assets/Translations/it.json b/Assets/Translations/it.json index fcf4f340c..5486e564c 100644 --- a/Assets/Translations/it.json +++ b/Assets/Translations/it.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Installa plugin dalla sezione \"Disponibili\".", "installed-no-plugins-label": "Nessun plugin installato", "installing": "Installazione {plugin}...", + "notify-updates": "Notifiche di aggiornamento dei plugin", + "notify-updates-description": "Mostra un popup di notifica quando sono disponibili nuovi aggiornamenti per i plugin.", "open-plugin-page": "Apri pagina plugin", "open-plugins-tab": "Apri impostazioni plugin", "plugin-settings-title": "Impostazioni {plugin}", diff --git a/Assets/Translations/ja.json b/Assets/Translations/ja.json index 8547edfcb..55d925681 100644 --- a/Assets/Translations/ja.json +++ b/Assets/Translations/ja.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "「利用可能」セクションからプラグインをインストールしてください。", "installed-no-plugins-label": "インストールされているプラグインはありません", "installing": "{plugin} をインストール中...", + "notify-updates": "プラグインの更新通知", + "notify-updates-description": "新しいプラグインのアップデートが利用可能な場合に通知ポップアップを表示します。", "open-plugin-page": "プラグインページを開く", "open-plugins-tab": "プラグイン設定を開く", "plugin-settings-title": "{plugin} の設定", diff --git a/Assets/Translations/ko-KR.json b/Assets/Translations/ko-KR.json index cf89c971c..c296e2c12 100644 --- a/Assets/Translations/ko-KR.json +++ b/Assets/Translations/ko-KR.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "\"사용 가능\" 섹션에서 플러그인을 설치하세요.", "installed-no-plugins-label": "설치된 플러그인 없음", "installing": "{plugin} 설치 중...", + "notify-updates": "플러그인 업데이트 알림", + "notify-updates-description": "새로운 플러그인 업데이트가 있을 때 알림 팝업을 표시합니다.", "open-plugin-page": "플러그인 페이지 열기", "open-plugins-tab": "플러그인 설정 열기", "plugin-settings-title": "{plugin} 설정", diff --git a/Assets/Translations/nl.json b/Assets/Translations/nl.json index 7dd2ff338..4e78eff52 100644 --- a/Assets/Translations/nl.json +++ b/Assets/Translations/nl.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Installeer plugins uit de sectie \"Beschikbaar\".", "installed-no-plugins-label": "Geen plugins geïnstalleerd", "installing": "{plugin} installeren...", + "notify-updates": "Plugin-updatemeldingen", + "notify-updates-description": "Toon een melding wanneer nieuwe plug-in-updates beschikbaar zijn.", "open-plugin-page": "Open plug-in pagina", "open-plugins-tab": "Open plugininstellingen", "plugin-settings-title": "{plugin} Instellingen", diff --git a/Assets/Translations/pl.json b/Assets/Translations/pl.json index 933703eaf..cb5aef4bd 100644 --- a/Assets/Translations/pl.json +++ b/Assets/Translations/pl.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Zainstaluj wtyczki z sekcji \"Dostępne\".", "installed-no-plugins-label": "Brak zainstalowanych wtyczek", "installing": "Instalowanie {plugin}...", + "notify-updates": "Powiadomienia o aktualizacjach wtyczek", + "notify-updates-description": "Wyświetl wyskakujące powiadomienie, gdy dostępne są nowe aktualizacje wtyczek.", "open-plugin-page": "Otwórz stronę wtyczki", "open-plugins-tab": "Otwórz ustawienia wtyczek", "plugin-settings-title": "Ustawienia {plugin}", diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index 619aedb9a..07e4010df 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Instale os plugins da seção \"Disponível\".", "installed-no-plugins-label": "Nenhum plugin instalado", "installing": "Instalando {plugin}...", + "notify-updates": "Notificações de atualização de plugins", + "notify-updates-description": "Mostrar um popup de notificação quando novas atualizações de plugins estiverem disponíveis.", "open-plugin-page": "Abrir página do plugin", "open-plugins-tab": "Abrir configurações de plugins", "plugin-settings-title": "Configurações do {plugin}", diff --git a/Assets/Translations/ru.json b/Assets/Translations/ru.json index 85c6ed94b..2297dcae0 100644 --- a/Assets/Translations/ru.json +++ b/Assets/Translations/ru.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Установите плагины из раздела \"Доступно\".", "installed-no-plugins-label": "Нет установленных плагинов", "installing": "Установка {plugin}...", + "notify-updates": "Уведомления об обновлении плагинов", + "notify-updates-description": "Показывать всплывающее уведомление при наличии новых обновлений плагинов.", "open-plugin-page": "Открыть страницу плагина", "open-plugins-tab": "Открыть настройки плагинов", "plugin-settings-title": "Настройки {plugin}", diff --git a/Assets/Translations/sv.json b/Assets/Translations/sv.json index 9b054f9f2..b97144658 100644 --- a/Assets/Translations/sv.json +++ b/Assets/Translations/sv.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Installera insticksmoduler från avsnittet \"Tillgängliga\".", "installed-no-plugins-label": "Inga insticksmoduler installerade", "installing": "Installerar {plugin}...", + "notify-updates": "Meddelanden om plugin-uppdateringar", + "notify-updates-description": "Visa en notifikationspopup när nya plugin-uppdateringar är tillgängliga.", "open-plugin-page": "Öppna insticksmodulsida", "open-plugins-tab": "Öppna insticksmodulinställningar", "plugin-settings-title": "Inställningar för {plugin}", diff --git a/Assets/Translations/tr.json b/Assets/Translations/tr.json index 07c28a62f..3823d671a 100644 --- a/Assets/Translations/tr.json +++ b/Assets/Translations/tr.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "\"Mevcut\" bölümünden eklentileri kurun.", "installed-no-plugins-label": "Eklenti kurulu değil", "installing": "{eklenti} kuruluyor...", + "notify-updates": "Eklenti güncelleme bildirimleri", + "notify-updates-description": "Yeni eklenti güncellemeleri olduğunda bir bildirim penceresi göster.", "open-plugin-page": "Eklenti sayfasını aç", "open-plugins-tab": "Eklenti ayarlarına git", "plugin-settings-title": "{plugin} ayarları", diff --git a/Assets/Translations/uk-UA.json b/Assets/Translations/uk-UA.json index b8e65da51..1422e8e59 100644 --- a/Assets/Translations/uk-UA.json +++ b/Assets/Translations/uk-UA.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "Встановіть плагіни з розділу \"Доступний\".", "installed-no-plugins-label": "Немає встановлених плагінів", "installing": "Встановлення {plugin}...", + "notify-updates": "Сповіщення про оновлення плагінів", + "notify-updates-description": "Показувати спливаюче сповіщення, коли доступні нові оновлення плагінів.", "open-plugin-page": "Відкрити сторінку плагіна", "open-plugins-tab": "Відкрити налаштування плагінів", "plugin-settings-title": "Налаштування {plugin}", diff --git a/Assets/Translations/zh-CN.json b/Assets/Translations/zh-CN.json index 6f7957996..1b735a35d 100644 --- a/Assets/Translations/zh-CN.json +++ b/Assets/Translations/zh-CN.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "从“可用”部分安装插件。", "installed-no-plugins-label": "未安装插件", "installing": "正在安装 {plugin}...", + "notify-updates": "插件更新通知", + "notify-updates-description": "当有新的插件更新可用时,显示通知弹窗。", "open-plugin-page": "打开插件页面", "open-plugins-tab": "打开插件设置", "plugin-settings-title": "{plugin} 设置", diff --git a/Assets/Translations/zh-TW.json b/Assets/Translations/zh-TW.json index 33925734a..91c2fedd1 100644 --- a/Assets/Translations/zh-TW.json +++ b/Assets/Translations/zh-TW.json @@ -1558,6 +1558,8 @@ "installed-no-plugins-description": "從 \"可用\"頁面來安裝外掛模組", "installed-no-plugins-label": "沒有安裝外掛模組", "installing": "正在安裝 {plugin}...", + "notify-updates": "外掛程式更新通知", + "notify-updates-description": "當有新的外掛程式更新可用時,顯示通知彈出視窗。", "open-plugin-page": "打開模組頁面", "open-plugins-tab": "開啟外掛模組設定", "plugin-settings-title": "{plugin} 設定", diff --git a/Assets/settings-default.json b/Assets/settings-default.json index 27cf5b45b..f7d6a2a43 100644 --- a/Assets/settings-default.json +++ b/Assets/settings-default.json @@ -529,7 +529,8 @@ "session": "" }, "plugins": { - "autoUpdate": false + "autoUpdate": false, + "notifyUpdates": true }, "idle": { "enabled": false, diff --git a/Commons/Settings.qml b/Commons/Settings.qml index c2936257f..c5663a0fc 100644 --- a/Commons/Settings.qml +++ b/Commons/Settings.qml @@ -744,6 +744,7 @@ Singleton { // plugins property JsonObject plugins: JsonObject { property bool autoUpdate: false + property bool notifyUpdates: true } // idle management diff --git a/Modules/Panels/Settings/Tabs/Plugins/InstalledSubTab.qml b/Modules/Panels/Settings/Tabs/Plugins/InstalledSubTab.qml index 2a46edf81..32de24f6c 100644 --- a/Modules/Panels/Settings/Tabs/Plugins/InstalledSubTab.qml +++ b/Modules/Panels/Settings/Tabs/Plugins/InstalledSubTab.qml @@ -40,6 +40,14 @@ ColumnLayout { onToggled: checked => Settings.data.plugins.autoUpdate = checked } + // Update notification toggle + NToggle { + label: I18n.tr("panels.plugins.notify-updates") + description: I18n.tr("panels.plugins.notify-updates-description") + checked: Settings.data.plugins.notifyUpdates + onToggled: checked => Settings.data.plugins.notifyUpdates = checked + } + // Check for updates button NButton { property bool isChecking: Object.keys(PluginService.activeFetches).length > 0 diff --git a/Services/Noctalia/PluginService.qml b/Services/Noctalia/PluginService.qml index d3a3a9198..753dd6737 100644 --- a/Services/Noctalia/PluginService.qml +++ b/Services/Noctalia/PluginService.qml @@ -1451,25 +1451,28 @@ Singleton { if (updateCount > 0) { Logger.i("PluginService", updateCount, "plugin update(s) available"); - ToastService.showNotice(I18n.tr("panels.plugins.title"), I18n.trp("panels.plugins.update-available", updateCount) + "\n\n" + updatesDescription, "plugin", 5000, I18n.tr("panels.plugins.open-plugins-tab"), function () { - // Open settings panel to Plugins tab on the screen where the cursor is - if (root.screenDetector) { - root.screenDetector.withCurrentScreen(function (screen) { - var panel = PanelService.getPanel("settingsPanel", screen); + + if (Settings.data.plugins.notifyUpdates) { + ToastService.showNotice(I18n.tr("panels.plugins.title"), I18n.trp("panels.plugins.update-available", updateCount) + "\n\n" + updatesDescription, "plugin", 5000, I18n.tr("panels.plugins.open-plugins-tab"), function () { + // Open settings panel to Plugins tab on the screen where the cursor is + if (root.screenDetector) { + root.screenDetector.withCurrentScreen(function (screen) { + var panel = PanelService.getPanel("settingsPanel", screen); + if (panel) { + panel.requestedTab = SettingsPanel.Tab.Plugins; + panel.open(); + } + }); + } else { + // Fallback to primary screen if screen detector is not available + var panel = PanelService.getPanel("settingsPanel", Quickshell.screens[0]); if (panel) { panel.requestedTab = SettingsPanel.Tab.Plugins; panel.open(); } - }); - } else { - // Fallback to primary screen if screen detector is not available - var panel = PanelService.getPanel("settingsPanel", Quickshell.screens[0]); - if (panel) { - panel.requestedTab = SettingsPanel.Tab.Plugins; - panel.open(); } - } - }); + }); + } } else if (pendingCount > 0) { Logger.i("PluginService", pendingCount, "plugin update(s) pending (require newer Noctalia)"); } else {