Code Monkey home page Code Monkey logo

wire-desktop's Introduction

Wire™

Wire logo

This repository is part of the source code of Wire. You can find more information at wire.com or by contacting [email protected].

You can find the published source code at github.com/wireapp/wire.

For licensing information, see the attached LICENSE file and the list of third-party licenses at wire.com/legal/licenses/.

If you compile the open source software that we make available from time to time to develop your own mobile, desktop or web application, and cause that application to connect to our servers for any purposes, we refer to that resulting application as an “Open Source App”. All Open Source Apps are subject to, and may only be used and/or commercialized in accordance with, the Terms of Use applicable to the Wire Application, which can be found at https://wire.com/legal/#terms. Additionally, if you choose to build an Open Source App, certain restrictions apply, as follows:

a. You agree not to change the way the Open Source App connects and interacts with our servers; b. You agree not to weaken any of the security features of the Open Source App; c. You agree not to use our servers to store data for purposes other than the intended and original functionality of the Open Source App; d. You acknowledge that you are solely responsible for any and all updates to your Open Source App.

For clarity, if you compile the open source software that we make available from time to time to develop your own mobile, desktop or web application, and do not cause that application to connect to our servers for any purposes, then that application will not be deemed an Open Source App and the foregoing will not apply to that application.

No license is granted to the Wire trademark and its associated logos, all of which will continue to be owned exclusively by Wire Swiss GmbH. Any use of the Wire trademark and/or its associated logos is expressly prohibited without the express prior written consent of Wire Swiss GmbH.

Wire Desktop

Cross platform desktop app, wrapping the wire-webapp. Based on Electron.

Prerequisites

Install Dependencies

sudo apt install git npm nodejs
npm install --global yarn

Clone

git clone https://github.com/wireapp/wire-desktop.git
cd wire-desktop
yarn

Start

yarn start

Test

yarn test

Deployment

