{ pkgs
, config
, lib
, ...
}:
with lib; let
cfg = config.eboskma.programs.dunst;
in
{
options.eboskma.programs.dunst = {
enable = mkEnableOption "activate dunst";
};
config = mkIf cfg.enable {
services.dunst = {
enable = true;
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
size = "symbolic";
};
settings = {
global = {
follow = "mouse";
width = "(500,900)";
height = 200;
origin = "top-right";
offset = "25x150";
progress_bar = true;
progress_bar_height = 14;
progress_bar_frame_width = 1;
progress_bar_min_width = 150;
progress_bar_max_width = 300;
# Show how many items are hidden
indicate_hidden = "yes";
# Shrink window if it's smaller than the width
shrink = false;
# Transparency of the window
transparency = 1;
# Draw a line between multiple notifications
separator_height = 6;
separator_color = "#272f57";
notification_limit = 0;
# Notification padding
padding = 16;
horizontal_padding = 16;
# Disable frame/border
frame_width = 0;
# Sort by urgency
sort = "yes";
# Disable idle time
idle_threshold = 0;
# --- Text settings ---
# Font
font = "Iosevka Aile 20";
# Set line height to font height
line_height = 0;
# Reference for markup and formatting:
# bold
# italic
# strikethrough
# underline
# .
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
markup = "full";
format = "%a\\n%s %p\\n%b";
# Align the text center left
alignment = "left";
vertical_alignment = "center";
# Show age if longer than these amount of seconds old
show_age_threshold = 120;
# Wrap text if it doesn't fit
word_wrap = "yes";
# Where to ellipsize when wrapping is disabled
ellipsize = "middle";
# Use newlines (\n) in notifications
ignore_newline = "no";
# Stack duplicate messages
stack_duplicates = true;
hide_duplicate_count = false;
# Show indicators for URLs (U) and actions (A)
show_indicators = "yes";
# --- Icons ---
# Align icons left
icon_position = "left";
# Scale icons if smaller than min or larger than max
min_icon_size = 64;
max_icon_size = 64;
# Avoid timing out hidden notifications
sticky_history = "yes";
# Maximum amount of notifications in history
history_length = 100;
# --- Misc ---
browser = "${config.programs.firefox.package}/bin/firefox --new-tab";
# Don't run scripts if notification is suppressed
always_run_script = false;
# Window title
title = "Dunst";
# Window class
class = "Dunst";
#Notification corner radius
corner_radius = 5;
# Don't ignore the dbus closeNotification
ignore_dbusclose = false;
};
experimental = {
per_monitor_dpi = false;
};
urgency_low = {
background = "#141929fe";
foreground = "#dae1f2";
highlight = "#6fa6e7";
frame_color = "#272f57";
timeout = 8;
};
urgency_normal = {
background = "#141929fe";
foreground = "#dae1f2";
highlight = "#5ca1ff";
frame_color = "#272f57";
timeout = 8;
};
urgency_high = {
background = "#5ca1ffff";
highlight = "#fe6c5a";
foreground = "#1c2138";
frame_color = "#52426e";
timeout = 0;
};
};
};
};
}