Skip to content

IPC Channels & electronAPI

All channel names are centralized in src/shared/ipc-channels.ts.

Requests (invoke from renderer)

ChannelArgumentsReturns
select-filefilters?string | null
select-filesfilters?string[]
select-outputstring | null
select-directorystring | null
get-media-infofilePath, transcoderTypeMediaInfo
get-image-infofilePathImageExifData | null
get-image-previewfilePathstring | null (data URL)
get-image-file-infofilePathImageFileInfo | null
get-video-previewfilePathstring | null (data URL)
get-capabilitiesEncoderCapabilities | null
convert-fileinput, output, options, transcoderTypevoid
cancel-conversionvoid
pause-conversionvoid
resume-conversionvoid
queue-addinput, output, options, transcoderstring (job id)
queue-removeidvoid
queue-listQueueJob[]
queue-get-state{ paused, concurrency }
queue-cancel-allvoid
queue-clear-completednumber (count removed)
queue-set-concurrencyconcurrencyvoid
queue-move-toid, toPositionboolean
queue-update-optionsid, options, output?boolean
queue-startvoid
queue-pausevoid
queue-resumevoid
reveal-filefilePathvoid
set-launch-at-loginenabledvoid
player-openfilePathnumber (generation token)
player-seektimenumber (generation token)
player-closevoid
player-get-framePlayerFrame | null
extract-waveformfilePath, durationWaveformData | null
extract-thumbnailsfilePath, durationThumbnailStrip | null
check-for-updatesvoid
download-updatevoid
install-updateinstallerPathvoid
cancel-downloadvoid
open-release-notesurlvoid

Send-only (renderer to main)

ChannelPayload
window-minimize
window-maximize-toggle
window-close
window-confirm-close
window-set-always-on-topboolean

Events (main to renderer)

ChannelPayload
window-maximized-changedboolean
window-close-requested
conversion-progress{ input, output, progress }
queue-addedQueueJob
queue-removedstring (job id)
queue-status-changeQueueJob
queue-progress{ job, progress }
queue-cancelled
queue-moved{ id, toPosition }
player-framePlayerFrame
player-audioPlayerAudioChunk
player-errorstring
log-messageLogEntry
update-availableUpdateInfo
update-not-available
update-progressUpdateProgress
update-downloadedstring (installer path)
update-errorstring (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) -> string
  • selectFile(filters?) -> Promise<string | null>
  • selectFiles(filters?) -> Promise<string[]>
  • selectOutput() -> Promise<string | null>
  • selectDirectory() -> Promise<string | null>
  • getMediaInfo(filePath, transcoderType) -> Promise<MediaInfo>
  • getImageInfo(filePath) -> Promise<ImageExifData | null>
  • getImagePreview(filePath) -> Promise<string | null>
  • getImageFileInfo(filePath) -> Promise<ImageFileInfo | null>
  • getVideoPreview(filePath) -> Promise<string | null>
  • getCapabilities() -> Promise<EncoderCapabilities | null>
  • convertFile(input, output, options, transcoderType) -> Promise<void>
  • pauseConversion() -> Promise<void>
  • resumeConversion() -> Promise<void>
  • cancelConversion() -> Promise<void>
  • queueAdd(input, output, options, transcoder) -> Promise<string>
  • queueRemove(id) -> Promise<void>
  • queueList() -> Promise<QueueJob[]>
  • queueGetState() -> Promise<{ paused, concurrency }>
  • queueCancelAll() -> Promise<void>
  • queueClearCompleted() -> Promise<number>
  • queueSetConcurrency(concurrency) -> Promise<void>
  • queueMoveTo(id, toPosition) -> Promise<boolean>
  • queueUpdateOptions(id, options, output?) -> Promise<boolean>
  • queueStart() -> Promise<void>
  • queuePause() -> Promise<void>
  • queueResume() -> Promise<void>
  • revealFile(filePath) -> Promise<void>
  • setLaunchAtLogin(enabled) -> void
  • playerOpen(filePath) -> Promise<number>
  • playerSeek(time) -> Promise<number>
  • playerClose() -> Promise<void>
  • playerGetFrame() -> Promise<PlayerFrame | null>
  • extractWaveform(filePath, duration) -> Promise<WaveformData | null>
  • extractThumbnails(filePath, duration) -> Promise<ThumbnailStrip | null>
  • windowMinimize() -> void
  • windowMaximizeToggle() -> void
  • windowClose() -> void
  • windowCloseConfirmed() -> void
  • windowSetAlwaysOnTop(flag) -> void
  • checkForUpdates() -> Promise<void>
  • downloadUpdate() -> Promise<void>
  • installUpdate(installerPath) -> Promise<void>
  • cancelDownload() -> Promise<void>
  • openReleaseNotes(url) -> Promise<void>

Event Listeners (each returns a cleanup function)

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

Released under the MIT License.