use portals for linux notifs

This commit is contained in:
Henry Hiles 2026-09-21 14:16:29 -04:00
commit deaf564c36
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
6 changed files with 43 additions and 22 deletions

View file

@ -3,8 +3,6 @@ import "dart:io";
import "package:material_ui/material_ui.dart";
import "package:nexus/main.dart";
import "package:flutter_local_notifications/flutter_local_notifications.dart";
// ignore: implementation_imports
import "package:flutter_local_notifications_linux/src/model/hint.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/pages/notifications.dart";
@ -91,14 +89,9 @@ class NotificationController
largeIcon: icon == null ? null : FilePathAndroidBitmap(icon.path),
),
linux: .new(
customHints: icon == null
? null
: [
.new(
name: "image-path",
value: LinuxHintStringValue(icon.path),
),
],
category: LinuxNotificationCategory.imReceived,
defaultActionName: "app.event",
icon: icon == null ? null : FilePathLinuxIcon(icon.path),
),
// TODO: See if icons can be added to iOS, macOS, and Windows notifications (#68)
iOS: .new(),

View file

@ -7,4 +7,7 @@ Icon=nexus
Terminal=false
Type=Application
Categories=Chat;Network;InstantMessaging;
MimeType=x-scheme-handler/nexus.federated.nexus;
MimeType=x-scheme-handler/nexus.federated.nexus;
StartupNotify=true
DBusActivatable=true
X-GNOME-UsesNotifications=true

View file

@ -0,0 +1,3 @@
[D-BUS Service]
Name=nexus.federated.nexus
Exec=/usr/bin/env FLUTTER_HEADLESS=1 nexus

View file

@ -34,6 +34,8 @@ flutter.buildFlutterApplication {
navigation_rail_m3e = "sha256-+2awDTQnK58gGRY1nuHckG/jjxarsYSRu9ovR4i4TEc=";
unifiedpush_linux = "sha256-aIF/8oabSuuZo7K6qr4r7UBmf57qgoGAXyJ40fdntuQ=";
unifiedpush_platform_interface = "sha256-aIF/8oabSuuZo7K6qr4r7UBmf57qgoGAXyJ40fdntuQ=";
flutter_local_notifications_linux = "sha256-I1X+Taw4+hxDHOUxCcqiWoJbZJqbrdVUXUC0vj1Adjc=";
flutter_local_notifications_platform_interface = "sha256-I1X+Taw4+hxDHOUxCcqiWoJbZJqbrdVUXUC0vj1Adjc=";
};
postInstall = ''

View file

@ -497,19 +497,21 @@ packages:
flutter_local_notifications_linux:
dependency: "direct main"
description:
name: flutter_local_notifications_linux
sha256: "9ca97e63776f29ab1b955725c09999fc2c150523269db150c39274f2a43c5a8b"
url: "https://pub.dev"
source: hosted
version: "8.0.1"
path: flutter_local_notifications_linux
ref: "quad/feat/xdg-portal-notifs"
resolved-ref: d853ff4997f6dd2b9ecdc53d37fb337cebe63863
url: "https://github.com/Henry-Hiles/flutter_local_notifications"
source: git
version: "9.0.0-dev.1"
flutter_local_notifications_platform_interface:
dependency: transitive
dependency: "direct overridden"
description:
name: flutter_local_notifications_platform_interface
sha256: "43c3761d916c9bd3d5c7ebbc44d82f4990329840c0c5d62ad5260cc1b5d399bd"
url: "https://pub.dev"
source: hosted
version: "12.2.0"
path: flutter_local_notifications_platform_interface
ref: "quad/feat/xdg-portal-notifs"
resolved-ref: d853ff4997f6dd2b9ecdc53d37fb337cebe63863
url: "https://github.com/Henry-Hiles/flutter_local_notifications"
source: git
version: "13.0.0-dev.1"
flutter_local_notifications_web:
dependency: transitive
description:
@ -1742,6 +1744,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.5.2"
xdg_desktop_portal:
dependency: transitive
description:
name: xdg_desktop_portal
sha256: "4fae74b6ed63a449d4c796a74265cebdd912c390336dedc06d705142f3b939d7"
url: "https://pub.dev"
source: hosted
version: "0.1.14"
xdg_directories:
dependency: "direct main"
description:

View file

@ -35,6 +35,16 @@ dependency_overrides:
git:
url: https://github.com/appelladev/linkify
ref: fix/consecutive-periods-loose-url
flutter_local_notifications_linux:
git:
url: https://github.com/Henry-Hiles/flutter_local_notifications
ref: quad/feat/xdg-portal-notifs
path: flutter_local_notifications_linux
flutter_local_notifications_platform_interface:
git:
url: https://github.com/Henry-Hiles/flutter_local_notifications
ref: quad/feat/xdg-portal-notifs
path: flutter_local_notifications_platform_interface
dependencies:
flutter: