Skip to content
Snippets Groups Projects
user avatar
Stepan Salenikovich authored
This adds an icon in the notification areas (systray) by default.
The icon also has a popup menu which allows the user to show or hide
the main widow and to quit Ring.

It uses 2 systray icon implementations:
- AppIndicator from Canonical
- GtkStatusIcon from Gtk, but deprecated

A CMakeLists option is added "USE_APPINDICATOR" and is ON by default.
However this adds a dependency on appindicator3-0.1. If the option is
set to OFF or the dependency is not found then we fallback on using
GtkStatusIcon.

AppIndicator is prefered so that the status icon appears for Unity
users, as unity does not support GtkStatusIcon by default.

Additionaly, the GSettings schema has been modified slightly. The
general Ring settings menu also now says has the option "Show Ring
icon in the notification area (systray)" instead of of "Hide Ring
on close instead of quitting". This mimics other gtk app behavior,
such as Transmission. When the systray is enabled, closing the main
window will not quit Ring. When the systray is disabled closing the
main window will quit Ring so that it doesn't continue to run
withou the user being aware.

Tuleap: #370
Change-Id: I9f5c2811e135d20b0b6c81ab4a80be748f6a1be3
982b2883
History
ring-client-gnome
*****************

Ring-client-gnome is a Ring client written in GTK+3. It uses libRingClient to
communicate with the Ring daemon and for all of the underlying models and their
logic. Ideally ring-client-gnome should only contain UI related code and any
wrappers necessary for interacting with libRingClient.

Packages for Debian/Ubuntu/Fedora can be found on http://ring.cx

More info about the Ring project and the clients can be found on our Tuleap
website:
 - https://tuleap.ring.cx/projects/ring/


Requirements
==================

- Ring daemon
- libRingClient
- GTK+3 (3.10 or higher)
- Qt5 Core
- X11
- gnome-icon-theme-symbolic (certain icons are used which other themes might be missing)
- libebook1.2 / evolution-data-server (3.10 or higher)
- libnotify (optional, if you wish to receive desktop notifications of incoming calls, etc)
- gettext (optional to compile translations)

On Debian/Ubuntu these can be installed by:
    sudo apt-get install g++ cmake libgtk-3-dev qtbase5-dev libclutter-gtk-1.0-dev gnome-icon-theme-symbolic libebook1.2-dev libnotify-dev gettext

On Fedora:
    sudo yum install gcc-c++ cmake gtk3-devel qt5-qtbase-devel clutter-gtk-devel gnome-icon-theme-symbolic evolution-data-server-devel libnotify-devel gettext

The build instruction for the daemon and libRingClient can be found in their
respective repositories. See Gerrit:
 - https://gerrit-ring.savoirfairelinux.com/#/admin/projects/


Compiling
==================

In the project root dir:
    mkdir build
    cd build
    cmake ..
    make

You can then simply run ./gnome-ring from the build directory

Installing
==================

If you're building the client for use (rather than testing of packaging), it is
recommended that you install it on your system, eg: in '/usr', '/usr/local', or
'/opt', depending on your distro's preference to get full functionality such as
desktop integration. In this case you should perform a 'make install' after
building the client.


Building without installing Ring daemon and libRingClient
==================

It is possible to build ring-client-gnome without installing the deamon and
libRingClient on your system (eg: in /usr or /usr/local):

1. build the daemon
2. when building libRingClient, specify the location of the daemon lib in the
   cmake options with -DRING_BUILD_DIR=, eg:
   -DRING_BUILD_DIR=/home/user/ring/daemon/src
3. to get the proper headers, we still need to 'make install' libRingClient, but
   we don't have to install it in /usr, so just specify another location for the
   install prefix in the cmake options, eg:
   -DCMAKE_INSTALL_PREFIX=/home/user/ringinstall
4. now compile libRingClient and do 'make install', everything will be installed
   in the dir specified by the prefix
4. now we just have to point the client to the libRingClient cmake module during
   the configuration:
   -DLibRingClient_DIR=/home/user/ringinstall/lib/cmake/LibRingClient


Debugging
==================

For now, the build type of the client is "Debug" by default, however it is
useful to also have the debug symbols of libRingClient. To do this, specify this
when compiling libRingClient with '-DCMAKE_BUILD_TYPE=Debug' in the cmake
options.