README.md (7298B)
1 # Messenger-GTK 2 3 A GTK based GUI for the Messenger service of GNUnet. 4 5 [](https://snapcraft.io/messenger-gtk) 6 7  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).