{ 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 = "elementary"; 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; }; }; }; }; }