From e4fe6efb8576839d022f674fc40e05474beac386 Mon Sep 17 00:00:00 2001 From: Karol Putra Date: Sat, 12 Sep 2020 22:00:43 +0200 Subject: [PATCH] Add DarkReader support: For both Rambox UI and Rambox Services (tabs) Added checkbox in preferences enabling dark theme globally Needs work: - add dynamic update of services when toggled (now they need to be reloaded) - toggle global dark mode with hotkey - add toggle per service (now it's global) -- and a hotkey for that too; toggle current tab -- toggle from the top, hideable menus bar or to the services row --- app/view/main/MainController.js | 7 +++++++ app/view/preferences/Preferences.js | 6 ++++++ electron/main.js | 1 + package.json | 1 + resources/js/darkreader.js | 14 ++++++++++++++ resources/js/rambox-service-api.js | 2 +- resources/languages/en.js | 2 +- 7 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 resources/js/darkreader.js diff --git a/app/view/main/MainController.js b/app/view/main/MainController.js index d3bd3d57..a20725f2 100644 --- a/app/view/main/MainController.js +++ b/app/view/main/MainController.js @@ -1,3 +1,5 @@ +const darkreader = require('darkreader'); + Ext.define('Rambox.view.main.MainController', { extend: 'Ext.app.ViewController' @@ -6,6 +8,11 @@ Ext.define('Rambox.view.main.MainController', { ,initialize: function( tabPanel ) { const config = ipc.sendSync('getConfig'); + if (config.darkreader) { + darkreader.enable(); + } else { + darkreader.disable(); + } tabPanel.setTabPosition(config.tabbar_location); tabPanel.setTabRotation(0); diff --git a/app/view/preferences/Preferences.js b/app/view/preferences/Preferences.js index 38c08e96..7ef806d4 100644 --- a/app/view/preferences/Preferences.js +++ b/app/view/preferences/Preferences.js @@ -147,6 +147,12 @@ Ext.define('Rambox.view.preferences.Preferences',{ ,boxLabel: locale['preferences[4]'] ,value: config.start_minimized } + ,{ + xtype: 'checkbox' + ,name: 'darkreader' + ,boxLabel: locale['preferences[29]'] + ,value: config.darkreader + } ,{ xtype: 'checkbox' ,name: 'hide_menu_bar' diff --git a/electron/main.js b/electron/main.js index 74ad0c5d..7ea09fd8 100644 --- a/electron/main.js +++ b/electron/main.js @@ -29,6 +29,7 @@ const config = new Config({ ,flash_frame: true ,window_close_behavior: 'keep_in_tray' ,start_minimized: false + ,darkreader: true ,systemtray_indicator: true ,master_password: false ,dont_disturb: false diff --git a/package.json b/package.json index 36d955e7..8208f552 100644 --- a/package.json +++ b/package.json @@ -209,6 +209,7 @@ "auth0-js": "9.13.2", "auto-launch-patched": "5.0.2", "crypto": "1.0.1", + "darkreader": "4.9.17", "electron-contextmenu-wrapper": "2.0.0", "electron-is-dev": "0.3.0", "electron-log": "2.2.17", diff --git a/resources/js/darkreader.js b/resources/js/darkreader.js new file mode 100644 index 00000000..ad74dfa6 --- /dev/null +++ b/resources/js/darkreader.js @@ -0,0 +1,14 @@ +const { ipcRenderer } = require('electron'); +const darkreader = require('darkreader'); +darkreader.setFetchMethod(window.fetch); + + +const getIsEnabled = () => ipcRenderer.sendSync('getConfig').darkreader; +const canEnable = () => document.readyState === 'complete' || document.readyState === 'interactive'; + +document.addEventListener('readystatechange', () => { + console.log(document.readyState) + if (canEnable()) { + getIsEnabled()? darkreader.enable(): darkreader.disable(); + } +}); \ No newline at end of file diff --git a/resources/js/rambox-service-api.js b/resources/js/rambox-service-api.js index 15e3d0ec..247c9398 100644 --- a/resources/js/rambox-service-api.js +++ b/resources/js/rambox-service-api.js @@ -1,7 +1,7 @@ /** * This file is loaded in the service web views to provide a Rambox API. */ - +require("./darkreader.js") const { ipcRenderer } = require('electron'); const { ContextMenuBuilder, ContextMenuListener } = require('electron-contextmenu-wrapper'); diff --git a/resources/languages/en.js b/resources/languages/en.js index bb21d454..913ba6c9 100644 --- a/resources/languages/en.js +++ b/resources/languages/en.js @@ -1 +1 @@ -var locale=[];locale["preferences[0]"]="Preferences";locale["preferences[1]"]="Auto-hide Menu bar";locale["preferences[2]"]="Show in Taskbar";locale["preferences[3]"]="Keep Rambox in the taskbar when closing it";locale["preferences[4]"]="Start minimized";locale["preferences[5]"]="Start automatically on system startup";locale["preferences[6]"]="Don't need to see the menu bar all the time?";locale["preferences[7]"]="To temporarily show the menu bar, just press the Alt key.";locale["app.update[0]"]="New version is available!";locale["app.update[1]"]="Download";locale["app.update[2]"]="Changelog";locale["app.update[3]"]="You are up to date!";locale["app.update[4]"]="You have the latest version of Rambox.";locale["app.about[0]"]="About Rambox";locale["app.about[1]"]="Free and Open Source messaging and emailing app that combines common web applications into one.";locale["app.about[2]"]="Version";locale["app.about[3]"]="Platform";locale["app.about[4]"]="Developed by";locale["app.main[0]"]="Add a new Service";locale["app.main[1]"]="Messaging";locale["app.main[2]"]="Email";locale["app.main[3]"]="No services found... Try another search.";locale["app.main[4]"]="Enabled Services";locale["app.main[5]"]="ALIGN";locale["app.main[6]"]="Left";locale["app.main[7]"]="Right";locale["app.main[8]"]="Item";locale["app.main[9]"]="Items";locale["app.main[10]"]="Remove all Services";locale["app.main[11]"]="Prevent notifications";locale["app.main[12]"]="Muted";locale["app.main[13]"]="Configure";locale["app.main[14]"]="Remove";locale["app.main[15]"]="No services added...";locale["app.main[16]"]="Don't Disturb";locale["app.main[17]"]="Disable notifications and sounds in all services. Perfect to be concentrated and focused.";locale["app.main[18]"]="Shortcut key";locale["app.main[19]"]="Lock Rambox";locale["app.main[20]"]="Lock this app if you will be away for a period of time.";locale["app.main[21]"]="Logout";locale["app.main[22]"]="Login";locale["app.main[23]"]="Login to save your configuration (no credentials stored) to sync with all your computers.";locale["app.main[24]"]="Powered by";locale["app.main[25]"]="Donate";locale["app.main[26]"]="with";locale["app.main[27]"]="from Argentina as an Open Source project.";locale["app.window[0]"]="Add";locale["app.window[1]"]="Edit";locale["app.window[2]"]="Name";locale["app.window[3]"]="Options";locale["app.window[4]"]="Align to Right";locale["app.window[5]"]="Show notifications";locale["app.window[6]"]="Mute all sounds";locale["app.window[7]"]="Advanced";locale["app.window[8]"]="Custom Code";locale["app.window[9]"]="read more...";locale["app.window[10]"]="Add service";locale["app.window[11]"]="team";locale["app.window[12]"]="Please confirm...";locale["app.window[13]"]="Are you sure you want to remove";locale["app.window[14]"]="Are you sure you want to remove all services?";locale["app.window[15]"]="Add Custom Service";locale["app.window[16]"]="Edit Custom Service";locale["app.window[17]"]="URL";locale["app.window[18]"]="Logo";locale["app.window[19]"]="Trust invalid authority certificates";locale["app.window[20]"]="ON";locale["app.window[21]"]="OFF";locale["app.window[22]"]="Enter a temporal password to unlock it later";locale["app.window[23]"]="Repeat the temporal password";locale["app.window[24]"]="Warning";locale["app.window[25]"]="Passwords are not the same. Please try again...";locale["app.window[26]"]="Rambox is locked";locale["app.window[27]"]="UNLOCK";locale["app.window[28]"]="Connecting...";locale["app.window[29]"]="Please wait until we get your configuration.";locale["app.window[30]"]="Import";locale["app.window[31]"]="You don't have any service saved. Do you want to import your current services?";locale["app.window[32]"]="Clear services";locale["app.window[33]"]="Do you want to remove all your current services to start over?";locale["app.window[34]"]="If no, you will be logged out.";locale["app.window[35]"]="Confirm";locale["app.window[36]"]="To import your configuration, Rambox needs to remove all your current services. Do you want to continue?";locale["app.window[37]"]="Closing your session...";locale["app.window[38]"]="Are you sure you want to logout?";locale["app.webview[0]"]="Reload";locale["app.webview[1]"]="Go Online";locale["app.webview[2]"]="Go Offline";locale["app.webview[3]"]="Toggle Developer Tools";locale["app.webview[4]"]="Loading...";locale["preferences[8]"]="Enable HiDPI support (needs to relaunch)";locale["preferences[9]"]="Flash Taskbar on new message";locale["preferences[10]"]="Bounce Dock on new message";locale["preferences[11]"]="Service bar location";locale["preferences[12]"]="Default service to display when Rambox starts";locale["preferences[13]"]="Display behaviour";locale["preferences[14]"]="Show in Taskbar";locale["preferences[15]"]="Show Tray Icon";locale["preferences[16]"]="Show in Taskbar and Tray Icon";locale["preferences[17]"]="When closing the main window";locale["preferences[18]"]="Keep in tray";locale["preferences[19]"]="Keep in tray and/or taskbar";locale["preferences[20]"]="Quit";locale["preferences[21]"]="Always on top";locale["preferences[22]"]="Show System Tray indicator on unread messages";locale["preferences[23]"]="Disable Hardware Acceleration (needs to relaunch)";locale["preferences[24]"]="Master Password - Ask for password on startup";locale["preferences[25]"]="Password";locale["preferences[26]"]="Repeat Password";locale["preferences[27]"]="Send anonymous usage statistics to help us improve Rambox (needs to relaunch)";locale["preferences[28]"]="Hide service bar labels (requires restart)";locale["button[0]"]="Ok";locale["button[1]"]="Cancel";locale["button[2]"]="Yes";locale["button[3]"]="No";locale["button[4]"]="Save";locale["main.dialog[0]"]="Certification Error";locale["main.dialog[1]"]="The service with the following URL has an invalid authority certification.";locale["main.dialog[2]"]="You have to remove the service and add it again";locale["menu.help[0]"]="Visit Rambox Website";locale["menu.help[1]"]="Report an Issue...";locale["menu.help[2]"]="Ask for Help";locale["menu.help[3]"]="Donate";locale["menu.help[4]"]="Help";locale["menu.edit[0]"]="Edit";locale["menu.edit[1]"]="Undo";locale["menu.edit[2]"]="Redo";locale["menu.edit[3]"]="Cut";locale["menu.edit[4]"]="Copy";locale["menu.edit[5]"]="Paste";locale["menu.edit[6]"]="Select All";locale["menu.view[0]"]="View";locale["menu.view[1]"]="Reload";locale["menu.view[2]"]="Toggle Full Screen";locale["menu.view[3]"]="Toggle Developer Tools";locale["menu.window[0]"]="Window";locale["menu.window[1]"]="Minimize";locale["menu.window[2]"]="Close";locale["menu.window[3]"]="Always on top";locale["menu.help[5]"]="Check for updates...";locale["menu.help[6]"]="About Rambox";locale["menu.osx[0]"]="Services";locale["menu.osx[1]"]="Hide Rambox";locale["menu.osx[2]"]="Hide Others";locale["menu.osx[3]"]="Show All";locale["menu.file[0]"]="File";locale["menu.file[1]"]="Quit Rambox";locale["tray[0]"]="Show/Hide Window";locale["tray[1]"]="Quit";locale["services[0]"]="WhatsApp is a cross-platform mobile messaging app for iPhone, BlackBerry, Android, Windows Phone and Nokia. Send text, video, images, audio for free.";locale["services[1]"]="Slack brings all your communication together in one place. It’s real-time messaging, archiving and search for modern teams.";locale["services[2]"]="Noysi is a communication tool for teams where privacy is guaranteed. With Noysi you can access all your conversations and files in seconds from anywhere and unlimited.";locale["services[3]"]="Instantly reach the people in your life for free. Messenger is just like texting, but you don't have to pay for every message.";locale["services[4]"]="Stay in touch with family and friends for free. Get international calling, free online calls and Skype for Business on desktop and mobile.";locale["services[5]"]="Hangouts bring conversations to life with photos, emoji, and even group video calls for free. Connect with friends across computers, Android, and Apple devices.";locale["services[6]"]="HipChat is hosted group chat and video chat built for teams. Supercharge real-time collaboration with persistent chat rooms, file sharing, and screen sharing.";locale["services[7]"]="Telegram is a messaging app with a focus on speed and security. It’s super-fast, simple, secure and free.";locale["services[8]"]="WeChat is a free messaging calling app that allows you to easily connect with family; friends across countries. It’s the all-in-one communications app for free text (SMS/MMS), voice; video calls, moments, photo sharing, and games.";locale["services[9]"]="Gmail, Google's free email service, is one of the world's most popular email programs.";locale["services[10]"]="Inbox by Gmail is a new app from the Gmail team. Inbox is an organized place to get things done and get back to what matters. Bundles keep emails organized.";locale["services[11]"]="ChatWork is a group chat app for business. Secure messaging, video chat, task management and file sharing. Real-time communication and increase productivity for teams.";locale["services[12]"]="GroupMe brings group text messaging to every phone. Group message with the people in your life that are important to you.";locale["services[13]"]="The world's most advanced team chat meets enterprise search.";locale["services[14]"]="Gitter is built on top of GitHub and is tightly integrated with your organizations, repositories, issues and activity.";locale["services[15]"]="Steam is a digital distribution platform developed by Valve Corporation offering digital rights management (DRM), multiplayer gaming and social networking services.";locale["services[16]"]="Step up your game with a modern voice & text chat app. Crystal clear voice, multiple server and channel support, mobile apps, and more.";locale["services[17]"]="Take control. Do more. Outlook is the free email and calendar service that helps you stay on top of what matters and get things done.";locale["services[18]"]="Outlook for Business";locale["services[19]"]="Web-based email service offered by the American company Yahoo!. The service is free for personal use, and paid-for business email plans are available.";locale["services[20]"]="Free and web-based encrypted email service founded in 2013 at the CERN research facility. ProtonMail is designed as a zero-knowledge system, using client-side encryption to protect emails and user data before they are sent to ProtonMail servers, in contrast to other common webmail services such as Gmail and Hotmail.";locale["services[21]"]="Tutanota is an open-source end-to-end encrypted email software and freemium hosted secure email service based on this software.";locale["services[22]"]="versions of service. Hushmail uses OpenPGP standards and the source is available for download.";locale["services[23]"]="Collaborative email and threaded group chat for productive teams. A single app for all your internal and external communication.";locale["services[24]"]="From group messages and video calls all the way to helpdesk killer features our goal is to become the number one cross-platform open source chat solution.";locale["services[25]"]="HD quality calls, private and group chats with inline photos, music and video. Also available for your phone or tablet.";locale["services[26]"]="Sync is a business chat tool that will boost productivity for your team.";locale["services[27]"]="No description...";locale["services[28]"]="Allows you to instant message with anyone on the Yahoo server. Tells you when you get mail, and gives stock quotes.";locale["services[29]"]="Voxer is a messaging app for your smartphone with live voice (like a PTT walkie talkie), text, photo and location sharing.";locale["services[30]"]="Dasher lets you say what you really want with pics, GIFs, links and more. Take a poll to find out what your friends really think of your new boo.";locale["services[31]"]="Flowdock is your team's chat with a shared inbox. Teams using Flowdock stay up-to-date, react in seconds instead of days, and never forget anything.";locale["services[32]"]="Mattermost is an open source, self-hosted Slack-alternative. As an alternative to proprietary SaaS messaging, Mattermost brings all your team communication into one place, making it searchable and accessible anywhere.";locale["services[33]"]="DingTalk is a multi-sided platform empowers small and medium-sized business to communicate effectively.";locale["services[34]"]="The mysms family of applications helps you text anywhere and enhances your messaging experience on your smartphone, tablet and computer.";locale["services[35]"]="ICQ is an open source instant messaging computer program that was first developed and popularized.";locale["services[36]"]="TweetDeck is a social media dashboard application for management of Twitter accounts.";locale["services[37]"]="Custom Service";locale["services[38]"]="Add a custom service if is not listed above.";locale["services[39]"]="Zinc is a secure communication app for mobile workers, with text, voice, video, file sharing and more.";locale["services[40]"]="Freenode, formerly known as Open Projects Network, is an IRC network used to discuss peer-directed projects.";locale["services[41]"]="Text from your computer, sync'd with your Android phone & number.";locale["services[42]"]="Free and open source webmail software for the masses, written in PHP.";locale["services[43]"]="Horde is a free and open source web-based groupware.";locale["services[44]"]="SquirrelMail is a standards-based webmail package written in PHP.";locale["services[45]"]="Ad-free business Email Hosting with a clean, minimalist interface. Integrated Calendar, Contacts, Notes, Tasks apps.";locale["services[46]"]="Zoho chat is a secure and scalable real-time communication and collaboration platform for teams to improve their productivity.";module.exports = locale; \ No newline at end of file +var locale=[];locale["preferences[0]"]="Preferences";locale["preferences[1]"]="Auto-hide Menu bar";locale["preferences[2]"]="Show in Taskbar";locale["preferences[3]"]="Keep Rambox in the taskbar when closing it";locale["preferences[4]"]="Start minimized";locale["preferences[5]"]="Start automatically on system startup";locale["preferences[6]"]="Don't need to see the menu bar all the time?";locale["preferences[7]"]="To temporarily show the menu bar, just press the Alt key.";locale["app.update[0]"]="New version is available!";locale["app.update[1]"]="Download";locale["app.update[2]"]="Changelog";locale["app.update[3]"]="You are up to date!";locale["app.update[4]"]="You have the latest version of Rambox.";locale["app.about[0]"]="About Rambox";locale["app.about[1]"]="Free and Open Source messaging and emailing app that combines common web applications into one.";locale["app.about[2]"]="Version";locale["app.about[3]"]="Platform";locale["app.about[4]"]="Developed by";locale["app.main[0]"]="Add a new Service";locale["app.main[1]"]="Messaging";locale["app.main[2]"]="Email";locale["app.main[3]"]="No services found... Try another search.";locale["app.main[4]"]="Enabled Services";locale["app.main[5]"]="ALIGN";locale["app.main[6]"]="Left";locale["app.main[7]"]="Right";locale["app.main[8]"]="Item";locale["app.main[9]"]="Items";locale["app.main[10]"]="Remove all Services";locale["app.main[11]"]="Prevent notifications";locale["app.main[12]"]="Muted";locale["app.main[13]"]="Configure";locale["app.main[14]"]="Remove";locale["app.main[15]"]="No services added...";locale["app.main[16]"]="Don't Disturb";locale["app.main[17]"]="Disable notifications and sounds in all services. Perfect to be concentrated and focused.";locale["app.main[18]"]="Shortcut key";locale["app.main[19]"]="Lock Rambox";locale["app.main[20]"]="Lock this app if you will be away for a period of time.";locale["app.main[21]"]="Logout";locale["app.main[22]"]="Login";locale["app.main[23]"]="Login to save your configuration (no credentials stored) to sync with all your computers.";locale["app.main[24]"]="Powered by";locale["app.main[25]"]="Donate";locale["app.main[26]"]="with";locale["app.main[27]"]="from Argentina as an Open Source project.";locale["app.window[0]"]="Add";locale["app.window[1]"]="Edit";locale["app.window[2]"]="Name";locale["app.window[3]"]="Options";locale["app.window[4]"]="Align to Right";locale["app.window[5]"]="Show notifications";locale["app.window[6]"]="Mute all sounds";locale["app.window[7]"]="Advanced";locale["app.window[8]"]="Custom Code";locale["app.window[9]"]="read more...";locale["app.window[10]"]="Add service";locale["app.window[11]"]="team";locale["app.window[12]"]="Please confirm...";locale["app.window[13]"]="Are you sure you want to remove";locale["app.window[14]"]="Are you sure you want to remove all services?";locale["app.window[15]"]="Add Custom Service";locale["app.window[16]"]="Edit Custom Service";locale["app.window[17]"]="URL";locale["app.window[18]"]="Logo";locale["app.window[19]"]="Trust invalid authority certificates";locale["app.window[20]"]="ON";locale["app.window[21]"]="OFF";locale["app.window[22]"]="Enter a temporal password to unlock it later";locale["app.window[23]"]="Repeat the temporal password";locale["app.window[24]"]="Warning";locale["app.window[25]"]="Passwords are not the same. Please try again...";locale["app.window[26]"]="Rambox is locked";locale["app.window[27]"]="UNLOCK";locale["app.window[28]"]="Connecting...";locale["app.window[29]"]="Please wait until we get your configuration.";locale["app.window[30]"]="Import";locale["app.window[31]"]="You don't have any service saved. Do you want to import your current services?";locale["app.window[32]"]="Clear services";locale["app.window[33]"]="Do you want to remove all your current services to start over?";locale["app.window[34]"]="If no, you will be logged out.";locale["app.window[35]"]="Confirm";locale["app.window[36]"]="To import your configuration, Rambox needs to remove all your current services. Do you want to continue?";locale["app.window[37]"]="Closing your session...";locale["app.window[38]"]="Are you sure you want to logout?";locale["app.webview[0]"]="Reload";locale["app.webview[1]"]="Go Online";locale["app.webview[2]"]="Go Offline";locale["app.webview[3]"]="Toggle Developer Tools";locale["app.webview[4]"]="Loading...";locale["preferences[8]"]="Enable HiDPI support (needs to relaunch)";locale["preferences[9]"]="Flash Taskbar on new message";locale["preferences[10]"]="Bounce Dock on new message";locale["preferences[11]"]="Service bar location";locale["preferences[12]"]="Default service to display when Rambox starts";locale["preferences[13]"]="Display behaviour";locale["preferences[14]"]="Show in Taskbar";locale["preferences[15]"]="Show Tray Icon";locale["preferences[16]"]="Show in Taskbar and Tray Icon";locale["preferences[17]"]="When closing the main window";locale["preferences[18]"]="Keep in tray";locale["preferences[19]"]="Keep in tray and/or taskbar";locale["preferences[20]"]="Quit";locale["preferences[21]"]="Always on top";locale["preferences[22]"]="Show System Tray indicator on unread messages";locale["preferences[23]"]="Disable Hardware Acceleration (needs to relaunch)";locale["preferences[24]"]="Master Password - Ask for password on startup";locale["preferences[25]"]="Password";locale["preferences[26]"]="Repeat Password";locale["preferences[27]"]="Send anonymous usage statistics to help us improve Rambox (needs to relaunch)";locale["preferences[28]"]="Hide service bar labels (requires restart)";;locale["preferences[29]"]="Enable Rambox dark theme (powered by Darkreader)";locale["button[0]"]="Ok";locale["button[1]"]="Cancel";locale["button[2]"]="Yes";locale["button[3]"]="No";locale["button[4]"]="Save";locale["main.dialog[0]"]="Certification Error";locale["main.dialog[1]"]="The service with the following URL has an invalid authority certification.";locale["main.dialog[2]"]="You have to remove the service and add it again";locale["menu.help[0]"]="Visit Rambox Website";locale["menu.help[1]"]="Report an Issue...";locale["menu.help[2]"]="Ask for Help";locale["menu.help[3]"]="Donate";locale["menu.help[4]"]="Help";locale["menu.edit[0]"]="Edit";locale["menu.edit[1]"]="Undo";locale["menu.edit[2]"]="Redo";locale["menu.edit[3]"]="Cut";locale["menu.edit[4]"]="Copy";locale["menu.edit[5]"]="Paste";locale["menu.edit[6]"]="Select All";locale["menu.view[0]"]="View";locale["menu.view[1]"]="Reload";locale["menu.view[2]"]="Toggle Full Screen";locale["menu.view[3]"]="Toggle Developer Tools";locale["menu.window[0]"]="Window";locale["menu.window[1]"]="Minimize";locale["menu.window[2]"]="Close";locale["menu.window[3]"]="Always on top";locale["menu.help[5]"]="Check for updates...";locale["menu.help[6]"]="About Rambox";locale["menu.osx[0]"]="Services";locale["menu.osx[1]"]="Hide Rambox";locale["menu.osx[2]"]="Hide Others";locale["menu.osx[3]"]="Show All";locale["menu.file[0]"]="File";locale["menu.file[1]"]="Quit Rambox";locale["tray[0]"]="Show/Hide Window";locale["tray[1]"]="Quit";locale["services[0]"]="WhatsApp is a cross-platform mobile messaging app for iPhone, BlackBerry, Android, Windows Phone and Nokia. Send text, video, images, audio for free.";locale["services[1]"]="Slack brings all your communication together in one place. It’s real-time messaging, archiving and search for modern teams.";locale["services[2]"]="Noysi is a communication tool for teams where privacy is guaranteed. With Noysi you can access all your conversations and files in seconds from anywhere and unlimited.";locale["services[3]"]="Instantly reach the people in your life for free. Messenger is just like texting, but you don't have to pay for every message.";locale["services[4]"]="Stay in touch with family and friends for free. Get international calling, free online calls and Skype for Business on desktop and mobile.";locale["services[5]"]="Hangouts bring conversations to life with photos, emoji, and even group video calls for free. Connect with friends across computers, Android, and Apple devices.";locale["services[6]"]="HipChat is hosted group chat and video chat built for teams. Supercharge real-time collaboration with persistent chat rooms, file sharing, and screen sharing.";locale["services[7]"]="Telegram is a messaging app with a focus on speed and security. It’s super-fast, simple, secure and free.";locale["services[8]"]="WeChat is a free messaging calling app that allows you to easily connect with family; friends across countries. It’s the all-in-one communications app for free text (SMS/MMS), voice; video calls, moments, photo sharing, and games.";locale["services[9]"]="Gmail, Google's free email service, is one of the world's most popular email programs.";locale["services[10]"]="Inbox by Gmail is a new app from the Gmail team. Inbox is an organized place to get things done and get back to what matters. Bundles keep emails organized.";locale["services[11]"]="ChatWork is a group chat app for business. Secure messaging, video chat, task management and file sharing. Real-time communication and increase productivity for teams.";locale["services[12]"]="GroupMe brings group text messaging to every phone. Group message with the people in your life that are important to you.";locale["services[13]"]="The world's most advanced team chat meets enterprise search.";locale["services[14]"]="Gitter is built on top of GitHub and is tightly integrated with your organizations, repositories, issues and activity.";locale["services[15]"]="Steam is a digital distribution platform developed by Valve Corporation offering digital rights management (DRM), multiplayer gaming and social networking services.";locale["services[16]"]="Step up your game with a modern voice & text chat app. Crystal clear voice, multiple server and channel support, mobile apps, and more.";locale["services[17]"]="Take control. Do more. Outlook is the free email and calendar service that helps you stay on top of what matters and get things done.";locale["services[18]"]="Outlook for Business";locale["services[19]"]="Web-based email service offered by the American company Yahoo!. The service is free for personal use, and paid-for business email plans are available.";locale["services[20]"]="Free and web-based encrypted email service founded in 2013 at the CERN research facility. ProtonMail is designed as a zero-knowledge system, using client-side encryption to protect emails and user data before they are sent to ProtonMail servers, in contrast to other common webmail services such as Gmail and Hotmail.";locale["services[21]"]="Tutanota is an open-source end-to-end encrypted email software and freemium hosted secure email service based on this software.";locale["services[22]"]="versions of service. Hushmail uses OpenPGP standards and the source is available for download.";locale["services[23]"]="Collaborative email and threaded group chat for productive teams. A single app for all your internal and external communication.";locale["services[24]"]="From group messages and video calls all the way to helpdesk killer features our goal is to become the number one cross-platform open source chat solution.";locale["services[25]"]="HD quality calls, private and group chats with inline photos, music and video. Also available for your phone or tablet.";locale["services[26]"]="Sync is a business chat tool that will boost productivity for your team.";locale["services[27]"]="No description...";locale["services[28]"]="Allows you to instant message with anyone on the Yahoo server. Tells you when you get mail, and gives stock quotes.";locale["services[29]"]="Voxer is a messaging app for your smartphone with live voice (like a PTT walkie talkie), text, photo and location sharing.";locale["services[30]"]="Dasher lets you say what you really want with pics, GIFs, links and more. Take a poll to find out what your friends really think of your new boo.";locale["services[31]"]="Flowdock is your team's chat with a shared inbox. Teams using Flowdock stay up-to-date, react in seconds instead of days, and never forget anything.";locale["services[32]"]="Mattermost is an open source, self-hosted Slack-alternative. As an alternative to proprietary SaaS messaging, Mattermost brings all your team communication into one place, making it searchable and accessible anywhere.";locale["services[33]"]="DingTalk is a multi-sided platform empowers small and medium-sized business to communicate effectively.";locale["services[34]"]="The mysms family of applications helps you text anywhere and enhances your messaging experience on your smartphone, tablet and computer.";locale["services[35]"]="ICQ is an open source instant messaging computer program that was first developed and popularized.";locale["services[36]"]="TweetDeck is a social media dashboard application for management of Twitter accounts.";locale["services[37]"]="Custom Service";locale["services[38]"]="Add a custom service if is not listed above.";locale["services[39]"]="Zinc is a secure communication app for mobile workers, with text, voice, video, file sharing and more.";locale["services[40]"]="Freenode, formerly known as Open Projects Network, is an IRC network used to discuss peer-directed projects.";locale["services[41]"]="Text from your computer, sync'd with your Android phone & number.";locale["services[42]"]="Free and open source webmail software for the masses, written in PHP.";locale["services[43]"]="Horde is a free and open source web-based groupware.";locale["services[44]"]="SquirrelMail is a standards-based webmail package written in PHP.";locale["services[45]"]="Ad-free business Email Hosting with a clean, minimalist interface. Integrated Calendar, Contacts, Notes, Tasks apps.";locale["services[46]"]="Zoho chat is a secure and scalable real-time communication and collaboration platform for teams to improve their productivity.";module.exports = locale; \ No newline at end of file