Add notification hint to bypass dnd/inhibition (#334)

This commit is contained in:
peelz 2023-11-28 07:53:07 -05:00 committed by GitHub
parent ab46163f1e
commit 5a23d5eeb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 6 deletions

View File

@ -186,12 +186,20 @@ namespace SwayNotificationCenter {
synchronous_ids.set (param.synchronous, id);
}
// Only show popup notification if it is ENABLED or TRANSIENT
if ((state == NotificationStatusEnum.ENABLED || state == NotificationStatusEnum.TRANSIENT)
&& !control_center.get_visibility ()
// Also check if urgency is Critical and not inhibited and dnd
&& (param.urgency == UrgencyLevels.CRITICAL
|| (!dnd && !swaync_daemon.inhibited && param.urgency != UrgencyLevels.CRITICAL))) {
bool show_notification = state == NotificationStatusEnum.ENABLED
|| state == NotificationStatusEnum.TRANSIENT;
// Don't show the notification window if the control center is open
if (control_center.get_visibility ()) {
show_notification = false;
}
bool bypass_dnd = param.urgency == UrgencyLevels.CRITICAL || param.swaync_bypass_dnd;
// Don't show the notification window if dnd or inhibited
if (!bypass_dnd && (dnd || swaync_daemon.inhibited)) {
show_notification = false;
}
if (show_notification) {
if (replace_notification > 0) {
NotificationWindow.instance.replace_notification (replace_notification, param);
} else {
@ -201,6 +209,7 @@ namespace SwayNotificationCenter {
// Remove the old notification due to it not being replaced
NotificationWindow.instance.close_notification (replace_notification, false);
}
// Only add notification to CC if it isn't IGNORED and not transient/TRANSIENT
if (state != NotificationStatusEnum.IGNORED
&& state != NotificationStatusEnum.TRANSIENT

View File

@ -110,6 +110,9 @@ namespace SwayNotificationCenter {
/** Disables scripting for notification */
public bool swaync_no_script { get; set; }
/** Always show the notification, regardless of dnd/inhibit state */
public bool swaync_bypass_dnd { get; set; }
public Array<Action> actions { get; set; }
public NotifyParams (uint32 applied_id,
@ -147,6 +150,11 @@ namespace SwayNotificationCenter {
swaync_no_script = hint_value.get_boolean ();
}
break;
case "SWAYNC_BYPASS_DND":
if (hint_value.is_of_type (VariantType.BOOLEAN)) {
swaync_bypass_dnd = hint_value.get_boolean ();
}
break;
case "value":
if (hint_value.is_of_type (VariantType.INT32)) {
this.has_synch = true;