forked from Shinonome/dots-hyprland
improve handling of chromium notifications (#964)
This commit is contained in:
@@ -25,6 +25,15 @@ function exists(widget) {
|
|||||||
return widget !== null;
|
return widget !== null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function processNotificationBody(body, appEntry) {
|
||||||
|
// Only process Chrome/Chromium notifications
|
||||||
|
if (appEntry?.toLowerCase().includes('chrome')) {
|
||||||
|
// Remove the first line
|
||||||
|
return body.split('\n\n').slice(1).join('\n\n');
|
||||||
|
}
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
const getFriendlyNotifTimeString = (timeObject) => {
|
const getFriendlyNotifTimeString = (timeObject) => {
|
||||||
const messageTime = GLib.DateTime.new_from_unix_local(timeObject);
|
const messageTime = GLib.DateTime.new_from_unix_local(timeObject);
|
||||||
const oneMinuteAgo = GLib.DateTime.new_now_local().add_seconds(-60);
|
const oneMinuteAgo = GLib.DateTime.new_now_local().add_seconds(-60);
|
||||||
@@ -39,7 +48,22 @@ const getFriendlyNotifTimeString = (timeObject) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const NotificationIcon = (notifObject) => {
|
const NotificationIcon = (notifObject) => {
|
||||||
// { appEntry, appIcon, image }, urgency = 'normal'
|
|
||||||
|
if (notifObject.hints?.image_path?.deepUnpack) {
|
||||||
|
const imagePath = notifObject.hints.image_path.deepUnpack();
|
||||||
|
return Box({
|
||||||
|
valign: Gtk.Align.CENTER,
|
||||||
|
hexpand: false,
|
||||||
|
className: 'notif-icon',
|
||||||
|
css: `
|
||||||
|
background-image: url("${imagePath}");
|
||||||
|
background-size: auto 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (notifObject.image) {
|
if (notifObject.image) {
|
||||||
return Box({
|
return Box({
|
||||||
valign: Gtk.Align.CENTER,
|
valign: Gtk.Align.CENTER,
|
||||||
@@ -168,7 +192,7 @@ export default ({
|
|||||||
justify: Gtk.Justification.LEFT,
|
justify: Gtk.Justification.LEFT,
|
||||||
maxWidthChars: 1,
|
maxWidthChars: 1,
|
||||||
truncate: 'end',
|
truncate: 'end',
|
||||||
label: notifObject.body.split("\n")[0],
|
label: processNotificationBody(notifObject.body, notifObject.appEntry).split("\n")[0]
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
const notifTextExpanded = Revealer({
|
const notifTextExpanded = Revealer({
|
||||||
@@ -187,7 +211,7 @@ export default ({
|
|||||||
justify: Gtk.Justification.LEFT,
|
justify: Gtk.Justification.LEFT,
|
||||||
maxWidthChars: 1,
|
maxWidthChars: 1,
|
||||||
wrap: true,
|
wrap: true,
|
||||||
label: notifObject.body,
|
label: processNotificationBody(notifObject.body, notifObject.appEntry)
|
||||||
}),
|
}),
|
||||||
Box({
|
Box({
|
||||||
className: 'notif-actions spacing-h-5',
|
className: 'notif-actions spacing-h-5',
|
||||||
|
|||||||
Reference in New Issue
Block a user