Stage Branch Action Version
1 (Feature development) (varies) commit x.y+3 (e.g. 3.20)
2 (Nightly test automation) dev commit or squash merge from feature branch x.y+2 (e.g. 3.19)
3 (Internal release) staging merge (don't squash) from dev x.y+1 (e.g. 3.18)
4 (Production release) main merge (don't squash) from staging x.y (e.g. 3.17)

Compare Views

  1. Updates from "dev" to "staging" (changelog): https://github.com/wireapp/wire-desktop/compare/staging...dev
  2. Updates from "staging" to "main" (changelog): https://github.com/wireapp/wire-desktop/compare/main...staging

Tasks

# Build for macOS
yarn build:macos

# Build for Windows
yarn build:win

# Build for Linux
yarn build:linux

Other Linux targets

If you would like to build for another Linux target, run the following command:

export LINUX_TARGET=<target>
yarn build:linux

Replace <target> with your desired target (e.g. rpm). Have a look at the documentation for electron-builder for the available targets. Multiple targets can be combined by comma separation (e.g. rpm,deb). Note that we cannot offer support for uncommon targets.

Furthermore, you can disable asar packaging (not recommended, but e.g. needed for target dir) by setting ENABLE_ASAR="false" before building. Example:

export ENABLE_ASAR="false"
yarn build:linux

Troubleshooting

If you are having troubles building Wire for Desktop, then our troubleshooting page might be of help.

Translations

All Wire translations are crowdsourced via Crowdin.

Install wire-desktop under Linux

You can of course use the webapp in your browser, but if you prefer to install wire-desktop, continue reading here:

https://github.com/wireapp/wire-desktop/wiki/How-to-install-Wire-for-Desktop-on-Linux

wire-desktop's People

Contributors

andylnd avatar arjita-mitra avatar atomrc avatar aweiss-dev avatar bennycode avatar comawill avatar conoria avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar elland avatar ffflorian avatar fisx avatar flokli avatar franziskuskiefer avatar gabmar avatar github-actions[bot] avatar greenkeeper[bot] avatar gregor avatar herrmannplatz avatar lipis avatar maximbaz avatar mythsunwind avatar otto-the-bot avatar patrykbunix avatar phoenixhdd avatar thisisamir98 avatar tlebon avatar v-gira avatar yserz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wire-desktop's Issues

'Places' uses wrong path on Linux

I know Linux desktop support is still experimental, but I've been using it with great success for a while now. However, I ran into an issue that when selecting a background, or a file or picture to send in a conversation, when selecting a location from 'Places' (such as Pictures), the path shown is /root/Pictures, which is wrong. It should be /home/Pictures.
Using the same functionality from the browser works as intended.

wire open file

Desktop app as insecure, as a web page. Serve code from local files, especially crypto.

Context

A whole of app code, together with crypto parts, is loaded via electron/main.js

ipcMain.once('load-webapp', function(event, online) {
  enteredWebapp = true;
  if (baseURL.includes('?')) {
    baseURL += '&hl=' + locale.getCurrent();
  } else {
    baseURL += '?hl=' + locale.getCurrent();
  }
  main.loadURL(baseURL);
});

where baseURL points to wire's server, from where everything is loaded. All UI parts, all of crypto, everything.

This way all of security aspects are totally equivalent to those of a web page.
For example, when wire's server is compromised, and it starts to serve js files that also steal keys/passes, all desktop applications are compromised immediately, because they rely for key functionality on code, served from a web server.

This is a security problem.

Possible solution

Keep all web assets in a local directory.
Do not load it every time from a browser.

It can be as simple as modifying build/pack process.
For example, require wire-webapp folder to be nearby, trigger build in it, then copy assets into electron folder here, and trigger existing build process here.

In time, you may leverage this by injecting native-code backed crypto functions, speeding things up, turning a security benefit into a usability one.

Feature request: Add option to sign out?

Hey guys, I tried your new app for Ubuntu and it looks nice and promising, call quality is great, screen sharing quality not yet tested, however there is no way to sign out and there are no any additional settings availible for Linux (They are availible on Web version though, so it would be nice to see that!)

Feature suggestion: Private/Work groups or account(s).

Similar to what Android has with different users, but in a single (or more) account(s).

This would make it perfect to separate work-life with private-life.

You could be able to set auto-online/offline per group so that when you get off work you will be online to your private contacts and when you are on work, you will be online to colleagues but offline to friends.

Calling to/from Windows 7 doesn't connect.

Tried with both wire-desktop and Chrome (52)

Since wire use WebRTC, ports should need to be open - So what can cause this?

Is it possible to debug connection issues?

EDIT: Sometimes it connects, but the Windows 7 machine cannot send voice.

Camera not turned off on OS X when switching to audio call

I was doing a video call on my Macbook Pro and when we switched to audio only, the camera was left on as indicated by the green light. My friend on the other end experienced the same behavior. The cameras weren't turned off until we ended the call. We are both using version 2.10.2652 of Wire on OS X.

Be able to make a broadcast list

It would be interesting to make a broadcast sending.
For exemple, when creating a group discussion, choosing (without being able to change it) if this is a regular group discussion or a broadcast list.

Exemple: create a broadcast list with 5 contacts. Write a message and Wire sends 5 messages, one to each one. If one reply, a new discussion is made accordingly, one to one.

Linux starts in full screen

Hi folks, I know you are not officially supporting Linux at the moment, but I figured I'd put this on your radar anyway. When the app is built on Linux, the login screen starts in a window on first run. However, subsequent runs of the app will launch in full-screen mode with no menu bar, and no way of returning to windowed mode. I'm happy to try and troubleshoot.

On an unrelated note, I'm maintaining an AUR PKGBUILD over here: https://aur.archlinux.org/packages/wire-desktop/

BUG: The app on OS X shows a scroll bar on a narrow window

Short description

When I have resized the app to a narrow window the app shows a scroll bar on the bottom and I can't scroll anymore.

Behavior:

The app is opened on a full screen window, then I resize the app to the narrowest size. Than I can't scroll in the app an it has a vertical scrollbar. (see the image for the picture of the scrollbar)

Expected behavior

I expect that the app can be resized to the small window and will work correctly. So I can scroll.

No (native) tray icon

Would it be possible to add a tray icon to the app ? Something we can (optionally) close to... ?

Ability disable message preview in notifications - Feature request

Maybe I'm overlooking this, but iOS has this feature and desktop doesn't.

My concerns:

  • My recent messages are plain text available to the system?
  • Are messages sent over Apple push notification platform?
  • I want to be notified of messages, but I don't want them to be visible (when I'm for example pairing on my computer.)

Do you accept PRs?

Wire can't reconnect after OSX has been to sleep.

If you put OSX to sleep for a while (until the OS goes into proper sleep mode), then wake it up, Wire is disconnected and fails to reconnect. Need to kill Wire and relaunch.

Latest Macbook with OSX El Capitan 10.11.6, latest Wire Desktop (2.10.2652)

(I'll try test some other OSX devices we have to try narrow down if it's just this version of OSX or Wire in general)

Provide an AppImage for Linux

AppImage is a bundling format for Linux that lets users download one single file, set the executable bit and run the application (here: Wire). AppImage is entirely distribution-agnostic and requires no special runtime infrastructure on the target system(s). This means that the user can run the application on almost any recent Linux distribution.

This shows how to generate the AppImage:
https://github.com/probonopd/AppImages/blob/master/recipes/wire/Recipe

The resulting AppImage can be found here:
Download

Just download, set the executable bit (e.g., chmod a+x), and run!

Feature request: alias of a contact

The contacts in my list show with their user names and sometimes I would like to assign them some different name with which they would appear in my contact list.

Thanks for your efforts!

Looking for help making .deb packages

Hi, I've been trying to package up Debian packages using Docker running an Ubuntu image. I can compile packages ok, but when I install and try to run them under a virtual machine, I get the following error:

./Wire
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Cannot find module 'minimist'
    at Module._resolveFilename (module.js:455:15)
    at Function.Module._resolveFilename (/home/conor/Wire-linux-x64/resources/electron.asar/common/reset-search-paths.js:35:12)
    at Function.Module._load (module.js:403:25)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/conor/Wire-linux-x64/resources/app.asar/main.js:25:18)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)

