Download

# Ferdi

GitHub Releases Contributors Open Collective backers Open Collective sponsors Build Status Windows Build Status Mac & Linux Gitter Chat Room

🀴🏽 Hard-fork of [Franz](https://github.com/meetfranz/franz), adding awesome features and removing unwanted ones. ### Table of contents
Toggle navigation - [Ferdi](#ferdi) - [Table of contents](#table-of-contents) - [What is Ferdi?](#what-is-ferdi) - [Features](#features) - [What does Ferdi look like?](#what-does-ferdi-look-like) - [Download Ferdi](#download-ferdi) - [Or use Chocolatey (Windows only)](#or-use-chocolatey-windows-only) - [Or use homebrew (macOS or Linux)](#or-use-homebrew-macos-or-linux) - [Or use AUR (Arch Linux)](#or-use-aur-arch-linux) - [What makes Ferdi different from Franz?](#what-makes-ferdi-different-from-franz) - [Removes unproductive paywalls and other other interruptions](#removes-unproductive-paywalls-and-other-other-interruptions) - [Adds features to increase your productivity](#adds-features-to-increase-your-productivity) - [Adds features to improve your privacy](#adds-features-to-improve-your-privacy) - [Adds features to improve your experience using Ferdi](#adds-features-to-improve-your-experience-using-ferdi) - [Removed bugs](#removed-bugs) - [Adds new platforms](#adds-new-platforms) - [Adds internal changes](#adds-internal-changes) - [Development](#development) - [Install OS dependencies](#install-os-dependencies) - [Node.js](#nodejs) - [Git](#git) - [Debian/Ubuntu](#debianubuntu) - [Fedora](#fedora) - [Windows](#windows) - [Clone repository with submodule](#clone-repository-with-submodule) - [Local caching of dependencies](#local-caching-of-dependencies) - [Install dependencies](#install-dependencies) - [Fix native modules to match current electron node version](#fix-native-modules-to-match-current-electron-node-version) - [Package recipe repository](#package-recipe-repository) - [Start development app](#start-development-app) - [Packaging](#packaging) - [Release](#release) - [Nightly releases](#nightly-releases) - [Contributors ✨](#contributors-) - [Backers via OpenCollective](#backers-via-opencollective) - [Sponsors via OpenCollective](#sponsors-via-opencollective) - [Other Sponsors](#other-sponsors)
### What is Ferdi? Ferdi is a desktop app that helps you organize how you use your favourite apps by combining them into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additional features and doesn't restrict its usage! Ferdi is compatible with your existing Franz account so you can continue right where you left off. Find out more about Ferdi and its features on [getferdi.com](https://getferdi.com). ## Features - [x] Ferdi puts all your web apps into one place - [x] Native support for 100+ services - [x] Workspaces to keep your personal and work life separated - [x] Support for multiple accounts on any service - [x] Dark Mode support for all of your services - [x] Optional cloud sync to keep your services synchronized between devices - [x] Better control over when you get which notifications - [x] Cross-platform so you can view your services on all your computers - [x] Full proxy support to work in every network environment - [x] Ferdi speaks your language: Support for 20+ languages ...and best of all: - [x] Its completely free! There are no restrictions on features, no paywalls ### What does Ferdi look like?
Toggle screenshots

Keep all your messaging services in one place. "Keep all your messaging services in one place." Order your services with Ferdi Workspaces. "Order your services with Ferdi Workspaces." Always keep your Todos list open with Ferdi Todos. "Always keep your Todos list open with Ferdi Todos." Supporting all your services. "Supporting all your services."

## Download Ferdi You can download Ferdi for Windows, Mac and Linux on [Ferdi's download page](https://getferdi.com/download) or you can find all variants in the [latest stable release](https://github.com/getferdi/ferdi/releases/latest) assets and [all the other release here](https://github.com/getferdi/ferdi/releases). ### Or use Chocolatey (Windows only) `$ choco install ferdi` (Don't know Chocolatey? [chocolatey.org](https://chocolatey.org/)) ### Or use homebrew (macOS or Linux) `$ brew install --cask ferdi` (Don't know homebrew? [brew.sh](https://brew.sh/)) ### Or use AUR (Arch Linux) Ferdi has three separate AUR packages you can use: - **[ferdi](https://aur.archlinux.org/packages/ferdi/)**: Uses your system electron version to run the latest release - this version will work best on most systems. - **[ferdi-bin](https://aur.archlinux.org/packages/ferdi-bin/)**: Uses the latest Fedora release and extracts it to Arch. Use this version if you are having trouble with the `ferdi` package. - **[ferdi-git](https://aur.archlinux.org/packages/ferdi-git/)**: Uses your system electron version to run the latest commit from the develop branch and may be unstable but may also give you features that are not yet available in other versions. Please only use `ferdi-git` if you accept these risks. If you use an AUR Helper e.g. yay, simply install it via `yay -S ferdi`. ## What makes Ferdi different from Franz? ### Removes unproductive paywalls and other other interruptions - [x] Removes the counter-productive fullscreen app delay inviting users to upgrade - [x] Removes pages begging you to donate after registration - [x] Removes "Franz is better together" popup - [x] Makes all users Premium by default ([#15](https://github.com/getferdi/ferdi/issues/15)) ### Adds features to increase your productivity - [x] Adds 30+ new services - [x] Adds "Find in Page" feature ([#67](https://github.com/getferdi/ferdi/issues/67)) - [x] Adds an option to keep individual workspaces always loaded ([#37](https://github.com/getferdi/ferdi/issues/37)) - [x] Adds "Quick Switch" feature to help you navigate a long list of services (similar to Rambox's [Quick Switcher](https://rambox.pro/#feature-details/quick_switcher)) - [x] Adds "Service Hibernation" that will automatically unload services when they are unused to keep your computer running fast - [x] Adds a setting to keep service in hibernation after startup ([#577](https://github.com/getferdi/ferdi/issues/577), [#584](https://github.com/getferdi/ferdi/issues/584)) - [x] [Add `user.css` and `user.js` that allows users to inject custom code into services](https://github.com/getferdi/ferdi/wiki/Using-user.css-and-user.js) ([#83](https://github.com/getferdi/ferdi/issues/83)) - [x] Adds Process Manager to find services using a lot of resources - [x] Adds CTRL+← and CTRL+β†’ shortcuts and menu options to go back and forward in the service browsing history([#39](https://github.com/getferdi/ferdi/issues/39)) - [x] Adds "Scheduled Do-not-Disturb" feature in which you won't get notifications (similar to Rambox's [Work Hours](https://rambox.pro/#feature-details/work_hours)) - [x] Allows you to [use any Todo service inside "Franz Todo" panel](https://github.com/getferdi/ferdi/wiki/Custom-Todo) (e.g. Todoist via https://todoist.com/app) instead of being limited to using Franz Todo - [x] Adds a dropdown list to choose your Todo service ([#418](https://github.com/getferdi/ferdi/issues/418), [#477](https://github.com/getferdi/ferdi/issues/477)), πŸ’– [@yourcontact](https://github.com/yourcontact) - [x] Differentiates between indirect and direct notifications ([#590](https://github.com/getferdi/ferdi/issues/590)), πŸ’– [@Room4O4](https://github.com/Room4O4) [@mahadevans87](https://github.com/mahadevans87) [@FeikoJoosten](https://github.com/FeikoJoosten) [@sampathBlam](https://github.com/sampathBlam) ### Adds features to improve your privacy - [x] [Adds option to change server to a custom](https://github.com/getferdi/ferdi/wiki/Custom-Server) [ferdi-server](https://github.com/getferdi/server) - [x] Adds option to use Ferdi without an account ([#5](https://github.com/getferdi/ferdi/issues/5)) - [x] Uses the Ferdi API instead of Franz's servers - [x] Adds "Private Notification"-Mode, that hides message content from notifications ([franz#879](https://github.com/meetfranz/franz/issues/879)) - [x] Adds Password Lock feature to keep your messages protected ([#41](https://github.com/getferdi/ferdi/issues/41), [franz#810](https://github.com/meetfranz/franz/issues/810), [franz#950](https://github.com/meetfranz/franz/issues/950), [franz#1430](https://github.com/meetfranz/franz/issues/1430)) - [x] Adds support for unlocking with Touch ID ([#367](https://github.com/getferdi/ferdi/issues/367)) - [x] Adds inactivity lock that automatically locks Ferdi after a specified amount of time ([#179](https://github.com/getferdi/ferdi/issues/179)) - [x] Adds local [recipe repository](https://github.com/getferdi/recipes) that removes the need of downloading recipes from a remote server ### Adds features to improve your experience using Ferdi - [x] Adds Universal Dark Mode via the [DarkReader extension](https://github.com/darkreader/darkreader) ([#71](https://github.com/getferdi/ferdi/issues/71)) - [x] Adds Dark Reader settings ([#531](https://github.com/getferdi/ferdi/issues/531), [#568](https://github.com/getferdi/ferdi/issues/568)), πŸ’– [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87) - [x] Adds adaptable Dark Mode that will respect the system's Dark Mode setting ([#173](https://github.com/getferdi/ferdi/issues/173), [#548](https://github.com/getferdi/ferdi/issues/548) (πŸ’– [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87))) - [x] Adds a hotkey to quickly toggle darkmode ([#530](https://github.com/getferdi/ferdi/issues/530), [#537](https://github.com/getferdi/ferdi/issues/537)), πŸ’– [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87) - [x] Adds an option to start Ferdi minimized ([#490](https://github.com/getferdi/ferdi/issues/490), [#534](https://github.com/getferdi/ferdi/issues/534)) - [x] Adds ability to change the services icons size and sidebar width ([#153](https://github.com/getferdi/ferdi/issues/153)) - [x] Adds an option to auto-hide the menubar ([#7](https://github.com/getferdi/ferdi/issues/7), [franz#833](https://github.com/meetfranz/franz/issues/833)) - [x] Enhances system tray icon behaviour ([#307](https://github.com/getferdi/ferdi/issues/307)) - [x] Adds option to show draggable window area on macOS ([#304](https://github.com/getferdi/ferdi/issues/304), [#532](https://github.com/getferdi/ferdi/issues/532)) - [x] Adds a notification & audio toggle action to the tray context menu ([#542](https://github.com/getferdi/ferdi/issues/542)), πŸ’– [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87) - [x] Adds option to show a browser-like navigation bar on all services - [x] Adds option to change accent color - [x] Reflects your currently opened service name to the window title to improve support for Password Managers ([#213](https://github.com/getferdi/ferdi/issues/213)), πŸ’– [@gmarec](https://github.com/gmarec) - [x] Allows using SVGs for service custom icon - [x] Adds button to open darkmode.css for a service - [x] Improves "About Ferdi" screen to better display versions - [x] Improves user onboarding ([#493](https://github.com/getferdi/ferdi/issues/493)) - [x] Improves "Updates" section in settings ([#506](https://github.com/getferdi/ferdi/issues/506)), πŸ’– [@yourcontact](https://github.com/yourcontact) - [x] Improves draggable window area height for macOS ([#304](https://github.com/getferdi/ferdi/issues/304), [#479](https://github.com/getferdi/ferdi/issues/479)) - [x] Adds option to start Ferdi in system tray ([#331](https://github.com/getferdi/ferdi/issues/331)), πŸ’– [@jereksel](https://github.com/jereksel) - [x] Fixes and enhances context menu ([#357](https://github.com/getferdi/ferdi/issues/357) [#413](https://github.com/getferdi/ferdi/issues/413) [#452](https://github.com/getferdi/ferdi/issues/452) [#354](https://github.com/getferdi/ferdi/issues/354) [#227](https://github.com/getferdi/ferdi/issues/227)) - [x] Adds better support for macOS dark mode - [x] Adds option to disable reload of services after resuming Ferdi ([#442](https://github.com/getferdi/ferdi/issues/442)), πŸ’– [@n0emis](https://github.com/n0emis) - [x] Comes with a custom branding proper to Ferdi - [x] Adds better separation in settings - [x] Adds various other UI improvements - [x] Improves documentation of development so more developers can help making Ferdi even better - [x] Updates Microsoft Teams to allow Desktop Sharing ([getferdi/recipes#116](https://github.com/getferdi/recipes/issues/116)), πŸ’– [@Gautasmi](https://github.com/Gautasmi) - [x] Removes automatic reloading from WhatsApp ### Removed bugs - [x] Fixes bug that would incorrectly display unread messages count on some services (more info in [7566ccd](https://github.com/getferdi/ferdi/commit/7566ccd)) - [x] Fixes zooming - [x] Fixes login problems in Google services - [x] Fixes missing Slack services custom icons ([#290](https://github.com/getferdi/ferdi/issues/290)) - [x] Fixes bug that marked valid domains as invalid ([#276](https://github.com/getferdi/ferdi/issues/276)) - [x] Fixes microphone/camera access on some versions of macOS ([#193](https://github.com/getferdi/ferdi/issues/193)) - [x] Fixes cache clearing not working in Windows 10 ([#541](https://github.com/getferdi/ferdi/issues/541), [#544](https://github.com/getferdi/ferdi/issues/544)), πŸ’– [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87) - [x] Fixes Home button in navigation bar not correctly navigating ([#571](https://github.com/getferdi/ferdi/issues/571), [#573](https://github.com/getferdi/ferdi/issues/573)), πŸ’– [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87) - [x] Fixes notifications for various services, πŸ’– [@FeikoJoosten](https://github.com/FeikoJoosten) - [x] Refocuses Webview only for active service ([#610](https://github.com/getferdi/ferdi/issues/610)), πŸ’– [@Room4O4](https://github.com/Room4O4) & [@mahadevans87](https://github.com/mahadevans87) ### Adds new platforms - [x] Adds portable version for Windows so you can use Ferdi without even installing it, πŸ’– [@Makazzz](https://github.com/Makazzz) - [x] Adds Arch Linux AUR packages, πŸ’– [@AGCaesar](https://github.com/AGCaesar) - [x] Adds Ferdi as a Flatpak on Flathub ([#323](https://github.com/getferdi/ferdi/issues/323)), πŸ’– [@lhw](https://github.com/lhw) ### Adds internal changes - [x] Upgrades to Electron 12.0.6 - [x] Switches to [`electron-spellchecker`](https://github.com/electron-userland/electron-spellchecker) to improve application size - [x] Minifies build files to improve app size - [x] Adds "npm run prepare-code" command for development to lint and beautify code - [x] Adds "npm run link-readme" command to automatically add links to issues and users inside README.md - [x] Fixes incorrect body closing tag ([#330](https://github.com/getferdi/ferdi/issues/330)), πŸ’– [@jereksel](https://github.com/jereksel) - [x] Uses CrowdIn to improve i18n - [x] Adds retry commands to flaky build steps ([#498](https://github.com/getferdi/ferdi/issues/498)) - [x] Runs utility scripts pre-commit instead of pre-push ([#515](https://github.com/getferdi/ferdi/issues/515)) > Thanks to all our [contributors](#contributors-) who helped realize all these amazing features! πŸ’– ## Development ### Install OS dependencies #### Node.js Please make sure you are running the exact node version used by the developers/contributors as specified in the [nvmrc file](./.nvmrc) #### Git The version [2.23.0](https://github.com/git-for-windows/git/releases/tag/v2.23.0.windows.1) for Git is working fine for development. You can then use the console from Git to do the development procedure. #### Debian/Ubuntu ```bash $ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev ``` #### Fedora ```bash $ dnf install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel ``` #### Windows Please make sure you run this command as an administrator: ```bash $ npm install --global windows-build-tools --vs2015 ``` ### Clone repository with submodule ```bash $ git clone https://github.com/getferdi/ferdi.git $ cd ferdi $ git submodule update --init --recursive ``` It is important you execute the last command to get the required submodules (recipes, server). ### Local caching of dependencies Set these env vars into your profile (or if you use [direnv](https://direnv.net/), you can manage them via the respective `.envrc` file) ```bash export ELECTRON_CACHE=$HOME/.cache/electron export ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder ``` ### Install dependencies Run the following command to install all dependencies, and link sibling modules with Ferdi. ```bash $ npx lerna bootstrap ``` If you previously ran `npm install` it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. If you encounter the `gyp: No Xcode or CLT version` error on macOS at this step, please have a look [here](https://medium.com/flawless-app-stories/gyp-no-xcode-or-clt-version-detected-macos-catalina-anansewaa-38b536389e8d). ### Fix native modules to match current electron node version ```bash $ npm run rebuild ``` ### Package recipe repository Ferdi requires its recipes to be packaged before it can use it. When running Ferdi as a development instance, you'll need to package the local recipes before you can create any services inside Ferdi. ```bash $ cd recipes $ npm install && npm run package ``` ### Using Docker to build a package ```bash $ docker build -t ferdi-package . $ docker run -v tmp-out:/ferdi-out -it ferdi-package sh ``` The above will place all the built artifacts into the `/ferdi` folder within the image. If you want to copy them outside of the image, simply mount a volume into a different location, and copy all files from `/ferdi` into the mounted folder (`/ferdi-out` in the 2nd example command above). ### Start development app Run these two commands **simultaneously** in different terminals: ```bash $ npm run dev $ DEBUG=Ferdi:* npm run start ``` Optionally, you can run both commands in one terminal with [misty](https://github.com/adlk/misty) (see [misty.yml](https://github.com/getferdi/ferdi/blob/develop/misty.yml)): ```bash $ DEBUG=Ferdi:* npx misty ``` Note: please prefer [`debug()`](https://github.com/visionmedia/debug) over `console.log()`. ### Packaging ```bash $ npm run build ``` Assets will be available in the `out` folder. ### Release Create a new [draft release](https://github.com/getferdi/ferdi/releases/new) that targets the `release` branch, then: ```bash $ git checkout develop && git pull $ git checkout release $ git submodule update --remote --force $ git commit -am "Update submodules" $ git merge --no-ff develop $ git push ``` Once the draft release assets are uploaded (13 assets), publish the release. The last commit of the `release` branch will be tagged. You can then merge `release` into `master` and back into `develop` if needed. #### Nightly releases Nightly releases are automaticly triggered every day ([details](https://github.com/getferdi/ferdi/pull/990)) and available in [getferdi/nightlies](https://github.com/getferdi/nightlies/releases). Maintainers still need to manually publish the draft releases as pre-releases for now. ## Contributors ✨ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

Bennett

πŸ’» 🎨 πŸ“– πŸ€” 🌍 πŸ’‘ πŸ› πŸ–‹ πŸš‡ πŸ““ πŸ’¬ πŸ“† πŸ‘€

Amine Mouafik

πŸ’» 🎨 πŸ“– πŸ€” πŸ› πŸ–‹ πŸš‡ πŸ““ πŸ’¬ πŸ“† πŸ‘€ 🚧 πŸ“¦ πŸ” πŸ“ 🌍

Stefan Malzner

πŸ’» πŸ–‹ 🎨 πŸ“– πŸ€” πŸš‡ πŸ“† ⚠️ 🌍

Makazzz

πŸ› πŸ’» 🌍 πŸ–‹ πŸ“– πŸ“¦

ZeroCool

πŸ’» πŸ€”

rseitbekov

πŸ’»

Peter Bittner

πŸ€” πŸ›

Justus Saul

πŸ› πŸ€”

igreil

πŸ€”

Marco Lopes

πŸ€”

dayzlun

πŸ›

Tobias GΓΌnther

πŸ€”

AGCaesar

πŸ“¦

xthursdayx

πŸ’» πŸ“– πŸš‡ πŸ“¦

Gaboris

πŸ’¬ πŸ›

Ce

πŸ›

Stanislav N.

πŸ›

Patrick Curl

πŸ€”

Benjamin Staneck

🎨

ammarmalhas

πŸ› πŸ›‘οΈ

Steliyan Stoyanov

πŸ’» πŸ€”

Bror Winther

πŸ“–

Felix W. Dekker

πŸ“–

Sauceee

🎨

Lennart Weller

πŸ“¦

Andrzej Ressel

πŸ’»

Daniel Peukert

πŸ’»

Ali M. Shiple

🌍

elviseras

🌍

J370

🌍

Koen

🌍

Leandro Gehlen

🌍

Matthieu42

🌍

Nikita Bibanaev

🌍

Tatjana1998

🌍

tinect

🌍

Wonsup Yoon

🌍

zutt

🌍

n0emis

πŸ’» 🌍

gmarec

πŸ’»

127oo1

🌍

ChTBoner

🌍

Johan Engstrand

🌍

Marouane R

πŸ’»

Roman

πŸ’» πŸ€”

Mahadevan Sreenivasan

πŸ’» πŸ€” πŸ‘€ πŸ› πŸ“– πŸ““

Jake Lee

πŸ–‹

Sampath Kumar Krishnan

πŸ’» πŸ‘€ πŸ€” πŸ› πŸ“– πŸ““

saruwman

πŸ“– πŸ’»

dorukkarinca

πŸ›

Gautam Singh

πŸ’»

Feiko Joosten

πŸ’»

2bdelghafour

🌍

Abderrahim Tantaoui

🌍

AndiLeni

🌍

Bruno Almada

🌍

Catarino Gonçalo

🌍

Edilson Alzemand Sigmaringa Junior

🌍

MAT-OUT

🌍

mazzo98

🌍

paprika-naught-tiffin-flyspeck

🌍

Patrick Valle

🌍

peq42_

🌍

Pumbinha

🌍

Serhiy Dmytryshyn

🌍

SMile61

🌍

tinect

🌍

gega7

πŸ›

tristanplouz

πŸ’» πŸ€”

Danny Qiu

πŸ’» πŸ›

Youssef Belyazidi

πŸ’»

Gabriel Speckhahn

πŸ“¦

Nadiia Ridko

πŸ’»

Jan Hohner

πŸ““

KristΓ³f Marussy

πŸ’» 🚧 πŸ‘€

Juan Mora

πŸ’»

Francisco Marques

πŸ’»

Curtis Carter

πŸ“¦

γ‚«γƒ―γƒͺγƒŸδΊΊε½’

πŸ“–

1mm0rt41PC

πŸ’»

MichaΕ‚ Kostewicz

πŸ’»

Yoga Setiawan

πŸ’» πŸ“¦

Moshe Gross

πŸ’»

Stephan Rumswinkel

πŸ’»

Vijay Raghavan Aravamudhan

🚧 πŸ“– πŸ’» πŸ§‘β€πŸ« πŸ‘€ πŸš‡
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! ## Backers via OpenCollective Mention to the individuals backing us via [GitHub Sponsors](https://github.com/sponsors/getferdi) as well. ## Sponsors via OpenCollective ## Other Sponsors