• This repository has been archived on 24/Feb/2021
  • Stars
    star
    249
  • Rank 162,987 (Top 4 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created about 9 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Zulip legacy desktop app

Zulip legacy desktop app

The legacy Zulip desktop app is a C++ application written with the Qt toolkit. It is a lightweight wrapper around a Webkit web view: it loads the zulip webapp as a single page full-screen webpage. The desktop app provides some native integrations: tray icon and Dock support, notifications, and more.

It is deprecated in favor of the new electron implementation.

Dependencies

  • cmake >= 2.10
  • Qt4 OR Qt5
  • qjson

Linux

  • Qt4 with Phonon

OS X

  • Sparkle.framework
  • Growl.framework (both should be installed to /Library/Frameworks)

Windows

  • NSIS

Installation

mkdir build
cd build
cmake ..
make

To build with Qt5, pass -DBUILD_WITH_QT5=On to cmake.

Use With Custom Servers

The desktop client accepts the following switches:

--debug                          | Log debug info
--site https://yourdomain.com    | Connect to a custom domain
--allow-insecure                 | Don't verify SSL certificates

To use with your own domain, start the desktop client using the --site option.

Architecture

Though the desktop app is written in C++ using the Qt toolkit, the Mac version of the desktop app does not use the QtWebkit included with Qt: it instead uses a native Cocoa WebView that is embedded inside the main Qt app with a QMacCocoaViewContainer bridge.

The HWebView class provides an abstraction around the platforms-specific pieces that comprise this web view: on Mac, HWebView_mac.mm is the Objective-C++ file that integrate with the native Cocoa webview. On Windows and Linux, HWebView.cpp uses QtWebkit to render the display.

Building releases

OS X

On OS X we can generate a packaged .dmg with a bundled Zulip Desktop.app.

Run ./admin/mac/make_package.sh CODESIGN_NAME ZULIP_VERSION where:

  • CODESIGN_NAME is the name of the developer ID that should be used to codesign the resulting .app
  • ZULIP_VERSION is the version string you want for this build of Zulip.

Sparkle

Our OS X app uses Sparkle as an auto-updating mechanism. Sparkle is configured as an RSS feed on our server that the desktop app checks daily---if there is a new release in the RSS feed, Sparkle will prompt the user to upgrade, and if the user confirms it will automatically download, install, and restart the Zulip app.

The sparkle RSS feeds and Changelogs are configured in the sparkle puppet files in the main zulip server repository. The make-package.sh build script above will also output the Sparkle codesign signature that should be included in the Sparkle RSS file.

Windows

This requires a MSVC build toolchain and the Zulip dependencies built with the same version of MSVC. The windows build requires Qt5.

Linux

See your favorite distribution package management system for how to distribute a binary Zulip package on linux.

Debugging

Linux / Windows

It is possible to attach a web inspector to the QtWebkit page that is used in the Linux/Windows desktop app. Here are the steps:

  1. Run zulip with zulip --debug
  2. Download and extract http://files.lfranchi.com/QtTestBrowser.tar.bz2 (the version of webkit used to connect to the remote developer tools must be the same as the version of webkit in zulip)
  3. In the extracted folder, run qmake && make
  4. Run the webkit browser with bin/QtTestBrowser
  5. Navigate to localhost:8888 in your test browser

Mac

The Cocoa WebView in the Mac app natively supports opening the Safari web inspector.

  1. Run Zulip.app/Contents/MacOS/Zulip --debug
  2. Right-click on an element on the page and select "Inspect Element"

More Repositories

1

zulip

Zulip server and web application. Open-source team chat that helps teams stay productive and focused.
Python
21,511
star
2

zulip-mobile

Zulip mobile apps for Android and iOS.
JavaScript
1,285
star
3

zulip-desktop

Zulip Desktop client for Mac, Windows and Linux.
TypeScript
846
star
4

zulip-ios-legacy

Zulip legacy iOS app
Objective-C
682
star
5

zulip-terminal

Official Zulip terminal client.
Python
651
star
6

docker-zulip

Container configurations, images, and examples for Zulip.
Shell
574
star
7

zulip-android-legacy

Legacy Zulip Android app
Java
407
star
8

python-zulip-api

Python library for the Zulip API.
Python
358
star
9

zulip-flutter

Future Zulip client using Flutter
Dart
174
star
10

zulip-electron

Frozen/legacy project for Zulip desktop app; the current repository is zulip-desktop
JavaScript
104
star
11

zulipbot

GitHub workflow-optimizing bot by @zulip
JavaScript
84
star
12

zulip-js

Javascript library to access the Zulip API
JavaScript
76
star
13

zulip-archive

Generate a static HTML archive of messages in any combination of streams in a Zulip organization.
Python
73
star
14

zulip.github.io

Legacy zulip.org website. No longer used.
HTML
51
star
15

zulip-gci

GCI project category descriptions
Python
41
star
16

github-actions-zulip

A collection of GitHub Actions to interact with Zulip.
TypeScript
24
star
17

fakeldap

A fake ldap implementation to be used in unittests.
Python
21
star
18

zulint

A lightweight linting framework designed for complex applications using a mix of third-party linters and custom rules.
Python
20
star
19

hubot-zulip

CoffeeScript
20
star
20

swift-zulip-api

A Zulip library written in Swift.
Swift
16
star
21

zulip-csharp

A C# library for the Zulip API
C#
14
star
22

zulip-redmine-plugin

Redmine plugin for Zulip notifications on issue tracker changes
Ruby
12
star
23

TinglingGit

This is a tool which helps to avoid introducing merge conflicts for open PR's in a Github repo by creating new PR's which may get merged sooner
Python
10
star
24

zulip-node

CoffeeScript
9
star
25

finbot

Python script for doing financial projections
Python
8
star
26

django-openid-auth

Python
7
star
27

zulip-gci-submissions

Student submissions for Zulip's GCI 2017 program
Python
7
star
28

trello-to-zulip

Script for mirroring a Trello organization's activity to Zulip
Python
6
star
29

phabricator-to-zulip

Publish Phabricator story feed to Zulip chat system.
PHP
6
star
30

zulip-markdown-parser

JavaScript
6
star
31

tsearch_extras

C
6
star
32

errbot-backend-zulip

Zulip backend for err.
Python
5
star
33

zulip-zapier

Zulip's Zapier integration
JavaScript
4
star
34

django-guardian

Python
3
star
35

puppet-zulip

Puppet report handler for Zulip
Ruby
3
star
36

zrequests

Staging area for extracting Zulip's has_request_variables feature.
2
star
37

truncated-django

A fork of rwbarton/django/tabbott-1.8 with upstream history removed
Python
2
star
38

zulip-dist-phantomjs

PhantomJS binaries for use with Zulip
1
star
39

zulip-dist-tsearch-extras

Binaries for tsearch_extras built for Zulip.
1
star
40

zanitizer

Tool for rewriting Git repository history to remove secrets
1
star