Reference
The details behind the user guide: every setting, where YapYap keeps its files, and how to start it from the command line.
Settings
Change settings in Settings (Ctrl+,, or ⌘+, on macOS). They are saved in settings.json in the profile folder.
| Setting | In the file | Default | Notes |
|---|---|---|---|
| Start at login | general.autostart | Off | Follows the system's login items; in Flatpak, your desktop asks first |
| Start minimized | general.startMinimized | Off | Opens in the tray or the Dock |
| Get beta updates | general.betaUpdates | Off | Only in builds that update or announce updates; see betas |
| Do not disturb | general.doNotDisturb | Off | Also in the tray and the Account menu |
| Close to the tray | general.closeToTray | Off | Windows and Linux; macOS always keeps running |
| Check spelling | spelling.enabled | Off | Downloads a dictionary from Google on Windows and Linux; see Spelling |
| Spelling languages | spelling.languages | Empty | Right-click → Languages…; up to ten, such as en-GB; empty means the system's language |
| Theme | appearance.theme | Same as the system | system, light or dark |
| Tray icon | appearance.trayIcon | App icon | color, auto, light or dark; one-color icons are templates on macOS |
| Compact account sidebar | appearance.compactSidebar | Off | Avatars only; the sidebar shows with two or more accounts |
| Hide the menu bar | appearance.autoHideMenuBar | Off | Windows and Linux; Alt shows it |
| Interface scale | appearance.zoom | 100% | 50% to 200% in Settings; the View menu goes in 5% steps up to 300% |
| Zoom with a pinch or the wheel | appearance.pinchZoom | On | Off ignores pinches and Ctrl with the wheel; the View menu still zooms |
| Use hardware acceleration | reliability.hardwareAcceleration | On | Takes effect after a restart |
| Use hardware video decoding | reliability.hardwareVideoDecoding | On | Takes effect after a restart |
| Display backend | reliability.displayBackend | Automatic | Linux; auto, wayland or x11; restart |
| Disk cache size | reliability.diskCacheMb | Automatic | auto, 128, 256, 512 or 1024 MB; takes effect after a restart |
| Memory limit per page | reliability.jsHeapMb | Automatic | auto, 2048, 4096 or 8192 MB of script memory; after a restart |
| Memory limit | reliability.memoryWatchdogMb | 2048 MB | File only; 512 to 16384; see below |
| Crash reports | privacy.crashReports | Off | off, local or ask; see Privacy |
| Keep chats unread while hidden | privacy.unreadWhileHidden | On | WhatsApp marks nothing read while YapYap is hidden or minimized |
| Show who wrote in notifications | privacy.notificationSender | On | Off shows “WhatsApp” instead |
| Developer Mode | extensions.developerMode | Off | Installs unsigned extensions; never exported or imported |
| Messages an extension may read | extensions.chatMessages | 20 | How many of the open chat's latest messages an extension allowed to read chats receives |
| Blur when not in front | privacy.blurWhenUnfocused | Off | The privacy screen covers WhatsApp while another window is in front |
| Blur when you are away | privacy.blurWhenIdle | Off | After five minutes without using the computer |
| Show message text in notifications | privacy.notificationText | On | Off shows “New message”; the text never reaches the system |
| Proxy | network.proxyMode | Same as the system | system, direct or manual; see Proxy |
| Proxy address | network.proxyServer | Empty | With manual: http://, https:// or socks5://, a host and a port |
| Ask where to save each file | downloads.askWhere | Off | Off saves to the Downloads folder; on starts the dialog in the last folder chosen |
| Save files to | downloads.folder | Your Downloads folder | Set with Choose… in Settings; a folder that is gone means Downloads again |
| Open files when they finish downloading | downloads.openWhenDone | Off | PDFs, pictures, sound, video and text only; nothing that could run |
| Record as | recording.format | Opus in WebM | webm or wav; WAV files are many times larger, but every program opens them |
| Save recordings to | recording.folder | YapYap in your Music folder | Set with Choose… in Settings → Call recordings; a folder that is gone means the default again |
The file also has entries for features that are not built yet. YapYap ignores them until those features arrive, and the settings window shows a setting only once YapYap acts on it.
YapYap checks settings.json every time it starts, and never fails to start because of it. An invalid value goes back to its default. A damaged file is kept as settings.corrupt-<time>.json, and YapYap restores the previous copy (settings.json.bak) or, if that is damaged too, the defaults. Settings written by a newer version of YapYap are used but never changed.
Memory limit
When WhatsApp keeps using more memory than reliability.memoryWatchdogMb for two minutes, YapYap reloads it, which keeps you logged in and frees the memory the page has piled up. It waits while you are typing or reading in the window, so a draft is never cut off; only WhatsApp using more than one and a half times the limit reloads regardless. The log notes the size and the limit, nothing else.
Saving CPU in hidden accounts
Accounts you are not looking at are throttled by Chromium, so their timers run less often and they use little CPU. The same throttling keeps chats unread while YapYap is hidden; turning off Keep chats unread while hidden turns it off too, for every account.
Files
Everything YapYap stores lives in one profile folder:
| System | Profile folder |
|---|---|
| Linux | ~/.config/YapYap |
| Flatpak | ~/.var/app/org.guita.YapYap/config/YapYap |
| Windows | %APPDATA%\YapYap |
| macOS | ~/Library/Application Support/YapYap |
The privacy page lists every file in it, what each holds and how to delete it. Deleting the profile folder while YapYap is closed resets YapYap completely and logs you out of WhatsApp.
Command line
| Option | Effect |
|---|---|
--safe-mode | Starts without hardware acceleration, for this launch only (see graphics problems) |
--ozone-platform=wayland or =x11 | Linux: uses that display backend for this launch, over the setting and ELECTRON_OZONE_PLATFORM_HINT |
--proxy-server=<proxy>, --proxy-bypass-list=<hosts>, --proxy-pac-url=<url>, --no-proxy-server | Chromium's proxy options: used for this launch while Settings → Network → Proxy follows the system |
| A chat link | Opens that chat, for example yapyap "https://wa.me/15551234567?text=Hi" (see chat links) |
The executable is yapyap on Linux and YapYap.exe on Windows. On macOS, pass options with open -a YapYap --args <options>.
YapYap refuses to start with Chromium's --no-sandbox option or the ELECTRON_DISABLE_SANDBOX environment variable, because they remove the protection between WhatsApp Web and your computer. Troubleshooting explains what to do if your system triggers this.
YapYap reads no environment variables of its own. YAPYAP_TEST_WHATSAPP_ORIGIN exists only for YapYap's automated tests. It points YapYap at a local fake WhatsApp page and accepts only loopback http addresses.
Chat links
YapYap registers itself for whatsapp: links and opens these forms in the matching chat:
| Link | Opens |
|---|---|
whatsapp://send?phone=<number>&text=<text> | The chat with that number, prefilled |
https://wa.me/<number>?text=<text> | The chat with that number, prefilled |
https://api.whatsapp.com/send?phone=<number>&text=<text> | The chat with that number, prefilled |
The phone number and the text are optional. YapYap keeps only those two values and drops everything else in the link. Starting YapYap while it is already running passes the link to the open window.
Keyboard shortcuts
Help → Keyboard Shortcuts… (Ctrl+/, ⌘/ on macOS) lists every shortcut with the keys of your system. Change next to one waits for the new keys: press them, or Escape to keep the old ones. YapYap refuses keys another action already uses, and keys without Ctrl, Alt, Shift or ⌘, unless they are a function key. Reset goes back to YapYap's own keys. Switching accounts keeps its digits: give it keys ending in 1, and 2 to 9 follow.
Under From any app, Show or hide YapYap works while you use other apps. It has no keys until you give it some; Remove gives them back. If another app already holds the keys, or your system does not let apps use keys everywhere (as on some Wayland desktops), the window says so.
Under Extension commands, the commands of your running extensions show the keys they suggest, as long as nothing else uses them. Change gives one other keys, Remove leaves it without keys, and Reset goes back to the extension's suggestion. On macOS, use ⌘ where this table says Ctrl, unless it names other keys.
| Shortcut | Action |
|---|---|
| Ctrl+, | Open Settings |
| Ctrl+/ | Show these shortcuts |
| Ctrl+1 | Switch to the first account; 2 to 9 switch to the next ones |
| Ctrl+Shift+H | Turn the privacy screen on or off |
| Ctrl+= | Zoom in |
| Ctrl+- | Zoom out |
| Ctrl+0 | Actual size |
| Ctrl+R | Reload WhatsApp |
| Ctrl+Shift+R | Reload WhatsApp, bypassing the cache |
| F11 (macOS: ⌃⌘F) | Full screen |
| Ctrl+Shift+I (macOS: ⌥⌘I) | Developer tools |
| Ctrl+Z | Undo |
| Ctrl+Y (macOS: ⇧⌘Z) | Redo |
| Ctrl+X | Cut |
| Ctrl+C | Copy |
| Ctrl+V | Paste |
| Ctrl+Shift+V (macOS: ⌥⇧⌘V) | Paste as plain text |
| Ctrl+A | Select all |
| Ctrl+M | Minimize the window |
| Ctrl+W | Close the window |
| Ctrl+J (macOS: ⇧⌘J) | Show downloads |
| ⌘H (macOS) | Hide YapYap |
| Ctrl+Q (not on Windows) | Quit YapYap |
| Alt | Show a hidden menu bar (Windows and Linux) |