messenger-gtk

Gtk+3 graphical user interfaces for GNUnet Messenger
Log | Files | Refs | Submodules | README | LICENSE

README.md (7298B)


      1 # Messenger-GTK
      2 
      3 A GTK based GUI for the Messenger service of GNUnet.
      4 
      5 [![messenger-gtk](https://snapcraft.io/messenger-gtk/badge.svg)](https://snapcraft.io/messenger-gtk)
      6 
      7 ![Overview of the application](screenshots/messenger.png "Overview of the application")
      8 
      9 ## Features
     10 
     11 Messenger-GTK is a convergent graphical messaging application using the GNUnet Messenger service. The goal is to provide private and secure communication between any group of devices.
     12 
     13 The application provides the following features:
     14 
     15  - Creating direct chats and group chats
     16  - Managing your contacts and groups
     17  - Invite contacts to a group
     18  - Sending text messages
     19  - Sending voice recordings
     20  - Sharing files privately
     21  - Deleting messages with any custom delay
     22  - Renaming, tagging or blocking contacts
     23  - Exchanging contact details physically
     24  - Verifying contact identities
     25  - Switching between different accounts
     26  - Chatting live via video or voice streaming
     27  - Sharing your screen with a selected group
     28  - Writing notes to yourself
     29 
     30 Chats will generally created as opt-in. So you can decide who may contact you directly and who does not, accepting to a direct chat. Leaving a chat is also always possible.
     31 
     32 ## Build & Installation
     33 
     34 The following dependencies are required and need to be installed to build the application:
     35 
     36  - [gnunet](https://git.gnunet.org/gnunet.git/): For using general GNUnet datatypes
     37  - [libgnunetchat](https://git.gnunet.org/libgnunetchat.git/): For chatting via GNUnet messenger
     38  - [gtk3](https://gitlab.gnome.org/GNOME/gtk): For the general UI design
     39  - [libhandy](https://gitlab.gnome.org/GNOME/libhandy): For responsive UI widgets
     40  - [libnotify](https://gitlab.gnome.org/GNOME/libnotify): For notifications
     41  - [qrencode](https://github.com/fukuchi/libqrencode): For generating QR codes to share credentials
     42  - [gstreamer](https://gitlab.freedesktop.org/gstreamer): For recording and playing voice messages
     43  - [pipewire](https://gitlab.freedesktop.org/pipewire/pipewire): For capturing images from camera sensors
     44  - [libportal](https://github.com/flatpak/libportal): For requesting permission to use certain system features
     45 
     46 As additional step you will need to load all required git submodules via `git submodule init` and `git submodule update`. It is also possible to just add the `--recursive` flag while cloning the repository to do that automatically.
     47 
     48 Here is the list of the used submodules:
     49 
     50  - [gnome-characters](https://gitlab.gnome.org/GNOME/gnome-characters): For the emoji picker
     51 
     52 Then you can simply use [Meson](https://mesonbuild.com/) as follows:
     53 ```
     54 meson setup build      # Configure the build files for your system
     55 ninja -C build         # Build the application using those build files
     56 ninja -C build install # Install the application
     57 ```
     58 
     59 Here is a list of some useful build commands using Meson and [Ninja](https://ninja-build.org/):
     60 
     61  - `meson compile -C build` to just compile everything with configured parameters
     62  - `rm -r build` to cleanup build files in case you want to recompile
     63  - `meson install -C build` to install the compiled files (you might need sudo privileges)
     64  - `meson dist -C build` to create a tar file for distribution
     65  - `ninja -C build uninstall` to uninstall a previous installation (you might need sudo privileges)
     66 
     67 If you want to change the installation location, use the `--prefix=` parameter in the initial meson command. Also you can enable optimized release builds by adding `--buildtype=release` as parameter.
     68 
     69 ## Runtime
     70 
     71 The application will utilize gstreamer to scan a video feed from your camera for QR codes to add new contacts conveniently, record audio messages, stream audio/video live in a discourse dialog or simply play transferred media files. These feature require some gstreamer plugins to be installed:
     72 
     73  - [appsrc](https://gstreamer.freedesktop.org/documentation/app/appsrc.html?gi-language=c)
     74  - [aspectratiocrop](https://gstreamer.freedesktop.org/documentation/videocrop/aspectratiocrop.html?gi-language=c)
     75  - [audioconvert](https://gstreamer.freedesktop.org/documentation/audioconvert/index.html?gi-language=c)
     76  - [audiomixer](https://gstreamer.freedesktop.org/documentation/audiomixer/audiomixer.html?gi-language=c)
     77  - [autoaudiosink](https://gstreamer.freedesktop.org/documentation/autodetect/autoaudiosink.html?gi-language=c)
     78  - [autoaudiosrc](https://gstreamer.freedesktop.org/documentation/autodetect/autoaudiosrc.html?gi-language=c)
     79  - [avdec_h264](https://gstreamer.freedesktop.org/documentation/libav/avdec_h264.html?gi-language=c)
     80  - [capsfilter](https://gstreamer.freedesktop.org/documentation/coreelements/capsfilter.html?gi-language=c)
     81  - [fdsink](https://gstreamer.freedesktop.org/documentation/coreelements/fdsink.html?gi-language=c)
     82  - [gtksink](https://gstreamer.freedesktop.org/documentation/gtk/gtksink.html?gi-language=c)
     83  - [oggdemux](https://gstreamer.freedesktop.org/documentation/ogg/oggdemux.html?gi-language=c)
     84  - [oggmux](https://gstreamer.freedesktop.org/documentation/ogg/oggmux.html?gi-language=c)
     85  - pipewiresrc
     86  - [playbin](https://gstreamer.freedesktop.org/documentation/playback/playbin.html?gi-language=c)
     87  - [queue](https://gstreamer.freedesktop.org/documentation/coreelements/queue.html?gi-language=c)
     88  - [rtph264depay](https://gstreamer.freedesktop.org/documentation/rtp/rtph264depay.html?gi-language=c)
     89  - [rtph264pay](https://gstreamer.freedesktop.org/documentation/rtp/rtph264pay.html?gi-language=c)
     90  - [rtpjitterbuffer](https://gstreamer.freedesktop.org/documentation/rtpmanager/rtpjitterbuffer.html?gi-language=c)
     91  - [rtpL16depay](https://gstreamer.freedesktop.org/documentation/rtp/rtpL16depay.html?gi-language=c)
     92  - [rtpL16pay](https://gstreamer.freedesktop.org/documentation/rtp/rtpL16pay.html?gi-language=c)
     93  - [rtpmux](https://gstreamer.freedesktop.org/documentation/rtpmanager/rtpmux.html?gi-language=c)
     94  - [tee](https://gstreamer.freedesktop.org/documentation/coreelements/tee.html?gi-language=c)
     95  - [videoconvert](https://gstreamer.freedesktop.org/documentation/videoconvertscale/videoconvert.html?gi-language=c)
     96  - [videoscale](https://gstreamer.freedesktop.org/documentation/videoconvertscale/videoscale.html?gi-language=c)
     97  - [volume](https://gstreamer.freedesktop.org/documentation/volume/index.html?gi-language=c)
     98  - [vorbisdec](https://gstreamer.freedesktop.org/documentation/vorbis/vorbisdec.html?gi-language=c)
     99  - [vorbisenc](https://gstreamer.freedesktop.org/documentation/vorbis/vorbisenc.html?gi-language=c)
    100  - [x264enc](https://gstreamer.freedesktop.org/documentation/x264/index.html?gi-language=c)
    101  - [zbar](https://gstreamer.freedesktop.org/documentation/zbar/index.html?gi-language=c)
    102 
    103 Install packages depending on your distribution to be able to use those plugins.
    104 
    105 ## Contribution
    106 
    107 If you want to contribute to this project as well, the following options are available:
    108 
    109  * Contribute directly to the [source code](https://git.gnunet.org/messenger-gtk.git/) with patches to fix issues, implement new features or improve the usability.
    110  * Open issues in the [bug tracker](https://bugs.gnunet.org/bug_report_page.php) to report bugs, issues or missing features.
    111  * Contact the authors of the software if you need any help to contribute (testing is always an option).
    112 
    113 The list of all previous authors can be viewed in the provided [file](AUTHORS).