This repository has no description
8.4 kB
276 lines
1{ config, pkgs, ... }:
2let
3 dunstConfig = pkgs.writeText "dunst-config" ''
4 [global]
5 font = Iosevka Term 11
6
7 # Allow a small subset of html markup:
8 # <b>bold</b>
9 # <i>italic</i>
10 # <s>strikethrough</s>
11 # <u>underline</u>
12 #
13 # For a complete reference see
14 # <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
15 # If markup is not allowed, those tags will be stripped out of the
16 # message.
17 markup = yes
18 plain_text = no
19
20 # The format of the message. Possible variables are:
21 # %a appname
22 # %s summary
23 # %b body
24 # %i iconname (including its path)
25 # %I iconname (without its path)
26 # %p progress value if set ([ 0%] to [100%]) or nothing
27 # Markup is allowed
28 format = "%a\n<b>%s</b>\n%b"
29
30 # Sort messages by urgency.
31 sort = yes
32
33 # Show how many messages are currently hidden (because of geometry).
34 indicate_hidden = yes
35
36 # Alignment of message text.
37 # Possible values are "left", "center" and "right".
38 alignment = center
39
40 # The frequency with wich text that is longer than the notification
41 # window allows bounces back and forth.
42 # This option conflicts with "word_wrap".
43 # Set to 0 to disable.
44 bounce_freq = 0
45
46 # Show age of message if message is older than show_age_threshold
47 # seconds.
48 # Set to -1 to disable.
49 show_age_threshold = 1
50
51 # Split notifications into multiple lines if they don't fit into
52 # geometry.
53 word_wrap = yes
54
55 # Ignore newlines '\n' in notifications.
56 ignore_newline = no
57
58 # Hide duplicate's count and stack them
59 stack_duplicates = yes
60 hide_duplicates_count = no
61
62
63 # The geometry of the window:
64 # [{width}]x{height}[+/-{x}+/-{y}]
65 # The geometry of the message window.
66 # The height is measured in number of notifications everything else
67 # in pixels. If the width is omitted but the height is given
68 # ("-geometry x2"), the message window expands over the whole screen
69 # (dmenu-like). If width is 0, the window expands to the longest
70 # message displayed. A positive x is measured from the left, a
71 # negative from the right side of the screen. Y is measured from
72 # the top and down respectevly.
73 # The width can be negative. In this case the actual width is the
74 # screen width minus the width defined in within the geometry option.
75 geometry = "500x10-0+0"
76
77 # Shrink window if it's smaller than the width. Will be ignored if
78 # width is 0.
79 shrink = no
80
81 # The transparency of the window. Range: [0; 100].
82 # This option will only work if a compositing windowmanager is
83 # present (e.g. xcompmgr, compiz, etc.).
84 # transparency = 5
85
86 # Don't remove messages, if the user is idle (no mouse or keyboard input)
87 # for longer than idle_threshold seconds.
88 # Set to 0 to disable.
89 idle_threshold = 0
90
91 # Which monitor should the notifications be displayed on.
92 monitor = keyboard
93
94 # Display notification on focused monitor. Possible modes are:
95 # mouse: follow mouse pointer
96 # keyboard: follow window with keyboard focus
97 # none: don't follow anything
98 #
99 # "keyboard" needs a windowmanager that exports the
100 # _NET_ACTIVE_WINDOW property.
101 # This should be the case for almost all modern windowmanagers.
102 #
103 # If this option is set to mouse or keyboard, the monitor option
104 # will be ignored.
105 follow = none
106
107 # Should a notification popped up from history be sticky or timeout
108 # as if it would normally do.
109 sticky_history = yes
110
111 # Maximum amount of notifications kept in history
112 history_length = 15
113
114 # Display indicators for URLs (U) and actions (A).
115 show_indicators = no
116
117 # The height of a single line. If the height is smaller than the
118 # font height, it will get raised to the font height.
119 # This adds empty space above and under the text.
120 line_height = 3
121
122 # Draw a line of "separatpr_height" pixel height between two
123 # notifications.
124 # Set to 0 to disable.
125 separator_height = 1
126
127 # Padding between text and separator.
128 padding = 1
129
130 # Horizontal padding.
131 horizontal_padding = 1
132
133 # Define a color for the separator.
134 # possible values are:
135 # * auto: dunst tries to find a color fitting to the background;
136 # * foreground: use the same color as the foreground;
137 # * frame: use the same color as the frame;
138 # * anything else will be interpreted as a X color.
139 separator_color = frame
140
141 # Print a notification on startup.
142 # This is mainly for error detection, since dbus (re-)starts dunst
143 # automatically after a crash.
144 startup_notification = true
145
146 # dmenu path.
147 dmenu = ${pkgs.dmenu}/bin/dmenu -p dunst:
148
149 # Browser for opening urls in context menu.
150 browser = /usr/bin/firefox -new-tab
151
152 # Align icons left/right/off
153 icon_position = off
154 max_icon_size = 80
155
156 # Paths to default icons.
157 icon_folders = /usr/share/icons/Paper/16x16/mimetypes/:/usr/share/icons/Paper/48x48/status/:/usr/share/icons/Paper/16x16/devices/:/usr/share/icons/Paper/48x48/notifications/:/usr/share/icons/Paper/48x48/emblems/
158
159 frame_width = 2
160 frame_color = "#8EC07C"
161
162 [shortcuts]
163
164 # Shortcuts are specified as [modifier+][modifier+]...key
165 # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
166 # "mod3" and "mod4" (windows-key).
167 # Xev might be helpful to find names for keys.
168
169 # Close notification.
170 close = ctrl+space
171
172 # Close all notifications.
173 close_all = ctrl+shift+space
174
175 # Redisplay last message(s).
176 # On the US keyboard layout "grave" is normally above TAB and left
177 # of "1".
178 history = ctrl+grave
179
180 # Context menu.
181 context = mod4+u
182
183 [urgency_low]
184 # IMPORTANT: colors have to be defined in quotation marks.
185 # Otherwise the "#" and following would be interpreted as a comment.
186 frame_color = "#3B7C87"
187 foreground = "#3B7C87"
188 background = "#191311"
189 #background = "#2B313C"
190 timeout = 1
191
192 [urgency_normal]
193 frame_color = "#5B8234"
194 foreground = "#5B8234"
195 background = "#191311"
196 #background = "#2B313C"
197 timeout = 1
198
199 [urgency_critical]
200 frame_color = "#B7472A"
201 foreground = "#B7472A"
202 background = "#191311"
203 #background = "#2B313C"
204 timeout = 1
205
206
207 # Every section that isn't one of the above is interpreted as a rules to
208 # override settings for certain messages.
209 # Messages can be matched by "appname", "summary", "body", "icon", "category",
210 # "msg_urgency" and you can override the "timeout", "urgency", "foreground",
211 # "background", "new_icon" and "format".
212 # Shell-like globbing will get expanded.
213 #
214 # SCRIPTING
215 # You can specify a script that gets run when the rule matches by
216 # setting the "script" option.
217 # The script will be called as follows:
218 # script appname summary body icon urgency
219 # where urgency can be "LOW", "NORMAL" or "CRITICAL".
220 #
221 # NOTE: if you don't want a notification to be displayed, set the format
222 # to "".
223 # NOTE: It might be helpful to run dunst -print in a terminal in order
224 # to find fitting options for rules.
225
226 #[espeak]
227 # summary = "*"
228 # script = dunst_espeak.sh
229
230 #[script-test]
231 # summary = "*script*"
232 # script = dunst_test.sh
233
234 #[ignore]
235 # # This notification will not be displayed
236 # summary = "foobar"
237 # format = ""
238
239 #[signed_on]
240 # appname = Pidgin
241 # summary = "*signed on*"
242 # urgency = low
243 #
244 #[signed_off]
245 # appname = Pidgin
246 # summary = *signed off*
247 # urgency = low
248 #
249 #[says]
250 # appname = Pidgin
251 # summary = *says*
252 # urgency = critical
253 #
254 #[twitter]
255 # appname = Pidgin
256 # summary = *twitter.com*
257 # urgency = normal
258 #
259 # vim: ft=cfg
260 '';
261in {
262 systemd.user.services.dunst = {
263 wantedBy = [ "graphical-session.target" ];
264 requires = [ "xmonad.service" ];
265 environment = {
266 DISPLAY = ":${toString config.services.xserver.display}";
267 };
268 serviceConfig = {
269 SyslogIdentifier = "dunst";
270 ExecStart = "${pkgs.dunst}/bin/dunst -conf ${dunstConfig}";
271 Restart = "always";
272 RestartSec = "15s";
273 StartLimitBurst = 0;
274 };
275 };
276}