A GTK based GUI for the Messenger service of GNUnet.
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.
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:
- gnome-characters: For the emoji picker
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 parametersrm -r build
to cleanup build files in case you want to recompilemeson install -C build
to install the compiled files (you might need sudo privileges)meson dist -C build
to create a tar file for distributionninja -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.
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:
- appsrc
- aspectratiocrop
- audioconvert
- audiomixer
- autoaudiosink
- autoaudiosrc
- avdec_h264
- capsfilter
- fdsink
- gtksink
- oggdemux
- oggmux
- pipewiresrc
- playbin
- queue
- rtph264depay
- rtph264pay
- rtpjitterbuffer
- rtpL16depay
- rtpL16pay
- rtpmux
- tee
- videoconvert
- videoscale
- volume
- vorbisdec
- vorbisenc
- x264enc
- zbar
Install packages depending on your distribution to be able to use those plugins.
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.