I also tried running the build commands on Ubuntu and tarballing the /build directory. I brought these files over to my Manjaro install, but unfortunately the ./Wire command gives the same error. I think that something is missing in my build script.

I am almost certain that something is missing in my build environment. To test this, I copied some Arch packages that I had made on Docker using my manjaro-base image, I extracted them on Ubuntu in a virtual machine, and wire could run fine from those builds.

This isn't an issue with Wire as such, but there might be a dependency or something missing that should be checked for in the code. My tests are over on Gitlab. The CI is configured to run this build script.

Wire Helper idle cpu load on OS X

Hi,

when i run the desktop Wire.app on OS X (10.11.6) it starts a "Wire Helper". This is consuming about 15% CPU even if Wire is idle. That's definitely to much for an idle application.

Wire on App store doesn't update.

After running the update - Wire doesn't restart and if i do a manual restart of the App, it's still the previous version (2.9) and not 2.10.

Feature Request: Send images from clipboard

In the Wire Desktop App I'd like to send pictures to my contacts by pasting them into the chat window.

  • Telegram Windows Desktop Client has that feature
    • in telegram you can even tell it if you want to send it compressed or uncompressed
  • HipChat Desktop Client has this feature as well

Use case for me:
On Windows 10 I use greenshot (http://getgreenshot.org/) a lot to take screenshots of small areas of my desktop and send it to my contacts, because I use that a lot, at least 5 times every day or more, I don't want to save every file on my computer. In greenshot i can choose to just save the screenshot to clipboard, which I do and then paste it to a chat to send it to a one of my contacts.

Feature request: Small/tiny sidebar with icons.

Similar to what Facebook Messenger and Skype has, where you can have a large chat area and only icons for the contacts on the left side.

That's basically what you get when you click "contacts" at the bottom left, but then when you open a contact the icons becomes name texts instead.

I'm sure not everyone agrees with these, so it should be optional.
Shouldn't be too hard to make the side-bar resizable?

Linux version reports as "Wire for Windows".

After installing the Linux app, a "Wire for Windows" showed up in my devices list. Pretty sure this was the Linux app, but since I couldn't find a way to view the device ID on the Linux client either....

FreeBSD support?

Will this run on FreeBSD?

BSDs lack IM messenger services, perhaps Wire could be the first to support them?
I volunteer to help in case testing is required. :)

video: show always on top video when app is in the background

Many other video chat clients support small always on top floating windows of the remote person when doing other things. This is great for playing video games or watching a movie with another person.

Would require a tighter integration with https://github.com/wireapp/wire-webapp.

Frameless window docs
https://github.com/electron/electron/blob/master/docs/api/frameless-window.md

Always on top
https://github.com/electron/electron/blob/master/docs/api/browser-window.md#winsetalwaysontopflag

Focus events
https://github.com/electron/electron/blob/master/docs/api/browser-window.md#event-blur

Prevent Wire from running more than one instance

Make please setup: To launch no more than one copy of the program.
For example. I use Linux and if Wire is already launched, and I click on an icon the program twice (not in a tray), then one more copy of the program is launched. It is always necessary to go to a tray and from there to tear the Cryptocat window. To tear a window from Dock or from a desktop there is no opportunity.
Thanks

local cache encryption

When you make use of the user-search feature of the desktop client, f.i. enter some letters to get some suggestions, all the usernames and more important their user-pictures are loaded.
These user-pictures are cached in %appdata%/wire/cache and viewable for everyone who has access to it.

Now, as a user, you don't have any control over other users pics. So just after randomly searching for users in the desktop client I got all kinds of images in this folder: from cats, over mountains to more unpleasant pics like genitals and gore images. When there is no filtering of sensitive images, you can imagine that their will be someday some questionable images on your harddrive probably without even knowing it. This could be at least a problem when an adversary is going to analyse your hard drive.

