Skip to content

IPC Channels

Sandeep Vattapparambil edited this page Aug 19, 2026 · 1 revision

πŸ”Œ IPC Channels

All channel names are centralized in src/shared/ipc-channels.ts. The preload script (src/preload/index.ts) exposes everything through window.electronAPI.

πŸ“₯ Requests (invoke from renderer)

Channel Arguments Returns
select-file filters? string | null
select-files filters? string[]
select-output β€” string | null
select-directory β€” string | null
get-media-info filePath, transcoderType MediaInfo
get-image-info filePath ImageExifData | null
get-image-preview filePath string | null (data URL)
get-image-file-info filePath ImageFileInfo | null
get-video-preview filePath string | null (data URL)
get-capabilities β€” EncoderCapabilities | null
convert-file input, output, options, transcoderType void
cancel-conversion β€” void
pause-conversion β€” void
resume-conversion β€” void
queue-add input, output, options, transcoder string (job id)
queue-remove id void
queue-list β€” QueueJob[]
queue-get-state β€” { paused, concurrency }
queue-cancel-all β€” void
queue-clear-completed β€” number (count removed)
queue-set-concurrency concurrency void
queue-set-when-done config void
queue-move-to id, toPosition boolean
queue-update-options id, options, output? boolean
queue-start β€” void
queue-pause β€” void
queue-resume β€” void
queue-export β€” number (count exported)
queue-import β€” number (count imported)
reveal-file filePath void
set-launch-at-login enabled void
player-open filePath number (generation token)
player-seek time number (generation token)
player-close β€” void
player-get-frame β€” PlayerFrame | null
extract-waveform filePath, duration WaveformData | null
extract-thumbnails filePath, duration ThumbnailStrip | null
check-for-updates β€” void
download-update β€” void
install-update installerPath void
cancel-download β€” void
open-release-notes url void

πŸ“€ Send-only (renderer to main)

Channel Payload
window-minimize β€”
window-maximize-toggle β€”
window-close β€”
window-confirm-close β€”
window-set-always-on-top boolean

πŸ“‘ Events (main to renderer)

Channel Payload
window-maximized-changed boolean
window-close-requested β€”
conversion-progress { input, output, progress }
queue-added QueueJob
queue-removed string (job id)
queue-status-change QueueJob
queue-progress { job, progress }
queue-cancelled β€”
queue-moved { id, toPosition }
player-frame PlayerFrame
player-audio PlayerAudioChunk
player-error string
log-message LogEntry
update-available UpdateInfo
update-not-available β€”
update-progress UpdateProgress
update-downloaded string (installer path)
update-error string (error message)

🧩 window.electronAPI (contextBridge API)

The preload script exposes all IPC via window.electronAPI (typed in src/renderer/electron-api.d.ts).

Invocation methods

  • getPathForFile(file) β€” resolve dropped File to absolute path
  • selectFile(filters?) β€” open file dialog, return path
  • selectFiles(filters?) β€” open multi-file dialog, return paths
  • selectOutput() β€” open save dialog
  • selectDirectory() β€” open directory picker
  • getMediaInfo(filePath, transcoderType) β€” probe media file
  • getImageInfo(filePath) β€” get EXIF + histograms
  • getImagePreview(filePath) β€” downscale preview
  • getImageFileInfo(filePath) β€” dimensions + size
  • getVideoPreview(filePath) β€” single-frame thumbnail
  • getCapabilities() β€” probe available encoders
  • convertFile(input, output, options, transcoderType) β€” start conversion
  • pauseConversion() / resumeConversion() / cancelConversion()
  • queueAdd(...) / queueRemove(id) / queueList() / queueCancelAll()
  • queueGetState() / queueClearCompleted() / queueSetConcurrency(n)
  • queueSetWhenDone(config) / queueMoveTo(id, pos) / queueUpdateOptions(id, opts)
  • queueStart() / queuePause() / queueResume()
  • queueExport() / queueImport()
  • revealFile(filePath) β€” open in system file manager
  • setLaunchAtLogin(enabled) β€” toggle launch at login
  • playerOpen(filePath) / playerSeek(time) / playerClose() / playerGetFrame()
  • extractWaveform(filePath, duration) / extractThumbnails(filePath, duration)
  • windowMinimize() / windowMaximizeToggle() / windowClose() / windowCloseConfirmed()
  • windowSetAlwaysOnTop(flag)
  • checkForUpdates() / downloadUpdate() / installUpdate(path) / cancelDownload() / openReleaseNotes(url)

Event listeners (each returns a cleanup function)

  • onWindowCloseRequested(cb)
  • onWindowMaximizedChange(cb)
  • onConversionProgress(cb)
  • onQueueAdded(cb) / onQueueRemoved(cb) / onQueueStatusChange(cb) / onQueueProgress(cb) / onQueueCancelled(cb) / onQueueMoved(cb)
  • onPlayerFrame(cb) / onPlayerAudio(cb) / onPlayerError(cb)
  • onLogMessage(cb)
  • onUpdateAvailable(cb) / onUpdateNotAvailable(cb) / onUpdateProgress(cb) / onUpdateDownloaded(cb) / onUpdateError(cb)

Clone this wiki locally