diff --git a/dunst/dunstrc b/dunst/dunstrc
deleted file mode 100644
index 21b32c6..0000000
--- a/dunst/dunstrc
+++ /dev/null
@@ -1,245 +0,0 @@
-[global]
- font = Fira Sans Mono 12
-
- # Allow a small subset of html markup in notifications and formats:
- # bold
- # italic
- # strikethrough
- # underline
- #
- # For a complete reference see
- # .
- # If markup is not allowed, those tags will be stripped out of the
- # message.
- markup = full
-
- # Treat incoming notifications as plain text
- plain_text = no
-
- # The format of the message. Possible variables are:
- # %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
- # Markup is allowed
- format = "%s\n%p %b"
-
- # Sort messages by urgency.
- sort = yes
-
- # Show how many messages are currently hidden (because of geometry).
- indicate_hidden = yes
-
- # Alignment of message text.
- # Possible values are "left", "center" and "right".
- alignment = left
-
- # The frequency with which text that is longer than the notification
- # window allows bounces back and forth.
- # This option conflicts with "word_wrap".
- # Set to 0 to disable.
- bounce_freq = 0
-
- # Show age of message if message is older than show_age_threshold
- # seconds.
- # Set to -1 to disable.
- show_age_threshold = -1
-
- # Split notifications into multiple lines if they don't fit into
- # geometry.
- word_wrap = yes
-
- # Ignore newlines '\n' in notifications.
- ignore_newline = no
-
-
- # The geometry of the window:
- # [{width}]x{height}[+/-{x}+/-{y}]
- # The geometry of the message window.
- # The height is measured in number of notifications everything else
- # in pixels. If the width is omitted but the height is given
- # ("-geometry x2"), the message window expands over the whole screen
- # (dmenu-like). If width is 0, the window expands to the longest
- # message displayed. A positive x is measured from the left, a
- # negative from the right side of the screen. Y is measured from
- # the top and down respectively.
- # The width can be negative. In this case the actual width is the
- # screen width minus the width defined in within the geometry option.
- geometry = "400x5-0+120"
-
- # Define the title of the windows spawned by dunst
- title = Dunst
-
- # Define the class of the windows spawned by dunst
- class = Dunst
-
- # Shrink window if it's smaller than the width. Will be ignored if
- # width is 0.
- shrink = no
-
- # The transparency of the window. Range: [0; 100].
- # This option will only work if a compositing window manager is
- # present (e.g. xcompmgr, compiz, etc.).
- transparency = 0
-
- # Don't remove messages, if the user is idle (no mouse or keyboard input)
- # for longer than idle_threshold seconds.
- # Set to 0 to disable.
- idle_threshold = 120
-
- # Which monitor should the notifications be displayed on.
- monitor = 0
-
- # Display notification on focused monitor. Possible modes are:
- # mouse: follow mouse pointer
- # keyboard: follow window with keyboard focus
- # none: don't follow anything
- #
- # "keyboard" needs a window manager that exports the
- # _NET_ACTIVE_WINDOW property.
- # This should be the case for almost all modern window managers.
- #
- # If this option is set to mouse or keyboard, the monitor option
- # will be ignored.
- follow = keyboard
-
- # Should a notification popped up from history be sticky or timeout
- # as if it would normally do.
- sticky_history = yes
-
- # Maximum amount of notifications kept in history
- history_length = 20
-
- # Display indicators for URLs (U) and actions (A).
- show_indicators = no
-
- # The spacing between lines. If the height is smaller than the
- # font height, it will get raised to the font height.
- line_height = 4
-
- # The height of the entire notification. If the height is smaller
- # than the font height and padding combined, it will be raised
- # to the font height and padding.
- notification_height = 0
-
- # Draw a line of "separator_height" pixel height between two
- # notifications.
- # Set to 0 to disable.
- separator_height = 1
-
- # Padding between text and separator.
- padding = 8
-
- # Horizontal padding.
- horizontal_padding = 16
-
- # Define a color for the separator.
- # possible values are:
- # * auto: dunst tries to find a color fitting to the background;
- # * foreground: use the same color as the foreground;
- # * frame: use the same color as the frame;
- # * anything else will be interpreted as a X color.
- separator_color = frame
-
- # Print a notification on startup.
- # This is mainly for error detection, since dbus (re-)starts dunst
- # automatically after a crash.
- startup_notification = false
-
- # dmenu path.
- dmenu = rofi -dmenu
-
- # Browser for opening urls in context menu.
- browser = firefox -new-tab
-
- # Align icons left/right/off
- icon_position = left
-
- # Always run rule-defined scripts, even if the notification is suppressed
- always_run_script = yes
-
- # Defines width in pixels of frame around the notification window.
- # Set to 0 to disable.
- frame_width = 2
-
- # Defines color of the frame around the notification window.
- frame_color = "#2F343F"
-
- # Merge multiple notifications with the same content
- stack_duplicates = yes
-
- mouse_left_click = do_action
- mouse_right_click = close_current
- mouse_middle_click = close_all
-
- # Use numix icons (and Adwaita as fallback)
- max_icon_size = 96
- icon_position = left
- # generate the icons with:
- # for theme in Numix-Circle Numix Adwaita hicolor; do for size in scalable 48 48x48 64 64x64; do for type in actions animations apps categories devices emblems emotes mimetypes notifications places status; do f=/usr/share/icons/$theme/$size/$type; [ -d "$f" ] && echo -n ${f}: ; done; done; done; echo
- icon_path = /usr/share/icons/Numix-Circle/48/apps:/usr/share/icons/Numix/scalable/actions:/usr/share/icons/Numix/scalable/categories:/usr/share/icons/Numix/scalable/devices:/usr/share/icons/Numix/scalable/emblems:/usr/share/icons/Numix/scalable/emotes:/usr/share/icons/Numix/scalable/mimetypes:/usr/share/icons/Numix/scalable/places:/usr/share/icons/Numix/scalable/status:/usr/share/icons/Numix/48/actions:/usr/share/icons/Numix/48/animations:/usr/share/icons/Numix/48/apps:/usr/share/icons/Numix/48/categories:/usr/share/icons/Numix/48/devices:/usr/share/icons/Numix/48/emblems:/usr/share/icons/Numix/48/emotes:/usr/share/icons/Numix/48/mimetypes:/usr/share/icons/Numix/48/notifications:/usr/share/icons/Numix/48/places:/usr/share/icons/Numix/48/status:/usr/share/icons/Numix/64/actions:/usr/share/icons/Numix/64/animations:/usr/share/icons/Numix/64/apps:/usr/share/icons/Numix/64/categories:/usr/share/icons/Numix/64/devices:/usr/share/icons/Numix/64/emblems:/usr/share/icons/Numix/64/emotes:/usr/share/icons/Numix/64/mimetypes:/usr/share/icons/Numix/64/places:/usr/share/icons/Numix/64/status:/usr/share/icons/Adwaita/scalable/actions:/usr/share/icons/Adwaita/scalable/apps:/usr/share/icons/Adwaita/scalable/categories:/usr/share/icons/Adwaita/scalable/devices:/usr/share/icons/Adwaita/scalable/emblems:/usr/share/icons/Adwaita/scalable/emotes:/usr/share/icons/Adwaita/scalable/mimetypes:/usr/share/icons/Adwaita/scalable/places:/usr/share/icons/Adwaita/scalable/status:/usr/share/icons/Adwaita/48x48/actions:/usr/share/icons/Adwaita/48x48/apps:/usr/share/icons/Adwaita/48x48/categories:/usr/share/icons/Adwaita/48x48/devices:/usr/share/icons/Adwaita/48x48/emblems:/usr/share/icons/Adwaita/48x48/emotes:/usr/share/icons/Adwaita/48x48/mimetypes:/usr/share/icons/Adwaita/48x48/places:/usr/share/icons/Adwaita/48x48/status:/usr/share/icons/Adwaita/64x64/actions:/usr/share/icons/Adwaita/64x64/apps:/usr/share/icons/Adwaita/64x64/categories:/usr/share/icons/Adwaita/64x64/devices:/usr/share/icons/Adwaita/64x64/emblems:/usr/share/icons/Adwaita/64x64/emotes:/usr/share/icons/Adwaita/64x64/mimetypes:/usr/share/icons/Adwaita/64x64/places:/usr/share/icons/Adwaita/64x64/status:/usr/share/icons/hicolor/scalable/actions:/usr/share/icons/hicolor/scalable/animations:/usr/share/icons/hicolor/scalable/apps:/usr/share/icons/hicolor/scalable/categories:/usr/share/icons/hicolor/scalable/devices:/usr/share/icons/hicolor/scalable/emblems:/usr/share/icons/hicolor/scalable/emotes:/usr/share/icons/hicolor/scalable/mimetypes:/usr/share/icons/hicolor/scalable/places:/usr/share/icons/hicolor/scalable/status:/usr/share/icons/hicolor/48x48/actions:/usr/share/icons/hicolor/48x48/animations:/usr/share/icons/hicolor/48x48/apps:/usr/share/icons/hicolor/48x48/categories:/usr/share/icons/hicolor/48x48/devices:/usr/share/icons/hicolor/48x48/emblems:/usr/share/icons/hicolor/48x48/emotes:/usr/share/icons/hicolor/48x48/mimetypes:/usr/share/icons/hicolor/48x48/places:/usr/share/icons/hicolor/48x48/status:/usr/share/icons/hicolor/64x64/actions:/usr/share/icons/hicolor/64x64/animations:/usr/share/icons/hicolor/64x64/apps:/usr/share/icons/hicolor/64x64/categories:/usr/share/icons/hicolor/64x64/devices:/usr/share/icons/hicolor/64x64/emblems:/usr/share/icons/hicolor/64x64/emotes:/usr/share/icons/hicolor/64x64/mimetypes:/usr/share/icons/hicolor/64x64/places:/usr/share/icons/hicolor/64x64/status:
-
-[shortcuts]
-
- # Shortcuts are specified as [modifier+][modifier+]...key
- # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
- # "mod3" and "mod4" (windows-key).
- # Xev might be helpful to find names for keys.
-
- # Close notification.
- close = ctrl+space
-
- # Close all notifications.
- close_all = ctrl+mod1+space
-
- # Redisplay last message(s).
- # On the US keyboard layout "grave" is normally above TAB and left
- # of "1".
- history = ctrl+mod1+n
-
- # Context menu.
- context = ctrl+shift+period
-
-[urgency_low]
- # IMPORTANT: colors have to be defined in quotation marks.
- # Otherwise the "#" and following would be interpreted as a comment.
- background = "#5294E2"
- foreground = "#686D79"
- timeout = 4
-
-[urgency_normal]
- background = "#5294E2"
- foreground = "#E1E5EA"
- timeout = 8
-
-[urgency_critical]
- background = "#CC575D"
- foreground = "#E1E5EA"
- timeout = 0
-
-[fullscreen_delay_everything]
- fullscreen = delay
-[fullscreen_show_critical]
- msg_urgency = critical
- fullscreen = show
-
-[lockscreen]
- appname = "lockscreen"
- new_icon = "system-lock-screen"
- history_ignore = yes
-[VLC]
- appname = VLC media player
- background = "#f48b00"
- new_icon = "vlc"
- history_ignore = yes
- set_transient = yes
-[rhythmbox]
- appname = Rhythmbox
- background = "#f48b00"
- history_ignore = yes
- set_transient = yes
-[Telegram]
- appname = "Telegram Desktop"
- background = "#0088CC"
diff --git a/mako/config b/mako/config
new file mode 100644
index 0000000..d134439
--- /dev/null
+++ b/mako/config
@@ -0,0 +1,24 @@
+font=Fira Sans Mono 12
+background-color=#5294E2C0
+icon-path=/usr/share/icons/Numix-Circle
+default-timeout=8000
+border-size=2
+border-color=#2F343FC0
+border-radius=5
+max-icon-size=96
+
+[urgency=low]
+text-color=#686D79
+
+[urgency=normal]
+text-color=#E1E5EA
+
+[urgency=high]
+text-color=#E1E5EA
+background-color=#CC575DC0
+
+[app-name="rhythmbox"]
+background-color=#F48B00C0
+
+[app-name="VLC"]
+background-color=#F48B00C0
diff --git a/mako/mako.service b/mako/mako.service
new file mode 100644
index 0000000..e1ffbf2
--- /dev/null
+++ b/mako/mako.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=A lightweight Wayland notification daemon
+Documentation=man:mako(1)
+PartOf=graphical-session.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/mako
+
+[Install]
+WantedBy=sway-session.target
diff --git a/sway/config b/sway/config
index 93e421c..c4724c9 100644
--- a/sway/config
+++ b/sway/config
@@ -28,7 +28,6 @@ output * bg #0C0C0D solid_color
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec nm-applet --indicator
exec gnome-keyring-daemon --start --components secrets
-exec dunst
exec sleep 2 && QSyncthingTray
exec telegram-desktop -startintray
exec /usr/lib/geoclue-2.0/demos/agent
@@ -83,10 +82,12 @@ bindsym $mod+w exec firefox
bindsym $mod+u exec feedreader
# dunst
-bindsym $mod+dead_circumflex exec dunstctl close
-bindsym $mod+Shift+dead_circumflex exec dunstctl close-all
-bindsym $mod+minus exec dunstctl history-pop
-bindsym $mod+plus exec dunstctl context
+bindsym $mod+dead_circumflex exec makoctl dismiss
+bindsym $mod+Shift+dead_circumflex exec makoctl dismiss --all
+bindsym $mod+grave exec makoctl dismiss
+bindsym $mod+Shift+grave exec makoctl dismiss --all
+bindsym $mod+minus exec makoctl list
+bindsym $mod+plus exec makoctl invoke
# to prevent gnome-help
bindsym F1 exec :