72 Commits

Author SHA1 Message Date
fwsmit
32119a1df7 Wayland: handle mouse input 2020-12-28 15:15:59 +01:00
fwsmit
72ceedd4db Fix notification not disappearing 2020-12-28 15:15:59 +01:00
Nikos Tsipinakis
a89287cb3e Check for marked_for_closure before checking for timeout 2020-12-17 19:49:26 +02:00
Nikos Tsipinakis
8f9e85f122 Fix incorrect handling of 'do_action, close' mouse action (again!) 2020-12-17 19:49:26 +02:00
fwsmit
58d215ddfe Create abstract output and fix wayland bug
This commit adds an output struct which abstracts the X11 specific
functions and makes it possible to easily create a drop-in wayland
output.

It also fixes a bug in wayland where notifications won't disappear.
This is because wayland doesn't give access to user input when a
client is not in focus. This way it seems like the user is always
idle. The idle functionality is now disabled in Wayland until proper
support is added.
2020-11-18 15:20:06 +01:00
fwsmit
55d700f746 Add filetype to vim modeline 2020-11-02 20:25:26 +01:00
matclab
0a08cefc68 ignore_dbusclose: send NotificationClosed signal back for spec compliance
The notification spec has no concept of disallowing closing notifications,
so to make the ignore_dbusclose 'compliant' we choose to lie to the clients
that the notification is actually closed, but keep it open.
To do this, we send a NotificationClosed signal back (via signal_notification_closed
which also call notification_invalidate_action)
2020-07-16 18:28:05 +02:00
Nikos Tsipinakis
289b4f50eb Remove const qualifier in queues_get_displayed
The returned node was theoretically read-only however all the other
nodes accessible do not inherit the qualifier. Since none of the glib
functions use const with Glib, even the read-only ones. There's no use
in having it.

This resolves the warning about g_list_nth_data.
2020-05-05 11:38:48 +02:00
Nikos Tsipinakis
59a87e4e99
Merge pull request #610 from bebehei/docs-retval
Use @retval in codedocs
2019-03-07 22:29:18 +02:00
Benedikt Heine
16fcbc9db9 Use @retval in codedocs 2019-03-06 21:14:52 +01:00
Michael Sloan
802b1abb09 Use queues_notification_close for skip_display instead of queues_history_push
https://github.com/dunst-project/dunst/pull/590
2019-02-05 13:36:56 -08:00
Michael Sloan
977a7a7ea4 New rule option: skip_display 2019-01-30 23:50:33 -08:00
Benedikt Heine
8579b3ed6b Add assertion macro to return values
Just recently, I started using g_return_val_if_fail as a brief assertion
checker. It'll also exit the function with a specified return value.

But actually this introduces some weird behavior. It's configurable by
environment variables and it'll print out a log message, if the
expression didn't validate properly. But some of these assertions are
actually ment to be silent.

Using a simple macro makes it simple to structure the assertions and its
return values in a block at the start of a function or anywhere else.
2019-01-07 15:30:42 +01:00
Benedikt Heine
93f6eb58a3 Remove n->start tests
These aren't used anymore. Any notification which gets moved from
waiting to displayed, will have set the start field with the current
monotonic time.

So testing start == 0 won't ever succeed in
queues_notification_is_finished, as the tested notification is contained
in the displayed queue. So the start field never will be 0.

Also there's no semantics for start being 0 in dunst actually
implemented.
2018-11-24 15:22:18 +01:00
Benedikt Heine
711b11c92f Merge queue_update and queue_check_timeouts 2018-11-24 15:22:18 +01:00
Benedikt Heine
9878de312b Do not mark the waiting notification as shown
Notifications listed in the waiting queue are never shown
🙈
2018-11-24 15:22:18 +01:00
Benedikt Heine
475d829733 Fix notification seeping when displayed isn't full
Only if the queue is full, dunst should swap the most important
notifications from waiting with the least important notifications from
displayed.
2018-11-24 15:22:18 +01:00
Benedikt Heine
662b22e5de Test sleep times for get_next_datachange 2018-11-24 15:22:18 +01:00
Benedikt Heine
140278a36f Introduce a status structure 2018-11-24 15:22:18 +01:00
Benedikt Heine
fb5926b6fa Add tests for queue teardown 2018-11-24 15:22:18 +01:00
Benedikt Heine
e04003e291 Add Framework for queues tests 2018-11-24 15:22:18 +01:00
Nikos Tsipinakis
5f3960b171 Fix id replacement not assigning id if no notification has it
In previous releases when a replace request came in with an id that
doesn't exist we created a new notification with it anyway.
This is used by some to imitate the behaviour of `stack_tag` and while
not recommended (as it will break if another notification gets assigned
that id) we want to avoid such subtle breakages without consideration.

