Skip to content

Render completion notifications

Rendering a scene in Blender, exporting a timeline in DaVinci, stitching in ffmpeg, a big make build — all of these run for tens of minutes, sometimes hours. Instead of watching a progress bar, hook a push to completion: how long it took and how it ended.

The simplest approach — append with && (success) and || (failure):

Окно терминала
blender -b scene.blend -o //out/ -f 1 && \
notifly-send "✅ Рендер готов" "scene.blend" 5 || \
notifly-send "❌ Рендер упал" "См. терминал" 8

The same trick with ; when the status doesn’t matter, only the fact of finishing:

Окно терминала
make -j$(nproc) ; notifly-send "🏁 Сборка завершена" "rc=$?" 5

To get the duration and exit code into the push, run the command inside a wrapper:

#!/usr/bin/env bash
# ~/bin/notifly-render — `notifly-render ffmpeg -i in.mkv ... out.mp4`
set -u
set -a; source ~/.notifly.env; set +a
START=$(date +%s)
LABEL="$*"
LABEL="${LABEL:0:60}" # trim the long command line
"$@" # run the long process itself
RC=$?
END=$(date +%s)
ELAPSED=$(printf '%02d:%02d:%02d' $(( (END-START)/3600 )) $(( (END-START)%3600/60 )) $(( (END-START)%60 )))
if (( RC == 0 )); then
notifly-send "✅ Готово: $LABEL" "Время: $ELAPSED" 5
else
notifly-send "❌ Ошибка (rc=$RC): $LABEL" "Время: $ELAPSED" 8
fi
exit $RC

Usage:

Окно терминала
notifly-render blender -b scene.blend -o //out/ -a
notifly-render ffmpeg -i input.mov -c:v libx265 -crf 24 out.mp4
notifly-render make -j$(nproc)

Success arrives at priority 5, failure at 8 (louder, gets through DND per the OS rules; see priorities).

Resolve can run a script after a render through Deliver → “Render” with an external command, but it’s simpler to wrap the headless render:

Окно терминала
notifly-render /opt/resolve/bin/resolve -nogui -render project.drp

Batch render: a push after each and a summary

Section titled “Batch render: a push after each and a summary”
Окно терминала
for f in shots/*.blend; do
if notifly-render blender -b "$f" -o "//render/$(basename "$f" .blend)_" -a; then
:
fi
done
notifly-send "🎬 Все шоты готовы" "Рендеров: $(ls render/*.png | wc -l)" 6

An equivalent wrapper for Windows. Assumes a configured function Send-Notifly.

C:\scripts\Notifly-Render.ps1
param([Parameter(Mandatory, ValueFromRemainingArguments)] [string[]]$Cmd)
. $env:USERPROFILE\Documents\WindowsPowerShell\Notifly.ps1
$start = Get-Date
$label = ($Cmd -join ' ')
$label = $label.Substring(0, [Math]::Min(60, $label.Length))
& $Cmd[0] $Cmd[1..($Cmd.Count-1)] # run the long process
$rc = $LASTEXITCODE
$dur = ((Get-Date) - $start).ToString('hh\:mm\:ss')
if ($rc -eq 0) {
Send-Notifly -Title "✅ Готово: $label" -Message "Время: $dur" -Priority 5
} else {
Send-Notifly -Title "❌ Ошибка (rc=$rc): $label" -Message "Время: $dur" -Priority 8
}
exit $rc

Usage and an alias in your PowerShell profile:

Окно терминала
Set-Alias nrender C:\scripts\Notifly-Render.ps1
nrender blender -b scene.blend -o //out/ -a
nrender ffmpeg -i input.mov -c:v libx265 -crf 24 out.mp4

A one-off variant via PowerShell’s && equivalent:

Окно терминала
blender -b scene.blend -o //out/ -a
if ($LASTEXITCODE -eq 0) { Send-Notifly -Title "✅ Рендер готов" -Priority 5 }
else { Send-Notifly -Title "❌ Рендер упал" -Priority 8 }
  • No babysitting the progress bar. Go grab a coffee — the push brings you back at the right moment.
  • Result at a glance. Duration and exit code: success quietly, failure loudly.
  • Metrics to reason with. Over time you learn how long a scene render really takes.
  • Add the size of the output file to the message (du -h out.mp4).
  • Attach the tail of the render log via extras — see extra fields.
  • Queue up renders and send a single summary push for the whole batch.