Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] config reload mechanism #1350

Open
wants to merge 16 commits into
base: master
Choose a base branch
from
Open

Conversation

bynect
Copy link
Member

@bynect bynect commented May 2, 2024

I wanted to add a way to reload the config files. part of the code is taken from #968.

In respect to #968 I added the ability to pass a list of config files to use to the dbus method. If none are passed it will use the old config list.

I noticed that the cmdline parser ignores multiple -conf options (without any acknowledgment of the fact). So I changed the behavior to accept a list of files.


Summary

  • Add dbus method ConfigReload
  • Refactor cmdline parsing to account for multiple -conf values
  • Cleanup wayland output on deinit
  • Update tests and documentation
  • Add dunstctl reload and completions
  • Keep original notification state for reload

@bynect
Copy link
Member Author

bynect commented May 2, 2024

@zappolowski it seems like the ci is having a problem with arch

maybe it's https://bbs.archlinux.org/viewtopic.php?id=276422?

@bynect bynect requested review from fwsmit and zappolowski May 2, 2024 17:54
@codecov-commenter
Copy link

codecov-commenter commented May 2, 2024

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

Attention: Patch coverage is 41.74312% with 127 lines in your changes missing coverage. Please review.

Project coverage is 65.38%. Comparing base (20033b8) to head (bbf6d51).
Report is 2 commits behind head on master.

Files Patch % Lines
src/rules.c 35.71% 63 Missing ⚠️
src/dunst.c 0.00% 24 Missing ⚠️
src/wayland/wl.c 0.00% 14 Missing ⚠️
src/dbus.c 47.36% 10 Missing ⚠️
src/queues.c 0.00% 9 Missing ⚠️
src/option_parser.c 83.33% 3 Missing ⚠️
src/settings.c 66.66% 3 Missing ⚠️
src/draw.c 0.00% 1 Missing ⚠️

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1350      +/-   ##
==========================================
- Coverage   66.08%   65.38%   -0.71%     
==========================================
  Files          50       50              
  Lines        8247     8345      +98     
  Branches      958     1006      +48     
==========================================
+ Hits         5450     5456       +6     
- Misses       2797     2889      +92     
Flag Coverage Δ
unittests 65.38% <41.74%> (-0.71%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@bynect bynect marked this pull request as ready for review May 3, 2024 08:02
@bynect
Copy link
Member Author

bynect commented May 3, 2024

mostly done. I'll do some more checks and maybe add a functional test

main.c Outdated Show resolved Hide resolved
src/dunst.c Outdated Show resolved Hide resolved
src/queues.h Show resolved Hide resolved
src/notification.c Outdated Show resolved Hide resolved
@fwsmit
Copy link
Member

fwsmit commented May 6, 2024

Thanks for picking this up! I never got it to work properly when I tried it. But when the code is structured well, it should not be too hard to implement

src/dunst.c Show resolved Hide resolved
@bynect
Copy link
Member Author

bynect commented May 7, 2024

Thanks for picking this up! I never got it to work properly when I tried it. But when the code is structured well, it should not be too hard to implement

I made some updates. The only thing I am a bit unsure is the reapply of rules

This was referenced May 22, 2024
@bynect bynect requested a review from fwsmit May 28, 2024 23:24
@bynect
Copy link
Member Author

bynect commented May 28, 2024

Basically I added a rule struct inside the notification that is allocated and filled when we try to apply a rule to change a value. Then when we reload we reapply that rule to "revert" the original state.
it should work but I haven't tested much (it is kind of involved)

@fwsmit does this solve the problem you said in the comments?

@bynect
Copy link
Member Author

bynect commented May 29, 2024

arch ci is not working ...

dunstctl Show resolved Hide resolved
completions/dunstctl.fishcomp Outdated Show resolved Hide resolved
src/queues.c Outdated Show resolved Hide resolved
src/rules.c Outdated Show resolved Hide resolved
src/settings.c Outdated Show resolved Hide resolved
src/wayland/wl.c Show resolved Hide resolved
@bynect
Copy link
Member Author

bynect commented Jul 1, 2024

@zappolowski I made the changes you suggested. Did you try hot reloading and found any problem? I wanted to merge this soon

docs/dunstctl.pod Show resolved Hide resolved
src/wayland/wl.c Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants