Convert Figma logo to code with AI

aluxian logoMessenger-for-Desktop

This is not an official Facebook product, and is not affiliated with, or sponsored or endorsed by, Facebook.

2,155
280
2,155
95

Top Related Projects

Experimental Telegram Desktop fork.

25,848

Telegram Desktop messaging app

A private messenger for Windows, macOS, and Linux.

:computer: Wire for desktop

A glossy Matrix collaboration client for desktop.

Free and Open Source messaging and emailing app that combines common web applications into one.

Quick Overview

Messenger for Desktop is an unofficial Facebook Messenger app for macOS, Windows, and Linux. It wraps the Messenger web application in an Electron shell, providing a native desktop experience for Facebook's messaging platform.

Pros

  • Cross-platform support (macOS, Windows, Linux)
  • Native desktop integration (notifications, dock/taskbar icon)
  • Customizable themes and settings
  • Regular updates and active maintenance

Cons

  • Unofficial app, not supported by Facebook
  • May break if Facebook changes their web interface
  • Limited features compared to official mobile apps
  • Requires Electron, which can be resource-intensive

Getting Started

  1. Visit the releases page on GitHub.
  2. Download the appropriate installer for your operating system.
  3. Install the application following your system's standard installation process.
  4. Launch the app and log in with your Facebook credentials.

Note: As this is not a code library but a desktop application, there are no code examples or quick start instructions for developers. The application is meant for end-users to install and use directly.

Competitor Comparisons

Experimental Telegram Desktop fork.

Pros of Kotatogram-desktop

  • More actively maintained with frequent updates
  • Offers additional features and customization options beyond standard Telegram
  • Supports multiple accounts and enhanced privacy settings

Cons of Kotatogram-desktop

  • Larger file size and potentially higher resource usage
  • May have a steeper learning curve due to additional features
  • Not officially supported by Telegram, potential for compatibility issues

Code Comparison

Kotatogram-desktop (C++):

void MainWindow::createTrayIcon() {
    if (trayIcon) {
        return;
    }
    trayIcon = new QSystemTrayIcon(this);
    trayIcon->setIcon(QIcon(":/gui/art/app_icon.png"));
    connect(trayIcon, &QSystemTrayIcon::activated, this, &MainWindow::trayIconActivated);
    trayIcon->show();
}

Messenger-for-Desktop (JavaScript):

createTray () {
  if (this.tray) return;
  this.tray = new Tray(this.iconPath);
  this.tray.setToolTip('Messenger for Desktop');
  this.tray.on('click', () => this.win.show());
}

Both repositories implement desktop messaging applications, but Kotatogram-desktop is a feature-rich Telegram client, while Messenger-for-Desktop is focused on Facebook Messenger. Kotatogram-desktop offers more customization and features, but may be more complex. Messenger-for-Desktop is simpler but less actively maintained.

25,848

Telegram Desktop messaging app

Pros of tdesktop

  • Native application with better performance and system integration
  • More comprehensive feature set, including voice calls and secret chats
  • Open-source codebase, allowing for community contributions and audits

Cons of tdesktop

  • Larger application size due to native implementation
  • Potentially more complex setup and build process
  • Limited to Telegram platform, unlike Messenger-for-Desktop's Facebook focus

Code Comparison

Messenger-for-Desktop (JavaScript):

app.on('ready', () => {
  mainWindow = new BrowserWindow(windowOptions);
  mainWindow.loadURL(mainUrl);
});

tdesktop (C++):

int main(int argc, char *argv[]) {
    Sandbox sandbox(argc, argv);
    Messenger app;
    return sandbox.start();
}

The code snippets highlight the different approaches:

  • Messenger-for-Desktop uses Electron, evident from the JavaScript and BrowserWindow usage
  • tdesktop employs C++ for a native application, with a custom Sandbox and Messenger class

Both projects aim to provide desktop messaging experiences, but tdesktop offers a more robust, native solution specifically for Telegram, while Messenger-for-Desktop provides a lightweight, cross-platform option for Facebook Messenger.

A private messenger for Windows, macOS, and Linux.

Pros of Signal-Desktop

  • Enhanced privacy and security features, including end-to-end encryption
  • Open-source codebase, allowing for community audits and contributions
  • Regular updates and active development

Cons of Signal-Desktop

  • Limited to Signal messaging platform, not compatible with other services
  • Fewer customization options compared to Messenger-for-Desktop
  • Requires phone number for account creation and verification

Code Comparison

Signal-Desktop (TypeScript):

async function sendMessage(message: string): Promise<void> {
  await window.Signal.Data.saveMessage(message, {
    sent_at: Date.now(),
    conversationId: this.id,
    type: 'outgoing',
  });
}

Messenger-for-Desktop (JavaScript):

function sendMessage(message) {
  return new Promise((resolve, reject) => {
    this.api.sendMessage(message, (err) => {
      if (err) reject(err);
      else resolve();
    });
  });
}

Both repositories use Electron for desktop app development, but Signal-Desktop focuses on security and privacy, while Messenger-for-Desktop aims for a more feature-rich Facebook Messenger experience. Signal-Desktop's codebase is more modern, using TypeScript, while Messenger-for-Desktop uses JavaScript. Signal-Desktop has more active development and a larger community, but Messenger-for-Desktop offers broader messaging platform support.

:computer: Wire for desktop

Pros of Wire-desktop

  • Focuses on privacy and security with end-to-end encryption
  • Supports multiple platforms (Windows, macOS, Linux)
  • Actively maintained with regular updates

Cons of Wire-desktop

  • Smaller user base compared to Facebook Messenger
  • Limited integration with third-party services

Code Comparison

Wire-desktop (TypeScript):

export async function getConversationById(id: string): Promise<Conversation | undefined> {
  const conversation = await database.getConversation(id);
  return conversation ? Conversation.fromEntity(conversation) : undefined;
}

Messenger-for-Desktop (JavaScript):

function getConversationById(id) {
  return new Promise((resolve, reject) => {
    db.conversations.findOne({ _id: id }, (err, conversation) => {
      if (err) reject(err);
      else resolve(conversation);
    });
  });
}

Both repositories use Electron for building cross-platform desktop applications. Wire-desktop employs TypeScript for improved type safety and maintainability, while Messenger-for-Desktop uses JavaScript. Wire-desktop's codebase appears more modern and structured, with async/await syntax and stronger typing. Messenger-for-Desktop, however, may be easier for developers familiar with traditional JavaScript to understand and contribute to.

A glossy Matrix collaboration client for desktop.

Pros of Element Desktop

  • Actively maintained with regular updates and security patches
  • Supports end-to-end encryption for secure communication
  • Cross-platform compatibility (Windows, macOS, Linux)

Cons of Element Desktop

  • Larger file size and resource usage
  • Steeper learning curve for new users

Code Comparison

Element Desktop (TypeScript):

export async function getUpdateInfo(): Promise<UpdateInfo | null> {
    if (process.platform === 'linux') return null; // No auto-update on Linux
    const feedUrl = getFeedUrl();
    if (!feedUrl) return null;
    return await autoUpdater.checkForUpdates();
}

Messenger for Desktop (JavaScript):

function checkForUpdates(silent) {
  if (!silent) {
    log('checking for update...');
  }

  autoUpdater.checkForUpdates();
}

Element Desktop uses TypeScript and has more robust error handling, while Messenger for Desktop uses plain JavaScript with simpler update checking logic. Element Desktop also explicitly handles different platforms, such as disabling auto-updates on Linux.

Free and Open Source messaging and emailing app that combines common web applications into one.

Pros of community-edition

  • Supports multiple messaging services in one app, not just Facebook Messenger
  • Actively maintained with regular updates and new features
  • Larger community and more contributors

Cons of community-edition

  • Larger application size due to supporting multiple services
  • May have higher resource usage compared to a single-purpose app
  • Potentially more complex user interface

Code Comparison

Messenger-for-Desktop (main process):

app.on('ready', () => {
  mainWindow = new BrowserWindow(windowOptions)
  mainWindow.loadURL(mainURL)
})

community-edition (main process):

app.on('ready', async () => {
  await createWindow()
  createTray()
  checkForUpdates()
})

