2018-05-06 21:08:46 +00:00
# Fractal
2017-08-17 16:15:46 +00:00
2018-04-14 11:11:48 +00:00
Fractal is a Matrix messaging app for GNOME written in Rust. Its interface is optimized for collaboration in large groups, such as free software projects.
2017-08-31 09:31:03 +00:00
2018-05-06 21:08:46 +00:00
* Come to talk to us on Matrix: < https: // matrix . to /#/# fractal-gtk:matrix . org >
2018-12-22 17:59:08 +00:00
* Main repository: < https: // gitlab . gnome . org / GNOME / fractal />
2017-08-24 12:03:36 +00:00
2018-12-22 17:59:08 +00:00
![screenshot ](https://gitlab.gnome.org/GNOME/fractal/raw/master/screenshots/fractal.png )
2017-08-26 17:51:25 +00:00
2018-05-03 19:01:35 +00:00
## Installation instructions
2018-12-22 17:59:08 +00:00
Flatpak is the recommended installation method. You can get the official
Fractal Flatpak on Flathub.
< a href = "https://flathub.org/apps/details/org.gnome.Fractal" >
< img src = "https://flathub.org/assets/badges/flathub-badge-i-en.png" width = "190px" / >
< / a >
2018-05-03 19:01:35 +00:00
2020-04-17 15:16:12 +00:00
Fractal can also be installed as a snap on any distro with snap support enabled
< a href = "https://snapcraft.io/fractal" >
< img src = "https://github.com/snapcore/snap-store-badges/raw/master/EN/[EN]-snap-store-white.png" width = "182px" / >
< / a >
2018-04-14 11:11:48 +00:00
## Build Instructions
2018-12-22 17:59:08 +00:00
### Flatpak
Flatpak is the recommended way of building and installing Fractal.
First you need to make sure you have the GNOME SDK and Rust toolchain installed.
```
# Add Flathub and the gnome-nightly repo
flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
2019-11-23 09:25:57 +00:00
flatpak remote-add --user --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
2018-12-22 17:59:08 +00:00
# Install the gnome-nightly Sdk and Platform runtime
flatpak install --user gnome-nightly org.gnome.Sdk org.gnome.Platform
# Install the required rust-stable extension from Flathub
2019-09-23 17:10:47 +00:00
flatpak install --user flathub org.freedesktop.Sdk.Extension.rust-stable//19.08
2018-12-22 17:59:08 +00:00
```
Then you go ahead and build Fractal.
```
2019-03-06 17:43:41 +00:00
flatpak-builder --user --install fractal flatpak/org.gnome.Fractal.json
2018-12-22 17:59:08 +00:00
```
2017-11-08 11:44:55 +00:00
2020-04-17 15:16:12 +00:00
### Snap
To build as a snap simply install snapcraft
```
snap install --classic snapcraft
snapcraft
```
The snapcraft build will produce a file that ends with .snap that can be easily installed with the snap command
```
snap install --dangerous FILENAME.snap
```
2018-04-14 11:11:48 +00:00
### GNU/Linux
2017-11-08 11:44:55 +00:00
2018-12-22 17:59:08 +00:00
If you decide to ignore our recommendation and build on your host system,
2020-04-17 15:16:12 +00:00
outside of Flatpak or snap, you will need Meson and Ninja (as well as Rust and Cargo).
2018-12-22 17:59:08 +00:00
2018-05-06 21:08:46 +00:00
```sh
2018-04-16 17:34:36 +00:00
meson . _build --prefix=/usr/local
ninja -C _build
2018-04-27 14:34:10 +00:00
sudo ninja -C _build install
2017-11-08 11:44:55 +00:00
```
2018-04-14 11:11:48 +00:00
### macOS
2018-05-06 21:08:46 +00:00
```sh
2018-05-14 13:39:40 +00:00
brew install gtk+3 dbus bash adwaita-icon-theme
2018-03-18 22:43:32 +00:00
# empirically needs 3.22.19 or later of gtk3+
# ...and run configure as:
2018-04-27 17:23:56 +00:00
/usr/local/bin/bash -c "meson . _build --prefix=/usr/local"
2018-05-14 13:39:40 +00:00
ninja -C _build
sudo ninja -C _build install
2018-03-18 22:43:32 +00:00
```
2018-05-06 21:08:46 +00:00
2018-05-18 08:34:17 +00:00
### Translations
2018-12-22 17:59:08 +00:00
Fractal is translated by the GNOME translation team on
[Damned lies ](https://l10n.gnome.org/ ).
2018-05-18 08:34:17 +00:00
2018-12-22 17:59:08 +00:00
If you want to add *a new language* you should update the file
`fractal-gtk/po/LINGUAS` and add the code for that language
to the list.
2018-05-18 08:34:17 +00:00
2018-12-22 17:59:08 +00:00
Get the pot file from [the Fractal module page on Damned lies ](https://l10n.gnome.org/module/fractal/ ).
2018-05-18 08:34:17 +00:00
2018-05-15 21:48:35 +00:00
### Password Storage
2018-12-22 17:59:08 +00:00
Fractal uses [Secret Service ](https://www.freedesktop.org/wiki/Specifications/secret-storage-spec/ )
to store the password so you should have something providing
that service on your system. If you're using GNOME or KDE
2018-05-15 21:48:35 +00:00
this should work for you out of the box with gnome-keyring or
ksecretservice.
2017-08-26 17:51:25 +00:00
## Supported m.room.message (msgtypes)
msgtypes | Recv | Send
-------- | ----- | ------
m.text | Done | Done
2018-04-08 21:34:23 +00:00
m.emote | Done | Done
2017-08-26 17:51:25 +00:00
m.notice | |
2017-10-01 11:21:21 +00:00
m.image | Done | Done
2017-10-04 19:19:40 +00:00
m.file | Done | Done
2017-08-26 17:51:25 +00:00
m.location | |
2017-10-04 19:19:40 +00:00
m.video | Done | Done
m.audio | Done | Done
2017-08-26 17:51:25 +00:00
2019-11-01 08:51:12 +00:00
Full reference in: < https: / / matrix . org / docs / spec / client_server / r0 . 2 . 0 . html # m-room-message-msgtypes >
2017-11-01 11:11:40 +00:00
2018-05-22 20:15:44 +00:00
## Frequently Asked Questions
* Does Fractal have encryption support? Will it ever?
Fractal does not currently have encryption support, but
2018-10-30 08:22:48 +00:00
there is an initiative for it.
2020-07-23 18:59:39 +00:00
We are heading towards using matrix-rust-sdk rather than our own implementation. (See https://gitlab.gnome.org/GNOME/fractal/-/issues/636)
2018-10-30 08:22:48 +00:00
2020-07-22 22:00:28 +00:00
Code and further information for this module can be found at [matrix/matrix-rust-sdk ](https://github.com/matrix-org/matrix-rust-sdk ).
2018-05-22 20:15:44 +00:00
* Can I run Fractal with the window closed?
Currently Fractal does not support this. Fractal is a
GNOME application, and accordingly adheres GNOME
2018-12-22 17:59:08 +00:00
guidelines and paradigms. This will be revisited if or
2018-05-22 20:15:44 +00:00
when GNOME gets a "Do Not Disturb" feature.
2018-05-06 21:08:46 +00:00
## The origin of Fractal
2017-11-01 11:11:40 +00:00
2018-05-06 21:08:46 +00:00
This project is based on Fest < https: / / github . com / fest-im / fest > , formerly called ruma-gtk.
2017-11-01 11:11:40 +00:00
Instead of using RUMA Client, Fractal calls directly to the matrix.org
REST API.
2018-05-03 20:24:44 +00:00
The first version of this project was called guillotine, based on French revolution,
2017-11-01 11:11:40 +00:00
in relation with the Riot client name, but it's a negative name so we decide
2017-11-08 11:44:55 +00:00
to change for a math one.
2018-02-11 18:07:15 +00:00
2018-05-15 21:48:35 +00:00
The name Fractal was proposed by Regina Bíró.
2019-10-06 23:58:01 +00:00
## Code of Conduct
Fractal follows the official GNOME Foundation code of conduct. You can read it [here ](/code-of-conduct.md ).