WhatsApp, Discord, Teams, Outlook, Brightspace and any website in one window β made for Linux.
Light, keyboard-friendly and built to keep you signed in.
π¬π§ English Β· π³π± Nederlands
Most chat apps on Linux are separate Electron apps, each running its own copy of Chromium. With WhatsApp, Discord and Teams open, that easily adds up to 3β4 GB of memory.
Tabchat puts them all in one window with tabs, sharing a single browser engine. On top of that it adds the things you miss in the web versions: a tray icon, unread counters, Do not disturb, keyboard shortcuts and a sleep mode for tabs you are not using.
Tabs
- π¬ WhatsApp, Discord, Teams, Outlook, OneDrive and Brightspace β add only what you need
- π₯ Multiple accounts of the same service, each with its own sign-in
βοΈ Drag tabs to reorder them, right-click for more options- π One shared Microsoft sign-in for Teams, Outlook and OneDrive (school and work accounts too), and it stays signed in after a restart
- πͺ Split view: two tabs side by side, with a divider you can drag
- π§ Back, forward, reload and home buttons on the active tab, find on page (
Ctrl+F), and downloads go straight to your Downloads folder - π― Duplicate a tab with the same sign-in (right-click)
- π Your own websites as tabs (name, icon and color), or open one once in incognito
- π§© Hide the built-in services you don't use and drag the cards into your own order
- π Brightspace from your school (any school: you enter its address), signed in with the same school account as Teams and Outlook
- π« Work/school and personal Microsoft accounts (Outlook.com, Hotmail, Live) side by side, each with its own sign-in
Never miss a message
- π΄ Unread counters on every tab, a red dot on the tray icon and a number on the dock icon
- π Click a notification to jump straight to the right tab
- π₯οΈ Keeps running in the background when you close the window, with a tray icon at the top right
- π Optionally starts hidden in the tray when you log in
Peace and quiet
- π Do not disturb for 1 hour, until tomorrow 08:00 or until you turn it off β blocks all notifications and sound. Also follows Ubuntu's own Do not disturb
- π€ Tab sleep: tabs you have not used for a while are removed from memory and come back with one click. You choose per tab which ones may sleep, and you see how much memory each tab uses
- πͺΆ Saving mode (on by default): Chromium's low-memory mode, about 20% less memory
- β¬ Downloads go straight to your Downloads folder, with progress in the tab bar and a list of recent downloads. PDFs open in a built-in viewer
Keyboard first
- β¨οΈ
Ctrl+Kquick search for every service and action Alt+1β¦9,Ctrl+Tab,Ctrl+W,Ctrl+Shift+Tand more β just like a browser
The rest
- πΌοΈ Screen sharing in Discord and Teams with a screen/window picker
β οΈ A clear error screen with automatic retry when you are offline- π Automatic updates from GitHub Releases
- π¬π§ π³π± English and Dutch
- βοΈ Light and dark theme that follows your system
- π Choose where links open: your default browser, another browser or Tabchat itself
- π¨ Colored or white tray icon
- π§Ή Minimal window: the tab bar is the title bar, with a compact (icons only) or auto-hide option
Download the latest version from the Releases page.
Double-click the downloaded file, or run:
sudo apt install ./tabchat_*_amd64.debThen open Tabchat from your app menu.
chmod +x Tabchat-*.AppImage
./Tabchat-*.AppImageUse the files with arm64 in the name: tabchat_*_arm64.deb (Raspberry Pi OS, Ubuntu) or Tabchat-*-arm64.AppImage. You need a 64-bit system; a Raspberry Pi 5 with 8 GB works great (with 4 GB, let unused tabs sleep). Tested on a Raspberry Pi 5.
No notifications? Some Raspberry Pi OS desktops have no notification service. Install one with sudo apt install dunst and restart Tabchat.
Tabchat checks for new versions by itself and downloads them in the background. When an update is ready, a green button appears in the tab bar β click it and Tabchat restarts on the new version. You can turn this off on the + screen.
macOS: Tabchat for Mac by @narendranag is an independent community port, written from scratch in Swift. It uses the built-in web engine of macOS and follows the same idea and features. It is a separate project, maintained by its own author.
- Open Tabchat and click + (or press
Alt+T). - Add the services you use. Each one opens in its own tab. For Teams, Outlook and OneDrive, pick Work/school or Personal. For Brightspace, enter your school's Brightspace address once (you can change it on the + screen; a green check shows it works).
- Sign in once β Tabchat remembers it.
- Missing a website? Click Your own website, paste the address and it becomes a tab. Turn on Incognito to open it just once.
Everything else β language, tab sleep, start at login, white tray icon β is on the same + screen.
| Shortcut | Action |
|---|---|
Ctrl+K |
Quick search: find a service or action |
Alt+T |
Open the + screen (services and settings) |
Alt+1 β¦ Alt+8 |
Go to that tab |
Alt+9 |
Go to the last tab |
Ctrl+Tab / Ctrl+Shift+Tab |
Next / previous tab |
Ctrl+W |
Close tab (your sign-in is kept) |
Ctrl+Shift+T |
Reopen closed tab |
Ctrl+Shift+PageUp / PageDown |
Move tab left / right |
F5 |
Reload |
Alt+M |
Mute / unmute tab |
Alt+β / Alt+β |
Back / forward (also the side buttons on your mouse) |
Ctrl+F |
Find on page |
Ctrl+\ |
Two tabs side by side (on/off) |
Ctrl + + / - / 0 |
Zoom in / out / reset (saved per tab) |
F11 |
Full screen |
Ctrl+Q |
Really quit Tabchat |
On the + screen, Alt + the underlined letter adds a service (WhatsApp, Discord, Teams, Outlook, OneDrive, Brightspace).
- Tabchat collects nothing. No analytics, no tracking, no account.
- Your sign-ins stay on your own computer, in
~/.config/Tabchat. - Tabchat only talks to the services you add, and to GitHub to check for updates.
- To stay signed in to Microsoft, Tabchat keeps Microsoft's session cookies for 14 days. You are asked about this the first time, and you can turn it off on the + screen.
Is this an official app? No. Tabchat is an independent open-source project and is not affiliated with WhatsApp, Meta, Discord or Microsoft. It shows the official web versions of these services.
Why do I see Ubuntu's own picker when sharing my screen? On Wayland (the default on Ubuntu), apps are not allowed to look at your screen themselves; the system always asks. Tabchat detects this and skips its own picker. Sharing audio is not possible on Linux.
A sleeping tab did not show my new messages. That is expected: a sleeping tab is fully unloaded. Turn off May sleep for that tab on the + screen to keep it awake. WhatsApp, Discord and Teams stay awake by default.
Can I add other websites? Yes: click Your own website on the + screen and paste the address. Google services (Gmail, Drive) usually block signing in from apps like Tabchat, so those may not work.
Why does my task manager say Tabchat uses 2 GB?
Tools like htop and ps count memory that processes share (the Chromium libraries) once for every process, and Tabchat runs about 15 of them. System Monitor does the opposite and leaves the shared part out. The + screen shows the real use per tab (PSS: shared memory divided fairly). To check it yourself: sudo apt install smem, then smem -k -t -P tabchat.
Something doesn't work. How do I report it?
Open an issue and attach the log files from ~/.config/tabchat/: tabchat.log (general) and updater.log (updates).
Requirements: Node.js 20 or newer, and Rust for the small native helper that sends notifications.
git clone https://github.com/MMV2408/tabchat.git
cd tabchat
npm install
npm start # run in development
npm run helper # build the native helper (optional for npm start: without it the Node helper is used)
npm run dist # build the helper, then .deb and .AppImage (x64 + arm64) into dist/Building for both x64 and arm64 from one PC needs cargo-zigbuild:
rustup target add aarch64-unknown-linux-gnu
cargo install cargo-zigbuild
pip install --user ziglangsrc/
main/ The app itself (Electron main process)
index.js Entry point
window.js Builds the window
store.js Shared runtime state
config.js Saves and loads settings (~/.config/Tabchat/config.json)
catalog.js List of services and their addresses
views.js Creates, shows and hides tabs; error screen
actions.js Everything you can do: add, close, zoom, β¦
shortcuts.js All keyboard shortcuts
palette.js Quick search (Ctrl+K)
microsoft.js Microsoft sign-in (shared login, staying signed in)
unread.js Unread counters
dnd.js Do not disturb
sleep.js Tab sleep
tray.js Tray icon and running in the background
autostart.js Start at login
share.js Screen sharing picker
updater.js Automatic updates
i18n.js All texts in English and Dutch
ipc.js Messages from the screens to the app
preload/
preload.js Bridge between Tabchat's own screens and the app
service.js Runs inside each service tab (unread badge, Do not disturb)
renderer/ Tabchat's own screens (HTML)
helper/ tabchat-helper: native notification helper (Rust, D-Bus)
assets/ Logo and tray icons
| What | Where |
|---|---|
| A service | One line in CATALOG in src/main/catalog.js, plus a description in i18n.js |
| A setting | DEFAULT_SETTINGS in config.js, FEATURES in home.html, texts in i18n.js |
| A shortcut | shortcuts.js and the list in home.html |
| A language | A new block in i18n.js and an option in home.html |
- Raise
versioninpackage.json. npm run dist- Create a release with the
.deb,.AppImageandlatest-linux.yml(needed for automatic updates):
gh release create v1.2.3 dist/tabchat_1.2.3_amd64.deb dist/Tabchat-1.2.3.AppImage dist/latest-linux.yml \
--title "Tabchat 1.2.3" --generate-notes- Add your own websites (name + web address)
- Snap Store
- Flathub
- Profiles (e.g. "School" and "Personal")
Ideas and bug reports are welcome in Issues.
Tabchat is free and stays free. If it saves you time, you can support development via GitHub Sponsors. Starring the repo or reporting bugs helps too!
MIT Β© Mike Vijverberg
WhatsApp, Discord, Microsoft Teams, Outlook and OneDrive are trademarks of their respective owners. Tabchat is not affiliated with or endorsed by them.