This bug was introduced in d879d70da060ea78fe735d62249a0afdf3e61bc8.
2018-11-24 15:22:18 +01:00
Benedikt Heine
28f30d182b Rename queues teardown function
Make it consistent with the queues_init function
2018-11-23 13:50:46 +01:00
Benedikt Heine
ed341dfca3 Add S2US macro 2018-11-15 15:17:48 +01:00
Jordan Galby
d879d70da0 Implement stack_tag, implementing x-canonical-private-synchronous
Implements "x-dunst-stack-tag", "x-canonical-private-synchronous",
"private-synchronous", and "synchronous" hints via the "stack_tag" feature.
2018-11-10 14:59:32 +01:00
Nikos Tsipinakis
f12f1094ed
Merge pull request #550 from bebehei/misc
Misc patches
2018-10-10 17:59:30 +03:00
Benedikt Heine
c0e2a2a7e3 Move all strcmp operations to STR*EQ macros 2018-10-09 10:08:17 +02:00
Benedikt Heine
1f4cd4bd15 Use STR_(EMPTY|FULL) for string emptyness checks 2018-10-08 17:38:00 +02:00
Benedikt Heine
837b4fe125 Implement refcounting for notifications 2018-10-06 13:43:49 +02:00
Benedikt Heine
bbbddad3a7 Use structs for notifications 2018-09-16 02:58:31 +02:00
Benedikt Heine
e1ee87b5d3 When traversing both queues, traverse in one loop
On actions, where waiting and displayed has to get traversed, traverse
them both in a single loop. Code duplication isn't necessary anymore.
2018-09-14 15:37:22 +02:00
Benedikt Heine
34e97b3e94 Optimize freshly introduced queues_update code 2018-09-14 15:37:12 +02:00
Benedikt Heine
4c26ab442a Use the first waiting notification to generate xmore
Using the last notification from displayed creates confusion about
nonexisting notifications.
2018-09-13 12:08:41 +02:00
Benedikt Heine
f14b0b2b4a Show xmore layout only when needed
For the case, that there is a single notification waiting in queue, the
xmore layout is an annoying setting.
2018-09-13 12:08:41 +02:00
Benedikt Heine
ec26403a06 Let important notifications seep into full display queue
When the display queue had is full and a new notification would come
in, new notification wouldn't get shown until a currently displayed
notification would timeout.

Even if the notification would have been shown on top of the displayed
queue. So e.g. if the displayed queue would have been filled with
"normal" urgency notifications, an incoming "urgent" notification would
have been delayed.

To let those more important notifications through, the tail of displayed
and head of waiting are swapped on every update if necessary.
2018-09-13 11:14:33 +02:00
Benedikt Heine
c692d222d7 Save the notification's scriptrun in script_run field 2018-09-13 11:14:33 +02:00
Benedikt Heine
faec6bdbca Wakeup also for infinite notifs when set show_age_threshold
For notifications without any timeout, ttl can't be positive.
So when, show_age_threshold is active, dunst won't wake up, if there
are only notifications displayed without any timeout.
2018-09-06 11:13:46 +02:00
David Sauerwein
bb60ea7a48 Add a toggle command 2018-08-11 11:08:03 +02:00
Benedikt Heine
ac4a0becd2 Count monotonic time with Linux specific clocks
On Linux, CLOCK_MONOTONIC has got a bug. It does not count
onwards during sleep, albeit required by POSIX. This behavior
is reasoned with the requirement for poll().
Also the GLib people are sticking to this behavior in their
g_get_monotonic_time() function.

So we have to use a drop in replacement, which respects CLOCK_BOOTTIME
on Linux, as this is the clock, what would be CLOCK_MONOTONIC on POSIX
systems.
2018-03-20 14:17:03 +01:00
Benedikt Heine
aa5cc977cc Add pushback mode 2018-02-25 20:18:40 +01:00
Benedikt Heine
f89ce8e16f Delay incoming notifications when fullscreens set 2018-02-25 20:18:40 +01:00
Benedikt Heine
422f353243 Add initial doxygen documentation 2018-02-22 20:08:00 +01:00
Benedikt Heine
c4eb26e3f5 Remove unnecessary return value 2018-02-20 17:05:55 +01:00
Benedikt Heine
3b6c5299be Use void as argument for parameterless functions 2018-02-20 16:24:00 +01:00
Benedikt Heine
19b364d67c Translate fprintf statements into log messages 2018-02-02 17:29:04 +01:00
Benedikt Heine
35dbd00611
Merge pull request #428 from bebehei/refactor-notification_init
Refactor notification init
2017-12-18 00:55:59 +01:00
Benedikt Heine
3face4ae72 Split notification assembly into separate method
Handle replaces_id now via n->id
2017-12-15 00:16:31 +01:00
Nikos Tsipinakis
0c8d3a4084 Don't emit NotificationClosed signal on redisplayed notifications
The signal_notification_closed function is called even when a
notification has been pulled from history and re-emits the
NotificationClosed signal, this can confuse clients since multiple such
signals are not accounted for in the spec.
2017-12-09 17:12:31 +02:00
Nikos Tsipinakis
ff6f3e496c Prefix signal functions with signal_
Make dbus function that emit a signal easier to distinguish by prefixing
them with 'signal_'.
2017-12-09 17:03:56 +02:00
Benedikt Heine
6e9a805017
Merge pull request #439 from bebehei/duplicate-notifications
Duplicate notifications
2017-11-22 18:25:37 +01:00