469 Commits

Author SHA1 Message Date
Benedikt Heine
7ba6ca910f
Merge pull request #551 from bebehei/queues-tests
Queues tests
2018-11-26 10:50:58 +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
d96a29fed5 Move field definition on top of function (readability) 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
Benedikt Heine
cb16fe9d96 Fix DoS in notification_format_message
When using a format with a trailing % character, dunst ends in an
endless loop, searching for a % char, while pointing exactly with the
haystack on the % character.

Increasing the substring pointer will shift the pointer forwards onto
the actual NULL character and stop the loop.
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
e82b7bfb2d Use return value as success indicator 2018-11-21 10:55:44 +01:00
Benedikt Heine
92543cce22 Remove GLib requirement check
The requirement for GLib above 2.36 is already included in the
configuration file. So this type check is redundant.
2018-11-20 19:50:15 +01:00
Benedikt Heine
ed341dfca3 Add S2US macro 2018-11-15 15:17:48 +01:00
Benedikt Heine
9b45a111f1 Sort includes alphabetically 2018-11-15 15:17:48 +01:00
Benedikt Heine
feb62a0c4c Remove displaced comment 2018-11-15 15:17:48 +01:00
Benedikt Heine
a6abfdf7c5 Include all local files relatively 2018-11-15 15:17:48 +01:00
Benedikt Heine
eba6913faa Test version number in unittests
Enforces a version number as intended in the Makefile. This check is
necessary, as there is no ability to check via Macros for an empty
string.
2018-11-12 15:32:58 +01:00
Nikos Tsipinakis
27c6a1682d
Merge pull request #552 from Gravemind/x-canonical-private-synchronous
Implement x-canonical-private-synchronous hint
2018-11-11 19:55:05 +02:00
Benedikt Heine
2d2a9c893c Add doxygen docs for markup and utils files 2018-11-11 17:27:11 +01:00
Benedikt Heine
413c0d68af Use assertions and NULL checks in markup and utils 2018-11-11 17:26:14 +01:00
Benedikt Heine
ae1b20881e Use isspace to test for whitespace 2018-11-11 15:18:56 +01:00
Benedikt Heine
d8d457f500 Remove string_replace()
string_replace_at does almost the same and string_replace is only used
once, where additionally string_replace_at would be the better choice.
2018-11-11 15:18:56 +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
b805273fb9
Merge pull request #558 from tsipinakis/feature/markup-escape
Implement smarter markup escaping
2018-11-06 21:04:35 +02:00
Nikos Tsipinakis
2c6cb8ebf3 Implement smarter markup escaping
Automatically detect and escape invalid and unsupported & entities.

Fixes #546
2018-11-06 20:49:47 +02:00
Benedikt Heine
851f8a7339 Rename dbus methods consistently 2018-10-31 15:19:24 +01:00
Benedikt Heine
9cd600f0bf Remove unused function get_filename_ext
This function had been copied 100% out of the stackoverflow answer
https://stackoverflow.com/a/24976006
2018-10-31 15:19:24 +01:00
Benedikt Heine
a24a464fbc Remove superfluous pause_signal_handler func 2018-10-31 15:19:24 +01:00
Benedikt Heine
08019dc268 Move context_menu into right header 2018-10-31 15:19:24 +01:00
Andrew Benson
f48a939dbf Add error message for failed regex initialization 2018-10-29 07:32:19 -07: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
bb02897bc8 Introduce STR_EQ and STRN_EQ macros 2018-10-09 10:08:17 +02:00
Benedikt Heine
52c47524f2 Test notification referencing 2018-10-08 18:27:11 +02:00
Benedikt Heine
fe7d82380e Use GLib to spawn browser and dmenu 2018-10-08 18:27:11 +02:00
Benedikt Heine
778a6857d8 Move clean_value function to utils.c
This is a typical string manipulation function an has no necessity to
stay in option_parser.
2018-10-08 18:27:11 +02:00
Benedikt Heine
6cc7ca361a Allow half quoted values
Previously config lines like

[rule]
script = mail -s "New notif"

were only possible to get written with additional full quotes,
which makes no sense in command line expressions.
2018-10-08 18:27:11 +02:00
Benedikt Heine
357c4309e6 Pass URLs to browser as a single argument
Parsing the arguments with g_shell_parse_argv is more safe than just
splitting it by spaces. Also this allows to pass values with spaces to
the browser command.
2018-10-08 18:27:11 +02:00
Benedikt Heine
851953f5ef Start dmenu in a separate thread 2018-10-08 18:27:11 +02:00
Benedikt Heine
516161e765 Typo 2018-10-08 17:38:00 +02:00
Benedikt Heine
1f4cd4bd15 Use STR_(EMPTY|FULL) for string emptyness checks 2018-10-08 17:38:00 +02:00
Benedikt Heine
da846d8442 Do not count longer than necessary
And also use g_strndup. This makes allocation easier and also ensures a
null-byte at the end of the string.
2018-10-08 17:38:00 +02:00
Benedikt Heine
c80e3e9a42 Harness dispatch_menu_result against stupid input 2018-10-06 13:44:01 +02:00
Benedikt Heine
38c788c367 Split plain dmenu call into separate function 2018-10-06 13:44:01 +02:00
Benedikt Heine
958aa2bc96 Lock notifications while executing dmenu
When executing dmenu, the current notifications get "locked", by setting
their timeout temporarily to 0 and referencing them. So the notification
won't get closed (exept forcefully) and won't get freed while dmenu is
opened.

This is currently pointless, but as the dmenu call will become threaded,
it's necessary later.
2018-10-06 13:44:01 +02:00
Benedikt Heine
974bcb776e Remember if the notification is living on a valid connection
The notification spec says, that a notification gets invalidated when
closed. So the client won't listen anymore to ActionInvoked signals and
won't listen to NotificationClosed signals.

Remembering the actual status of the notification helps the standard and
makes the behavior clearer.
2018-10-06 13:44:01 +02:00
Benedikt Heine
837b4fe125 Implement refcounting for notifications 2018-10-06 13:43:49 +02:00