Skip to content

TheJackiMonster/messenger-gtk

Repository files navigation

Messenger-GTK

A GTK based GUI for the Messenger service of GNUnet.

messenger-gtk

Overview of the application

Features

Messenger-GTK is a convergent GTK messaging application using the GNUnet Messenger service. The goal is to provide private and secure communication between any group of devices.

The application provides the following features:

  • Creating direct chats and group chats
  • Managing your contacts and groups
  • Invite contacts to a group
  • Sending text messages
  • Sending voice recordings
  • Sharing files privately
  • Deleting messages with any custom delay
  • Renaming, tagging or blocking contacts
  • Exchanging contact details physically
  • Verifying contact identities
  • Switching between different accounts

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.

Build & Installation

The following dependencies are required and need to be installed to build the application:

  • gnunet: For using general GNUnet datatypes
  • libgnunetchat: For chatting via GNUnet messenger
  • gtk3: For the general UI design
  • libhandy: For responsive UI widgets
  • libnotify: For notifications
  • qrencode: For generating QR codes to share credentials
  • gstreamer: For recording and playing voice messages
  • pipewire: For capturing images from camera sensors
  • libportal: For requesting permission to use certain system features

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.

Here is the list of the used submodules:

Then you can simply use Meson as follows:

meson setup build      # Configure the build files for your system
ninja -C build         # Build the application using those build files
ninja -C build install # Install the application

Here is a list of some useful build commands using Meson and Ninja:

  • meson compile -C build to just compile everything with configured parameters
  • rm -r build to cleanup build files in case you want to recompile
  • meson install -C build to install the compiled files (you might need sudo privileges)
  • meson dist -C build to create a tar file for distribution
  • ninja -C build uninstall to uninstall a previous installation (you might need sudo privileges)

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.

Runtime

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:

Install packages depending on your distribution to be able to use those plugins.

Contribution

If you want to contribute to this project as well, the following options are available:

  • Contribute directly to the source code with patches to fix issues, implement new features or improve the usability.
  • Open issues in the bug tracker to report bugs, issues or missing features.
  • Contact the authors of the software if you need any help to contribute (testing is always an option).

The list of all previous authors can be viewed in the provided file.