Skip to content

Open file attachments in default app instead of save dialog - #7855

Closed
FellowTraveler wants to merge 4 commits into
signalapp:mainfrom
FellowTraveler:feature/open-attachment-default-app
Closed

Open file attachments in default app instead of save dialog#7855
FellowTraveler wants to merge 4 commits into
signalapp:mainfrom
FellowTraveler:feature/open-attachment-default-app

Conversation

@FellowTraveler

@FellowTraveler FellowTraveler commented May 3, 2026

Copy link
Copy Markdown

Summary

Click a downloaded file attachment → shows a confirmation dialog ("Open [filename]?"), then opens it in the system default app.

Previously, clicking a downloaded file attachment had no action. This PR adds the ability to open it in the default app by clicking, with a confirmation dialog. Saving is still available via the existing download button already present in Signal's chat UI.

Changes

  • app/main.main.tsopen-file-path IPC handler: shows a native confirmation dialog via dialog.showMessageBox, then calls shell.openPath
  • ts/state/ducks/conversations.preload.tsopenAttachmentInDefaultApp Redux thunk: decrypts attachment to OS temp dir, then invokes the IPC handler
  • ts/components/conversation/Message.dom.tsx — click handler on generic attachments now calls openAttachmentInDefaultApp
  • stylesheets/_modules.scss — adds container wrapper needed by the drag-and-drop feature (PR Drag and drop file attachments to Finder #7853)

Test plan

  • Click a downloaded file attachment → confirmation dialog appears
  • Confirm → file opens in the system default app
  • Cancel → nothing happens
  • Not-yet-downloaded attachments still trigger download on click
  • Images, audio, and video attachments are unaffected

Clicking a downloaded generic file attachment now immediately opens it
with the system default application (e.g. Preview on macOS) rather than
showing a save-to-disk modal dialog, reducing friction for viewing files
shared in conversations.

Adds an 'open-file-path' IPC channel in the main process that calls
shell.openPath, and a new openAttachmentInDefaultApp action that decrypts
the attachment to the OS temp directory before opening it.
Shows a save icon button (on hover) overlaying the attachment UI when
a file has been fully downloaded, allowing users to save to a chosen
location. The icon uses the existing save.svg asset and appears/fades
with a CSS transition. Clicking it calls saveAttachment (shows the
save dialog) without triggering the main click-to-open behavior.
Prompts the user with 'Open [filename]?' before calling shell.openPath,
preventing accidental or malicious file execution.
@scottnonnenberg-signal

Copy link
Copy Markdown
Contributor

Hey there - thanks for all your work on this. We don't want this behavior in Signal Desktop, so I'm going to close this.

We would be open to merging #7853 however, so please consider updating that to be a standalone PR.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants