moment/README.md

168 lines
6.3 KiB
Markdown
Raw Normal View History

# Mirage
[![Latest release](https://img.shields.io/github/v/release/mirukana/mirage)](https://github.com/mirukana/mirage/releases)
[![Built with matrix-nio](https://img.shields.io/badge/built%20with-matrix--nio-brightgreen)](https://github.com/poljar/matrix-nio)
[![#mirage-client:matrix.org](https://img.shields.io/matrix/mirage-client:matrix.org?color=blueviolet)](https://matrix.to/#/#mirage-client:matrix.org)
2020-03-20 10:13:08 +11:00
[Features](#currently-implemented-features) ⬥
[Installation](docs/INSTALL.md) ⬥
2020-03-20 10:42:49 +11:00
[Configuration & Theming](#configuration--theming) ⬥
[Screenshots](#more-screenshots)
2019-09-13 08:10:21 +10:00
2020-03-22 05:24:43 +11:00
A fancy, customizable, keyboard-operable [Matrix](https://matrix.org/) chat
client for encrypted and decentralized communication.
Written in Qt/QML and Python, **currently in alpha**.
![Chat screenshot](docs/screenshots/01-chat.png?raw=true)
2020-03-20 10:42:49 +11:00
## Currently Implemented Features
2019-07-18 22:10:36 +10:00
2020-06-26 22:33:22 +10:00
### Interface
2019-07-26 09:19:39 +10:00
- **Fluid, responsive interface** that adapts to any window size
2020-03-24 09:15:51 +11:00
- Toggleable **compact mode**
- Customizable **keyboard shortcuts** for everything, including
switching rooms, navigating messages, sending/opening files...
2020-03-22 08:42:45 +11:00
- Versatile **theming system**, properties can refer to each other and have
any valid ECMAScript 7 expression as values
2020-03-22 05:24:43 +11:00
- Comes by default with **dark** and **transparent themes**
2019-08-30 14:07:05 +10:00
2020-06-26 22:33:22 +10:00
### Accounts
2019-08-30 14:07:05 +10:00
2020-06-26 22:33:22 +10:00
- **Multiple accounts** in one client
2020-08-23 23:16:27 +10:00
- Built-in public homeservers list
- **SSO** and password authentication
2020-03-20 10:13:08 +11:00
- Set your display name and profile picture
- Import/export **E2E** key files
2020-07-18 04:26:12 +10:00
- Inspect, rename, manually verify and sign out one or multiple **sessions**
2020-07-18 04:23:47 +10:00
- Sessions for accounts within the same client automatically verify each others
2020-07-18 04:26:12 +10:00
- Set your account's **presence** to online, unavailable, invisible or offline
- Set custom **status messages**
2020-07-18 04:23:47 +10:00
- Automatically set your status to unavailable after a period of inactivity
2019-07-18 22:10:36 +10:00
2020-03-20 10:13:08 +11:00
### Rooms
2020-03-20 10:13:08 +11:00
- Create, join, leave and forget rooms
- Send, accept and refuse invites
- Edit the room's name, topic, invite requirement, guest access and enable E2E
2020-07-18 04:23:47 +10:00
- Kick, ban and set the power level of users
2020-06-02 00:03:38 +10:00
- Unread message and highlight counters
- Sending **read receipts** to mark rooms as read
2020-07-18 04:26:12 +10:00
- Inspect and manually **verify** other users's **E2E sessions**
- See other users's **presence, status message and last seen time**
- **Typing notifications**
2020-03-20 10:13:08 +11:00
### Messages
2019-07-18 22:10:36 +10:00
2020-03-20 10:13:08 +11:00
- Send and receive **E2E encrypted messages**
- Send and receive emote messages (e.g. `/me reads attentively`)
- Receive notice (bot) messages
- Send **markdown** formatted messages
2020-03-22 08:42:45 +11:00
- Additional syntax for **coloring text**, e.g. `<red>(Some text...)` -
2020-03-20 10:13:08 +11:00
[SVG/CSS color names](https://www.december.com/html/spec/colorsvg.html),
and `#hex` codes can be used
2020-07-18 04:23:47 +10:00
2020-03-20 10:13:08 +11:00
- Send and receive normal or **E2E encrypted files**
- Client-side Matrix & HTTP URL **image previews**, including animated GIF
2020-07-18 04:23:47 +10:00
- Upload images by pasting
2020-08-23 23:16:27 +10:00
- Full-size image viewer
2020-07-18 04:23:47 +10:00
- User ID, display names, room ID and room aliases **mentions**
2020-08-23 23:16:27 +10:00
- **Autocompletion** for usernames and user ID
2020-04-03 23:50:10 +11:00
- Individual and mass **message removal**
2020-05-22 23:16:47 +10:00
- Sending **rich replies**
2019-07-18 22:10:36 +10:00
2020-03-20 10:13:08 +11:00
## Installation
2019-07-18 22:10:36 +10:00
See [INSTALL.md](docs/INSTALL.md)
2019-07-18 22:10:36 +10:00
2020-03-20 10:42:49 +11:00
## Configuration & Theming
2019-07-18 22:10:36 +10:00
2020-03-20 10:13:08 +11:00
The config file can be found at *$XDG_CONFIG_HOME/mirage/settings.json*,
or *~/.config/mirage/settings.json*.
2019-07-18 22:10:36 +10:00
For Flatpak users, this will be
*~/.var/app/io.github.mirukana.mirage/config/mirage* instead.
2020-06-12 11:50:26 +10:00
The config folder where *accounts.json* and *settings.json* is located can be
overriden by setting the `MIRAGE_CONFIG_DIR` environment variable.
The user data folder where *themes*, encryption data and interface states
are saved can be overriden with `MIRAGE_DATA_DIR`.
2020-06-12 11:50:26 +10:00
The cache folder where downloaded files and thumbnails are saved can be
overriden with `MIRAGE_CACHE_DIR`.
2020-03-20 10:13:08 +11:00
The `theme` setting can be:
2019-08-31 07:05:22 +10:00
- The filename of a built-in theme (`Midnight.qpl` or `Glass.qpl`)
- The filename of a custom theme at
*$XDG_DATA_HOME/mirage/themes*, *~/.local/share/mirage/themes*,
or *~/.var/app/io.github.mirukana.mirage/data/mirage/themes* (Flatpak)
2020-03-20 10:13:08 +11:00
A default theme from this repository can be copied to use as a base and edit,
for example:
```sh
cp mirage/src/themes/Midnight.qpl \
"${XDG_DATA_HOME:-$HOME/.local/share}/mirage/themes/MyTheme.qpl"
```
Or for Flatpak users:
```sh
cp mirage/src/themes/Midnight.qpl \
~/.var/app/io.github.mirukana.mirage/data/mirage/themes/MyTheme.qpl
```
The config setting `theme` would need to be set to `MyTheme.qpl` in this case.
2020-03-20 10:13:08 +11:00
Theme files are nested-by-indentations sections of properties and values.
Properties are declared as `<type> <name>: <value>`.
Values can be any JavaScript (ECMAScript 7) expressions.
Most of the properties are of type `color`.
Their values, if not just refering to another property,
can be expressed with a:
- [SVG/CSS color name](https://www.december.com/html/spec/colorsvg.html)
string, e.g. `"blue"`
2020-03-20 11:06:25 +11:00
- Hexadecimal code string, e.g. `"#fff"` or `"#cc0000"`
2020-03-20 10:13:08 +11:00
- RGBA value, using the `Qt.rgba(0-1, 0-1, 0-1, 0-1)` function
- HSLA value, using the `Qt.hsla(0-1, 0-1, 0-1, 0-1)` function
- HSVA value, using the `Qt.hsva(0-1, 0-1, 0-1, 0-1)` function
- [HSLUV](https://www.hsluv.org/) value, using the
`hsluv(0-360, 0-100, 0-100, 0-1)` function. This is the prefered method
used throughout the default theme files
(why? see [this](https://www.hsluv.org/comparison/#rainbow-hsluv) and
[that](https://www.boronine.com/2012/03/26/Color-Spaces-for-Human-Beings/#hsl-is-a-lemon))
If you just want to change the background picture,
or use a gradient/simple color instead, search for the `ui:` section in your
text editor.
With `Alt+Shift+R` by default, the config and theme can be reloaded without
restarting the app.
**Warnings**:
- API currently unstable: theme properties are often renamed, added or deleted.
- The file format for both config and themes will soon change
- The current file format forces all theme to have all properties
2020-03-20 10:13:08 +11:00
defined, instead of being able to only specify the ones to override from the
default theme.
GUI settings will also be implemented in the future.
2020-03-20 10:42:49 +11:00
## Screenshots
2020-03-20 10:13:08 +11:00
![Sign-in](docs/screenshots/02-sign-in.png)
![Account settings](docs/screenshots/03-account-settings.png)
![Room creation](docs/screenshots/04-create-room.png)
![Chat](docs/screenshots/01-chat.png?raw=true)
![Main pane in small window](docs/screenshots/05-main-pane-small.png)
![Chat in small window](docs/screenshots/06-chat-small.png)
![Room pane in small window](docs/screenshots/07-room-pane-small.png)
2019-08-31 07:05:22 +10:00