So for the sake of security, is it really necessary to leave the image-cache files unencrypted on hd?

or in other words, should it belong to the user to take care of this (fumble with encrypted containers and other solutions) or should the app take care of this itself?

Notifications not showing if Wire is minimised.

Our client's that try to use Wire keep missing messages and getting REALLY annoyed.

I think it should always show a notification, else you cannot rely on it.

All of them use the latest version of Wire and Windows 7/10.

Custom installation Directory / Multiple Instances

Would it be possible to set a custom installation dir?

I wasn't asked while installing the desktop client where to install the app. It's just putting everything to %appdata%\wire and
%localappdata%\wire (in production version)

First, as a desktop user, you're used to get asked where to install a program to.
Second, there are many reasons why you want to choose a different location, f.i.: hard drive space, ssd vs hd space, custom arrangements of program locations and backup processes, etc.

And if you think about that a bit further, you might want to have 2 wire accounts running simultaneously on your desktop, requireing a second instance of the wire desktop client.
I'm just describing an example:
one desktop client with a private account for family and friends and a second account running in another wire desktop client instance simultaneously for business contacts only.

You can't run 2 instances of the wire desktop client simultaneously at the moment, because they all use the same installation directory %appdata%/wire (and probably for a bunch of other reasons: like webcam/mic share, multiple process support, etc.)

Tox (µtox/qtox) resolved this issue somehow and it'd be wonderful to have this feature in wire too!

What are the chances that we get a feature like that?

Max 15mb for sending files.

This doesn't seem to be a limitation of WebRTC since Webtorrent handles files up to 500Mb just fine.

Do you expect to increase this soon?

request : extra wire-trayicon.svg

I have been using your app on Ipad and Mac (kudos - very good image and sound)
And now I am trying out linux.

As I create also icons for linux, I have a question.

As you can see in the picture I have your white icon in the panel on linux mint 18 cinnamon.

Could you consider making two icons.

  • One for the application - exists now - and is called wire.png - theming works
  • and one for the tray. Mostly called wire-trayicon.png. - how to change this one?

When we have both of them, we can theme our linux desktop the way we like. One icon that differs from all other icons will break the theme.

wire

Use PNG as tray icon under Linux

I've just tried to build the desktop app for Linux, but it crashes because it can't set the .ico file as tray icon. Replacing it with a PNG file works.

Can't log in on Ubuntu 16.04

Steps to reproduce (or at least this is what happened to me).

  • Downloaded the app from wire.com/download
  • Installed it
  • Launched it
  • Sent and received a few messages. Everything worked fine
  • Closed the app by clicking on the "X"
  • Now when I open the app I am not logged in, and it doesn't let me log in either. Says "problem with the connection" even if the connection is fine.
    I don't see a way to get a debug log

webanalytics.localytics.com

Hello, can anyone explain what these GIFs are used for and their importance to the new Linux desktop app?
wl

multiple instances of wire running

problem with the @wire app in (win7 64 though not sure if win variant specific) basically when you open processes window it seems to after a few hours of running have about 5 or 6 wire instances running

Add offline support

The Atom desktop app cannot work without network on Windows.

Expected: be able to browse previous conversations and so on. Even be able to send offline messages (see wireapp/wire-ios#197)

Contact discovery privacy

When looking for contact, one can browse the directory and get profile picture of any user.

It would be better to not display the profile picture in the search menu and display only when people are connected.

"Production" build for Linux

With the Wire Desktop app really coming into its own on Linux (soon it will have a tray icon! 👍) it would be really nice if we could have a production build task with an app icon and with the title "Wire" instead of "WireInternal". Again, I know you are not officially supporting Linux, but making the app a little more polished can't hurt. EDIT: Took a shot in #27.

Add support to pass in Chrome flags through Electron via cmd

We should be able to start our Electron build with parameters that can influence the builtin Chrome (like --disable-web-security).

Here are some code snippets which might help during development:

new BrowserWindow({webPreferences: {webSecurity: false}});

Source: https://github.com/electron/electron/blob/master/docs/api/browser-window.md#new-browserwindowoptions

In general we want to be able to pass every kind of key/value pair to Chrome (not just the specific web-security).

Conversation not sorted correctly

. Wire 2.10.2652 / Win7x64
Steps to repro:

  • bob sends msg to alice
  • bob receive message(answer) from alice
    (<--- all fine till here ....)
  • bob sends again a message to alice
    <--- in further conversations: from here on, bobs messages are not shown as last message! all messages get sorted above alice's messages.

i did not have this issue since last update.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.