Both projects use Electron for desktop app development, but community-edition appears to have a more complex initialization process, likely due to its multi-service nature.

Messenger-for-Desktop focuses solely on Facebook Messenger, providing a lightweight solution for users who only need that service. It may offer a more streamlined experience and potentially lower resource usage.

community-edition, on the other hand, offers a comprehensive solution for users who need to manage multiple messaging services. Its active development and larger community support ensure regular updates and improvements.

The choice between these two projects depends on the user's specific needs: a dedicated Facebook Messenger client or a multi-service messaging platform.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Messenger for Desktop 2

UNMAINTAINED -- Caprine is a nice alternative

OS X build Windows build Linux builds Downloads total Services status Join the chat

A simple & beautiful desktop client for Facebook Messenger. Chat without distractions on OS X, Windows and Linux. Not affiliated with Facebook. This is NOT an official product.

@devs: If you're willing to help improve, fix or maintain the app, I can make you a collaborator to help me. Join me on Gitter and let's chat!

Sponsors

BrowserStack

Thanks!

Features :star:

  • Themes & Mini Mode
  • Native Notifications (with reply on OS X)
  • Spell Checker & Auto Correct
  • Support for Facebook for Work
  • Keyboard Shortcuts
  • Launch on OS startup
  • Automatic Updates

How to install

Note: If you download from the releases page, be careful what version you pick. Releases that end with -beta are beta releases, the ones that end with -dev are development releases, and the rest are stable. If you're unsure which to pick, opt for stable. Once you download the app, you'll be able to switch to another channel from the menu.

  • dev: these releases get the newest and hottest features, but they are less tested and might break things
  • beta: these releases are the right balance between getting new features early while staying away from nasty bugs
  • stable: these releases are more thoroughly tested; they receive new features later, but there's a lower chance that things will go wrong

If you want to help me make Messenger for Desktop better, I recommend dev or beta. Let's go!

OS X

DMG or zip:

  1. Download messengerfordesktop-x.x.x-osx.dmg or messengerfordesktop-x.x.x-osx.zip
  2. Open or unzip the file and drag the app into the Applications folder
  3. Done! The app will update automatically

Using brew:

  1. Run brew cask install messenger-for-desktop in your terminal
  2. The app will be installed in your Applications
  3. Done! The app will update automatically (you can also use brew)

Windows

Installer (recommended):

  1. Download messengerfordesktop-x.x.x-win32-nsis.exe
  2. Run the installer, wait until it finishes
  3. Done! The app will update automatically

Portable:

  1. Download messengerfordesktop-x.x.x-win32-portable.zip
  2. Extract the zip wherever you want (e.g. a flash drive) and run the app from there
  3. Done! The app will NOT update automatically, but you can still check for updates

Linux

Ubuntu, Debian 8+ (deb package):

  1. Download messengerfordesktop-x.x.x-linux-arch.deb
  2. Double click and install, or run dpkg -i messengerfordesktop-x.x.x-linux-arch.deb in the terminal
  3. Start the app with your app launcher or by running messengerfordesktop in a terminal
  4. Done! The app will NOT update automatically, but you can still check for updates

You can also use apt-get (recommended):

# Download my gpg key to make sure the deb you download is correct
sudo apt-key adv --keyserver pool.sks-keyservers.net --recv 6DDA23616E3FE905FFDA152AE61DA9241537994D

# Add my repository to your sources list (skip if you've done this already)
# Replace <channel> with stable, beta or dev (pick stable if you're unsure)
echo "deb https://dl.bintray.com/aluxian/deb/ <channel> main" |
  sudo tee -a /etc/apt/sources.list.d/aluxian.list

# Install Messenger for Desktop
sudo apt-get update
sudo apt-get install messengerfordesktop

Fedora, CentOS, Red Hat (RPM package):

  1. Download messengerfordesktop-x.x.x-linux-arch.rpm
  2. Double click and install, or run rpm -ivh messengerfordesktop-x.x.x-linux-arch.rpm in the terminal
  3. Start the app with your app launcher or by running messengerfordesktop in a terminal
  4. Done! The app will NOT update automatically, but you can still check for updates

