Skip to main content
Version: main

dunstify

Pops a desktop notification via dunstify (or notify-send) every time tinct generate finishes. It writes no files of its own — it consumes the list of files written by the other output plugins in the run and shows a one-line summary. The original purpose is as a reference implementation of tinct's go-plugin RPC protocol, demonstrating that a plugin doesn't have to produce theme files to be useful.

Installation

Via the official plugin repository

tinct plugins install dunstify

Build from source

cd contrib/plugins/output/dunstify
go build -ldflags "-X main.Version=0.0.0" -o tinct-plugin-dunstify
install -m 0755 tinct-plugin-dunstify ~/.local/bin/

Verify

which tinct-plugin-dunstify
tinct-plugin-dunstify --plugin-info | jq .

Install a notification helper

One of dunstify or notify-send must be on $PATH:

Distrodunst (includes dunstify)libnotify (provides notify-send)
Archsudo pacman -S dunstsudo pacman -S libnotify
Debian/Ubuntusudo apt install dunstsudo apt install libnotify-bin
Fedorasudo dnf install dunstsudo dnf install libnotify

If neither is present the plugin skips cleanly — no error, no notification.

Quick start

tinct generate -i image -p ~/Pictures/wallpaper.jpg -o hyprland,kitty,dunstify

The desktop notification appears once tinct generate finishes:

Theme Generated
Generated 8 theme files

The icon (preferences-desktop-theme), urgency (low), and timeout (5 s) are baked into the plugin — override them by editing main.go and rebuilding from source.

Generated files

None. This plugin's effect is the notification itself — there is nothing to write to disk and nothing to clean up later.

Integration

No configuration required. Add dunstify to the -o plugin list whenever you want a notification when generation finishes:

tinct generate -i image -p ~/wallpaper.jpg -o ghostty,waybar,dunstify

Or enable it permanently so it runs alongside every generate:

tinct plugins enable output:dunstify

Reload behaviour

Automatic

Not applicable — the plugin's only side-effect is the notification, dispatched in PostExecute after the other plugins have finished writing. There is no separate "reload" step.

Manual fallback

If the notification didn't appear:

  1. Confirm the notification daemon is actually running — pgrep -x dunst for dunst, otherwise check whichever daemon your DE provides.
  2. Confirm one of the helper binaries is on $PATHcommand -v dunstify || command -v notify-send.
  3. Re-run tinct generate ... -o dunstify --verbose and check the daemon's log.

Uninstall / revert

  1. Remove the config line: this plugin has no config to remove. If you opted in permanently with tinct plugins enable output:dunstify, disable it:

    tinct plugins disable output:dunstify

  2. Delete the generated files: none — this plugin writes nothing to disk. Nothing to remove.

  3. Reload to drop the styling: not applicable. Once disabled, the plugin stops dispatching notifications immediately.

  4. External state: this plugin only fires desktop notifications via the system notification daemon. No files outside tinct generate's working set are touched. To remove the plugin binary:

    tinct plugins uninstall dunstify

    or, for a source build:

    rm ~/.local/bin/tinct-plugin-dunstify

Flags

This plugin has no configurable flags. To tune the notification (urgency, timeout, icon, body text), edit main.go and rebuild from source. See Customising below.

Colour role mapping

Not applicable. This plugin does not consume any colour values from the palette — it ignores palette.colours entirely and reports only the count of files written by other plugins in the run.

Customising

The dispatched notification is hard-coded. To change it:

  1. Edit contrib/plugins/output/dunstify/main.go.
  2. Rebuild: go build -o tinct-plugin-dunstify.
  3. Reinstall: install -m 0755 tinct-plugin-dunstify ~/.local/bin/.

Common knobs:

KnobWhereDefault
Urgency-u low arg to exec.CommandContextlow
Timeout-t 5000 arg (ms)5000 (5 s)
Iconicon constant in PostExecutepreferences-desktop-theme
Body textbody formatted in PostExecuteGenerated N theme file(s)

Troubleshooting

Plugin skips: "Neither dunstify nor notify-send found on $PATH"

Install one of them:

sudo pacman -S dunst # Arch (provides dunstify)
sudo apt install dunst # Debian/Ubuntu
sudo pacman -S libnotify # Arch (provides notify-send)

Plugin runs but no notification appears

Your notification daemon may not be running. For dunst:

pgrep -x dunst || dunst &

For GNOME, KDE, sway-notification-center, etc., check the relevant daemon. notify-send honours whatever DBus notification service is currently registered.

Plugin runs but --plugin-info returns the wrong name

If you built from source without setting -ldflags "-X main.Version=…", the binary reports version: 0.0.0. That's cosmetic and doesn't affect operation — set the ldflag if you care.

  • dunst — the built-in dunst theming plugin (writes ~/.config/dunst/dunstrc.d/). Pair dunst (style the daemon) with dunstify (announce regenerations) if you want both.