Originally created by: kristofferR
Add a setting to render emoji in messages with the system / native emoji font
instead of Facebook's own emoji sprites. Some users prefer Apple/Segoe/Noto emoji
over FB's set (a long-standing Caprine feature: Show messages from Facebook in the
system emoji font).
Default off (keep FB emoji) so nothing changes for users who don't opt in.
facebook.com/messages does not render emoji as plain Unicode text — it
swaps them for image sprites: typically an <img> (or a <span> with a
background-image) pointing at FB's emoji CDN, with the actual Unicode emoji
carried in the element's alt / aria-label. To show system emoji we need to
suppress the FB sprite and surface the underlying Unicode glyph so the OS font
renders it.
First step before coding: inspect the live markup in the running
"Carrier (debug)" build via tauri-mcp (query_page / get_dom) on a thread
containing emoji, to pin down the exact element + where the Unicode lives
(alt, aria-label, a sibling text node, or data-*). The implementation
choice below depends on that.
Wire it like the existing page-side toggles (mirror hide_names_avatars):
src-tauri/src/lib.rs — add a system_emoji: bool field to Settingsfalse) + its Default. It's pushed to the page with the rest ofwindow.__CARRIER_SETTINGS__ / carrier:settings); no tray itemdist/settings.html — add ["system_emoji", "System Emoji", "Render
emoji with your system's emoji font instead of Facebook's."] to FIELDS,fields.src-tauri/inject/messenger.js — react to the setting (same pattern ashideNames()): toggle a root attribute (e.g. data-carrier-system-emoji)messenger.css, hide the emojialt-bearing::after on the carrier of the text). Cleanest, no observer.MutationObserver that replaces each emoji<span> holding its Unicode glyph. More robust to FBnode --check inject/messenger.js, and the usual Rust gate for theSettings change (cargo fmt && cargo clippy --all-targets -- -D warnings &&
cargo test --lib).
Originally posted by: kristofferR
Implemented on main in 35374e5.
Adds Settings > General > System Emoji (default off), which renders Facebook emoji sprites with the OS emoji font when enabled. README updated too.
Ticket changed by: kristofferR