You can also use yum (recommended):

# Add my repository to your repos list (skip if you've done this already)
sudo wget https://bintray.com/aluxian/rpm/rpm -O /etc/yum.repos.d/bintray-aluxian-rpm.repo

# Install Messenger for Desktop
sudo yum install messengerfordesktop.i386     # for 32-bit distros
sudo yum install messengerfordesktop.x86_64   # for 64-bit distros

Arch Linux (AUR):

  1. Simply run yaourt -S messengerfordesktop
  2. Start the app with your app launcher or by running messengerfordesktop in a terminal
  3. Done! The app will NOT update automatically, but you can still check for updates

Repository URL: https://aur.archlinux.org/packages/messengerfordesktop/

For Developers

Contributions are welcome! Please help me make Messenger for Desktop the best app for Facebook Messenger. For feature requests and bug reports please submit an issue or get in touch with me on Gitter or Twitter @aluxian.

Build

Note: for some tasks, a GitHub access token might be required (if you get errors, make sure you have this token). After you generate it (see here if you need help; repo permissions are enough), set it as an env var:

  • Unix: export GITHUB_TOKEN=123
  • Windows: set GITHUB_TOKEN=123

Install pre-requisites

If you want to build deb and rpm packages for Linux, you also need fpm. To install it on OS X:

sudo gem install fpm
brew install rpm

Install dependencies

Global dependencies:

npm install -g gulp

Local dependencies:

npm install
cd src && npm install

Native modules

The app uses native modules. Make sure you rebuild the modules before building the app:

gulp rebuild:<32|64>

Build and watch

During development you can use the watch tasks, which have live reload. As you edit files in ./src, they will be re-compiled and moved into the build folder:

gulp watch:<darwin64|linux32|linux64|win32>

If you want to build it just one time, use build:

gulp build:<darwin64|linux32|linux64|win32>

For production builds, set NODE_ENV=production or use the --prod flag. Production builds don't include dev modules.

gulp build:<darwin64|linux32|linux64|win32> --prod
NODE_ENV=production gulp build:<darwin64|linux32|linux64|win32>

To see detailed logs, run every gulp task with the --verbose flag.

If you don't specify a platform when running a task, the task will run for the current platform.

App debug logs

To see debug messages while running the app, set the DEBUG env var. This will print logs from the main process.

export DEBUG=messengerfordesktop:*

To open the webview dev tools, type this in the main dev tools console:

wv.openDevTools();

If you want to automatically open the webview dev tools, use:

localStorage.autoLaunchDevTools = true; // on
localStorage.removeItem('autoLaunchDevTools'); // off

Pack

OS X

You'll need to set these env vars:

SIGN_DARWIN_IDENTITY
SIGN_DARWIN_KEYCHAIN_NAME
SIGN_DARWIN_KEYCHAIN_PASSWORD

Pack the app in a neat .dmg:

gulp pack:darwin64:<dmg:zip> [--prod]

This uses node-appdmg which works only on OS X machines.

Windows

You'll need to set these env vars:

SIGNTOOL_PATH=
SIGN_WIN_CERTIFICATE_FILE=
SIGN_WIN_CERTIFICATE_PASSWORD=

Create an installer. This will also sign every executable inside the app, and the setup exe itself:

gulp pack:win32:installer [--prod]

Or, if you prefer, create a portable zip. This will also sign the executable:

gulp pack:win32:portable [--prod]

These tasks only work on Windows machines due to their dependencies: Squirrel.Windows and Microsoft's SignTool.

Linux

Create deb/rpm packages:

gulp pack:<linux32|linux64>:<deb|rpm> [--prod]

Make sure you've installed fpm.

Release flow

develop -> staging -> deploy -> master

  1. All work is done on branch develop. Every push to develop will make the CIs run code linting and other checks.
  2. In order to build, push to staging. Every push to staging will make the CIs build the app and upload it to Bintray at aluxian/artifacts, available for testing.
  3. After a version is tested and is ready for release, push it to deploy. This will rebuild the app and upload it to GitHub, Bintray and other repositories.
  4. Now, the code is ready to be merged into master.