Skip to content
MMV2408Public

About

WhatsApp, Discord, Teams, Outlook, OneDrive and Brightspace in one window with tabs. Made for Linux.

Topics

Resources

Stars

27 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

79 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tabchat logo

Tabchat

WhatsApp, Discord, Teams, Outlook, Brightspace and any website in one window β€” made for Linux.
Light, keyboard-friendly and built to keep you signed in.

Latest release Linux MIT license Sponsor

πŸ‡¬πŸ‡§ English Β· πŸ‡³πŸ‡± Nederlands


Switching between WhatsApp, Discord, Teams, Outlook and OneDrive in Tabchat

Why Tabchat?

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.

Features

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

Tray menu

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+K quick search for every service and action
  • Alt+1…9, Ctrl+Tab, Ctrl+W, Ctrl+Shift+T and 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

Quick search with Ctrl+K

Installation

Download the latest version from the Releases page.

Ubuntu, Debian, Linux Mint, Pop!_OS (.deb)

Double-click the downloaded file, or run:

sudo apt install ./tabchat_*_amd64.deb

Then open Tabchat from your app menu.

Other distributions (.AppImage)

chmod +x Tabchat-*.AppImage
./Tabchat-*.AppImage

Raspberry Pi and other ARM computers (64-bit)

Use 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.

Updates

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.

Other platforms

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.

Getting started

  1. Open Tabchat and click + (or press Alt+T).
  2. 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).
  3. Sign in once β€” Tabchat remembers it.
  4. 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.

The + screen: add services, your own websites and a work/school or personal choice for Microsoft Add your own website, or open it once in incognito

Keyboard shortcuts

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).

Privacy

  • 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.

FAQ

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).

Building from source

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 ziglang

Project structure

src/
  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

Adding things

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

Releasing a new version

  1. Raise version in package.json.
  2. npm run dist
  3. Create a release with the .deb, .AppImage and latest-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

Roadmap

  • Add your own websites (name + web address)
  • Snap Store
  • Flathub
  • Profiles (e.g. "School" and "Personal")

Ideas and bug reports are welcome in Issues.

Support Tabchat

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!

License

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.

About

WhatsApp, Discord, Teams, Outlook, OneDrive and Brightspace in one window with tabs. Made for Linux.

Topics

Resources

Stars

27 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages