Prominent incoming-call notification for desktop#34171
Open
syphernl wants to merge 2 commits into
Open
Conversation
01a84b1 to
35c6f6b
Compare
This was referenced Jul 8, 2026
Member
|
I'll let product look at this but from a code PoV, this is a massive PR with a lot of related but distinct things in it. It would probably need the various parts split out if do get to reviewing it. We'll also need to think about how all this is going to be maintained. |
…ast hook No behavioural change: pulls the ring/timeout/auto-dismiss lifecycle and join/decline actions out of IncomingCallToast into a reusable hook, so a future prominent (full-screen) incoming-call surface can share the same logic instead of duplicating it. Signed-off-by: Frank Klaassen <639906+syphernl@users.noreply.github.com>
On Element Desktop an incoming call only shows as a small corner toast, a ring, and a taskbar flash. When the window is minimised to tray or hidden behind other windows, the call is easy to miss. This adds two opt-in, device-level settings, both off by default: - "Show incoming calls full-screen": a Slack/Skype-style full-screen card with the caller avatar, a video on/off toggle for Element Call, and round accept/decline (plus silence for legacy 1:1) buttons. Accepting an Element Call joins directly instead of opening the in-widget lobby. - "Bring the window to the front on an incoming call": raises the window through a new focusWindow platform method, falling back to a taskbar flash where the OS refuses a programmatic raise (e.g. Wayland). Not triggered for force-silenced calls. The full-screen card reuses the existing ring / timeout / auto-dismiss lifecycle, pulled into a shared useIncomingCallToast hook so the compact toast and the card behave identically and only one of them owns the ring. Relates to element-hq#32042, element-hq#32387, element-hq#32406. Signed-off-by: Frank Klaassen <639906+syphernl@users.noreply.github.com>
c0f54f1 to
b51f54b
Compare
2 tasks
Author
I have split some changes in their own PR: #34199. Once it has been reviewed+merged this PR can be rebased and should be smaller. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Depends on #34199 (extraction of
useIncomingCallToast, split out so that PR's diff is reviewable on its own). This PR will show that diff inline until #34199 merges intodevelop.What
Today an incoming call on Element Desktop is just a small toast in the corner, a ringtone, and a taskbar flash. If the window is minimised to the tray or buried behind other windows, it's easy to miss the call entirely.
This adds two opt-in settings (device-level, both off by default):
focusWindowplatform method. It won't raise the window for calls that are force-silenced, and it falls back to flashing the taskbar entry where a programmatic raise isn't allowed.Platform note on the window raise: it works on Windows, macOS, and Linux under X11 and XWayland (for example when Electron runs with
--ozone-platform=x11). Native Wayland forbids a client from raising its own window, so there the taskbar flash is the fallback. This is a compositor limitation, not something the app can override.The toast and the full-screen card share the same ring / timeout / auto-dismiss logic, which I pulled out of the existing toast into a
useIncomingCallToasthook in #34199, so they stay in sync and only one of them ever owns the ringtone.Relates to #32042, #32387, #32406.
Screenshots
Notes: Add an optional full-screen incoming-call notification on desktop, and an optional setting to bring the window to the front on an incoming call.
Checklist
public/exportedsymbols have accurate TSDoc documentation.