|
Dunst
Lightweight notification daemon
|
You can generate an internal overview with doxygen. For this, use make doc-doxygen and you'll find an internal overview of all functions and symbols in docs/internal/html. You will also need graphviz for this.
For people wanting to develop new features or fix bugs for dunst, here are the steps you should take.
You can contribute with convenience scripts that make using Dunst easier. This scripts will live in contrib/ and can be used as reference by fellow users.
For building dunst, you should take a look at the README. After dunst is built, you can run it with:
This might not work, however, since dunst will abort when another instance of dunst or another notification daemon is running. You will see a message like:
So it's best to kill any running instance of dunst before trying to run the version you just built. You can do that by making a shell function as follows and put it in your bashrc/zshrc/config.fish:
If you run this function is the root directory of the repository, it will build dunst, kill any running instances and run your freshly built version of dunst.
To test dunst, it's good to know the following commands. This way you can test dunst on your local system and you don't have to wait for CI to finish.
This will build dunst if there were any changes and run the test suite. You will need awk for this to work (to color the output of the tests).
make test
This will build dunst if there were any changes and run the test suite with valgrind to make sure there aren't any memory leaks. You will have to build your tests so that they free all allocated memory after you are done, otherwise this test will fail. You will need to have valgrind installed for this.
If you notice that a leak report does not depend on the code (for example when upgrading dependencies or porting to a new platform) you can exclude those particular functions in the file .valgrind.suppressions.
The internal documentation can be built with (doxygen and graphviz required):
To open them in your browser you can run something like:
Dunst has a few docker images for running tests on different distributions. The documentation for this can be found at https://github.com/dunst-project/docker-images
For maintainers: The extra workflow (which contains FreeBSD) can be run by commenting /extra-ci in the target PR.
@param to describe all input parameters@return to describe the output value@retval to describe special return values (like NULL)/**)() to function names and prepend variables with # to properly reference them in the docs/**< and should span to the right side of the member<problem>: <problematic value/description>For logging, there are printf-like macros LOG_(E|C|W|M|I|D).
LOG_E (ERROR):LOG_E would go into the default case.LOG_C (CRITICAL):-config parameter value is unreadable fileDIE (CRITICAL):LOG_C and terminating the program after. This does not dump the core (unlike LOG_E).LOG_W (WARNING):LOG_M (MESSAGE):LOG_I (INFO):LOG_D (DEBUG):If you need to change the build system, for example add another dependency, remember to modify both the Makefile and meson.build file!