119 Commits

Author SHA1 Message Date
Benedikt Heine
aae73d888e Show multiple URLs pretty with print 2017-12-15 00:16:31 +01:00
Benedikt Heine
b97a49c09b Fix memory leak colors given via hints
The hints given via DBus are not constants. Therefore the color fields
have to get freed during notification cleanup. As it's not possible to
disinguish, which field is constant, we have to duplicate the settings
on assignment.
2017-12-15 00:16:31 +01:00
Benedikt Heine
acd8be51ab Remove a and img tags from msg
While the notification spec allows tags like <a href="...">...</a> and
<img src="..." alt="...">, pango cannot parse these tags and therefore
these tags should be removed before passed to pango.

Also the method notification_extract_markup_urls is not needed anymore,
as markup_strip_a can return URLs optionally.

This implies, that URL replacement is now indicated via show_indicators
for URLs and the dmenu string is in the format of
'[text between a tags] URL\n'. This is similarly handled for images,
too.
2017-12-15 00:16:31 +01: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
4bfae81f18 Split and refactor notification_init
Unboil the spaghetti code and split it into separate methods.
2017-12-04 20:27:33 +01:00
Benedikt Heine
eae071f330 Rename color_strings to colors
This is an antipattern and makes linelength increase for nothing
2017-11-25 10:58:25 +01:00
Benedikt Heine
0ad63d2c2c Don't indent switch labels 2017-11-25 02:16:45 +01:00
Benedikt Heine
5b2a6e57b7 curly braces style
Curly braces should start on a new line, after a method declaration, but
should continue on the same line after a control structure.
2017-11-25 02:15:30 +01:00
Benedikt Heine
bd8fd8b1d2 Improve whitespace handling 2017-11-25 01:38:28 +01:00
Benedikt Heine
fc4f0a4238 Refactor arguments into one line
Parameters should not cover an area. All arguments should be on a single
line (either horizontally or vertically).
2017-11-25 01:32:06 +01:00
Benedikt Heine
caa63d6275 Sort includes alphabetically 2017-11-25 01:28:03 +01:00
Benedikt Heine
823665a3bd Sanitize negative urgency correctly 2017-11-21 16:19:40 +01:00
Benedikt Heine
5f51147263 Prefix urgency enum with URG_ 2017-11-16 17:12:30 +01:00
Benedikt Heine
d91053c85e Use enum for urgency 2017-11-16 17:10:28 +01:00
Nikos Tsipinakis
76857b6e7c
Merge pull request #423 from bebehei/optimize_icons
Optimize icons
2017-11-02 07:54:41 +02:00
Benedikt Heine
11af7402fa Use '-1' for undefined progress 2017-10-31 15:58:41 +01:00
Benedikt Heine
b571698f52 Free Actions in separate method
Also free the memory of the actual Action.
2017-10-31 12:49:19 +01:00
Benedikt Heine
13ed6301d8 Add separate function to free RawImage 2017-10-31 12:49:07 +01:00
Benedikt Heine
b57483416e Remove command handling from notification_init 2017-10-29 20:38:40 +01:00
Benedikt Heine
38e4bbb7bb Refactor notification_* functions to match queues namespace 2017-10-29 20:38:40 +01:00
Benedikt Heine
c70da444a9 Move pause_display to queues.c
Hint for dbus.c lines (134,138):

pause_display => (displayed->length == 0)
2017-10-29 20:38:40 +01:00
Benedikt Heine
f869175d0d Move id assignment to separate function in queues.c
Move all id-changing functions out of notification_init and handle this
in queues.c

Also use stack_duplicates in combination with replacement of
notifications correctly. Fixes #404 (issue not found)
2017-10-29 20:38:40 +01:00
Benedikt Heine
a7003e3616 Refactor: Move queue specific methods to queues.c 2017-10-29 20:38:40 +01:00
Benedikt Heine
e3528ef3ec Indent functions to standard 2017-10-22 10:40:39 +02:00
Benedikt Heine
01197584ae Do not extra check g_free for null 2017-10-11 01:19:58 +02:00
Benedikt Heine
be3636c679 Remove _GNU_SOURCE macro
After some research, the _GNU_SOURCE does not affect any function call
anymore. To avoid future failures on other systems not using glibc,
_GNU_SOURCE gets removed.
2017-10-08 02:32:37 +02:00
Benedikt Heine
1f0e8d2181 overhaul get_sleep_time 2017-10-07 17:46:24 +02:00
Benedikt Heine
956b5c6401 Use gint64 as microseconds for internal timeunit
time(NULL) is vulnerable against timeshifts by NTP, timezones,...

g_get_monotonic_time() is not, but counts its in microseconds with the
gint64 datatype. To prevent any conversion bugs, all internal
timeformats are now using a gint64 and only get converted during import
or export (DBus notification arrives, configuration reading, age
threshold display).
2017-10-07 17:46:21 +02:00
Nikos Tsipinakis
a56bdd18c1 Merge pull request #401 from bebehei/flickerless-replace
Update notification attributes upon direct replace
2017-10-06 22:32:49 +03:00
Nikos Tsipinakis
478377815f Merge pull request #403 from bebehei/redo-354
Work around non-gnu basename implementations
2017-10-06 22:24:39 +03:00
Nikos Tsipinakis
c55308b8a7 Initialize icons before parsing the format
Since the format supports flags for including the icon name in the
notification the icon should be initialized first (and set to the
default if not set) in order for the flag to function properly.
2017-10-06 22:14:37 +03:00
Benedikt Heine
9aba546258 Work around non-gnu basename implementations
Redo #354, as it got pushed out in #365
2017-10-06 20:29:21 +02:00
Nikos Tsipinakis
0a3298dde4 Merge pull request #387 from bebehei/tests-for-string-append
Tests for string append
2017-10-06 18:17:50 +03:00
Benedikt Heine
e8f152b5d0 Update notification attributes upon direct replace 2017-10-06 13:31:26 +02:00
Benedikt Heine
6e654eb751 Improve usage of string_append 2017-10-06 13:13:47 +02:00
Benedikt Heine
1533fcd782 Replace notifications flickerless
Previously, notifications had been replaced by removing the notification
out of the displayed/queue lists, redrawing the window and then adding
the new notification into the queue. This produced a flickering in
dunst.

By avoiding the overhead of closing and opening the window (simply
replacing the datapointer of the list), the flickering disappears.
2017-09-27 00:24:21 +02:00
Benedikt Heine
e16117ca30 Use double pointers for haystack 2017-09-07 15:25:54 +02:00
Benedikt Heine
4b7f656f6e Interpret '%%' as literal '%' in format 2017-09-07 15:25:21 +02:00
Benedikt Heine
ab9bf55892 Prevent replacement of format strings in message
To replace all occuring format strings inside the msg, replace_all had
been used previously. This leads to buggy behavior, if a format string
occurs in the replaced text, as the format string will get replaced
again under certain conditions.

Introducing a pointer, which skips the already replaced parts, will
prevent doubly replacing format strings from content.

Fixes #322
2017-09-07 15:25:14 +02:00
Nikos Tsipinakis
16bbde5bf3 Merge pull request #343 from bebehei/transient-notifications
add support for transient hints
2017-09-07 14:01:19 +03:00
Benedikt Heine
759aa518d5 Refactor star scheme of pointers
To achieve a consistent scheme, all stars of the
pointers should be on the side of the variable and
not on the side of the type.

wrong: char* a
wrong: char * a
good:  char *a

This commit is generated by the following sed command
with manual fixes of all false positives.

find src \( -name '*.c' -or -name '*.h' \) -print0
| xargs -0 -n1 sed -i
's/\([a-zA-Z]\+[-_a-zA-Z0-9]*\)\s*\*\s\+
\([a-zA-Z]\+[-_a-zA-Z0-9]*\)/\1 *\2/g'
2017-09-06 23:14:25 +02:00
Benedikt Heine
585f0f85e0 Add support for transistent hints 2017-08-19 12:46:00 +02:00
Dmitri Goutnik
bf98183098 Add libgen.h include and guard against basename(3) modifying its arg 2017-08-15 10:44:32 -05:00
Benedikt Heine
7443021897 fix typos and reformat print output 2017-07-24 22:31:06 +02:00
Nikos Tsipinakis
44ac026d97 Add format string for raw progress value
While it's not the best solution, it should cover most use cases where a
custom format on the progress value is required. If any further
customization is needed, the only current alternative is to use rules
to override the format.

Closes #273
2017-07-09 20:20:49 +03:00
Benedikt Heine
717c747a8c truncate overlong messages (fixes #248)
Displaying too heavy notifications can DoS dunst. For example bad
programs, which pipe raw image data into the notification.
Limiting the maximum character length to 5000 circumvents this.

5000 should be ridiculously high to prevent DoS while still not
truncating all correct notifications.
2017-07-09 16:34:47 +02:00
Reto Schnyder
e04bfe0a58 Allow middle click on notification to invoke action
A middle click on an notification with a single or default action will
invoke it. If there are multiple actions and no default, the context
menu is opened. If there are no actions, proceed similarly with URLs.
2017-06-29 19:38:54 +02:00
Nikos Tsipinakis
ebea092ddd Move x.{c,h} to a different subdirectory
x.c has grown into an unmaintainable blob. Moving it in its own
subdirectory is the first step to splitting it into submodules each of
which will have a well defined job so that a lot of the code can be
abstracted to improve readability and make it much easier to maintain.

This process will be done one small part at a time only when we need to
change significantly change a part of the file, there is no need to
break what already works.
2017-04-02 18:27:12 +03:00
Luke Shumaker
0c84e53afb Move markup handling into markup.{c,h}
This is strictly a code-organization change, and should contain no
functional changes.
2017-03-09 11:32:06 -05:00
Luke Shumaker
e37bbad2d7 Expand "\\n" to "\n" in the format string only; not message text.
This is consistent with other implementations; neither notification-daemon
or xfce4-notifyd expand "\n" in message text.
2017-02-20 03:48:26 -05:00