1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Merge pull request #3114

kehugter (2):
      style(Markdown): wrap all .md files at 80 characters
      style(INSTALL.md): improve Markdown formatting and grammar
This commit is contained in:
Zetok Zalbavar 2016-04-16 02:56:34 +01:00
commit 74ce4da48c
No known key found for this signature in database
GPG Key ID: C953D3880212068A
5 changed files with 384 additions and 194 deletions

View File

@ -27,6 +27,7 @@ Reproducible: Always / Almost Always / Sometimes / Rarely / Couldn't Reproduce
----
More information on how to write good bug reports in the wiki: https://github.com/tux3/qTox/wiki/Writing-Useful-Bug-Reports.
More information on how to write good bug reports in the wiki:
https://github.com/tux3/qTox/wiki/Writing-Useful-Bug-Reports.
Please remove any unnecessary template section before submitting.

View File

@ -1,10 +1,13 @@
# Filing an issue
### Must read
* If you aren't sure, you can ask on the [**IRC channel**](https://webchat.freenode.net/?channels=qtox) or read our [**wiki**](https://github.com/tux3/qTox/wiki) first.
* If you aren't sure, you can ask on the
[**IRC channel**](https://webchat.freenode.net/?channels=qtox) or read our
[**wiki**](https://github.com/tux3/qTox/wiki) first.
* Do a quick **search**. Others might have already reported the issue.
* Write in **English**!
* Provide **version** information (you can find version numbers in menu `Settings → About`):
* Provide **version** information (you can find version numbers in menu
`Settings → About`):
```
OS:
qTox version:
@ -12,13 +15,18 @@ Commit hash:
toxcore:
Qt:
```
* Provide **steps** to reproduce the problem, it will be easier to pinpoint the fault.
* **Screenshots**! A screenshot is worth a thousand words. Just upload it. [(How?)](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests)
* Provide **steps** to reproduce the problem, it will be easier to pinpoint the
fault.
* **Screenshots**! A screenshot is worth a thousand words. Just upload it.
[(How?)](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests)
### Good to know
* **Patience**. The dev team is small and resource limited. Devs have to find time, analyze the problem and fix the issue, it all takes time. :clock3:
* If you can code, why not become a **contributor** by fixing the issue and opening a pull request? :wink:
* Harsh words or threats won't help your situation. What's worse, your complaint will (very likely) be **ignored**. :fearful:
* **Patience**. The dev team is small and resource limited. Devs have to find
time, analyze the problem and fix the issue, it all takes time. :clock3:
* If you can code, why not become a **contributor** by fixing the issue and
opening a pull request? :wink:
* Harsh words or threats won't help your situation. What's worse, your complaint
will (very likely) be **ignored**. :fearful:
# Opening a pull request
@ -26,14 +34,22 @@ Qt:
### Must read
* Use [**commit message format**](#commit-message-format).
* Read our [**coding guidelines**](https://github.com/tux3/qTox/wiki/Coding).
* Keep the title **short** and provide a **clear** description about what your pull request does.
* Keep the title **short** and provide a **clear** description about what your
pull request does.
* Provide **screenshots** for UI related changes.
* Keep your git commit history **clean** and **precise**. Commits like `xxx fixup` should not appear.
* If your commit fixes a reported issue (for example #4134), add the following message to the commit `Fixes #4134.`. [Here is an example](https://github.com/tux3/qTox/commit/87160526d5bafcee7869d6741a06045e13d731d5).
* Keep your git commit history **clean** and **precise**. Commits like
`xxx fixup` should not appear.
* If your commit fixes a reported issue (for example #4134), add the following
message to the commit `Fixes #4134.`.
[Here is an example](https://github.com/tux3/qTox/commit/87160526d5bafcee7869d6741a06045e13d731d5).
### Good to know
* **Search** the pull request history! Others might have already implemented your idea and it could be waiting to be merged (or have been rejected already). Save your precious time by doing a search first.
* When resolving merge conflicts, do `git rebase <target_branch_name>`, don't do `git pull`. Then you can start fixing the conflicts. [Here is a good explanation](https://www.atlassian.com/git/tutorials/merging-vs-rebasing).
* **Search** the pull request history! Others might have already implemented
your idea and it could be waiting to be merged (or have been rejected
already). Save your precious time by doing a search first.
* When resolving merge conflicts, do `git rebase <target_branch_name>`, don't do
`git pull`. Then you can start fixing the conflicts.
[Here is a good explanation](https://www.atlassian.com/git/tutorials/merging-vs-rebasing).
## <a name="commit"></a> Git Commit Guidelines
@ -41,13 +57,13 @@ Qt:
We have very precise rules over how our git commit messages can be formatted.
This leads to **more readable messages** that are easy to follow when looking
through the **project history**. But also, we use the git commit messages to
**generate the qTox change log** using [clog-cli]
(https://github.com/clog-tool/clog-cli).
**generate the qTox change log** using
[clog-cli](https://github.com/clog-tool/clog-cli).
### Commit Message Format
Each commit message consists of a **header** and a **body**. The header has a special format that
includes a **type**, a **scope** and a **subject**:
Each commit message consists of a **header** and a **body**. The header has a
special format that includes a **type**, a **scope** and a **subject**:
```
<type>(<scope>): <subject>
@ -55,7 +71,8 @@ includes a **type**, a **scope** and a **subject**:
<body>
```
The **header** is mandatory and the **body** is optional. The **scope** of the header is also optional.
The **header** is mandatory and the **body** is optional. The **scope** of the
header is also optional.
### Header
The header must be a short (72 characters or less) summary of the changes made.
@ -66,20 +83,24 @@ Must be one of the following:
* **feat**: A new feature
* **fix**: A bug fix
* **docs**: Documentation only changes
* **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc)
* **style**: Changes that do not affect the meaning of the code (white-space,
formatting, etc)
* **refactor**: A code change that neither fixes a bug nor adds a feature
* **perf**: A code change that improves performance
* **revert**: Reverts a previous commit
* **test**: Adding missing tests
* **chore**: Changes to the build process or auxiliary tools and libraries such as documentation
generation
* **chore**: Changes to the build process or auxiliary tools and libraries such
as documentation generation
##### Revert
If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body it should say: `Revert commit <hash>.`, where the hash is the SHA of the commit being reverted.
If the commit reverts a previous commit, it should begin with `revert: `,
followed by the header of the reverted commit. In the body it should say:
`Revert commit <hash>.`, where the hash is the SHA of the commit being reverted.
#### Scope
The scope could be anything specifying place of the commit change. For example `$location`,
`$browser`, `$compile`, `$rootScope`, `ngHref`, `ngClick`, `ngView`, etc.
The scope could be anything specifying place of the commit change. For example
`$location`, `$browser`, `$compile`, `$rootScope`, `ngHref`, `ngClick`,
`ngView`, etc.
#### Subject
The subject contains succinct description of the change:
@ -88,20 +109,25 @@ The subject contains succinct description of the change:
* don't capitalize first letter
* no dot (.) at the end
A properly formed git commit subject line should always be able to complete the following sentence:
A properly formed git commit subject line should always be able to complete the
following sentence:
> If applied, this commit will ___your subject line here___
### Body
Wrap the body at 72 characters whenever possible (for example, don't modify long links to follow this rule). Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
The body should include the motivation for the change and contrast this with previous behavior.
Wrap the body at 72 characters whenever possible (for example, don't modify long
links to follow this rule). Just as in the **subject**, use the imperative,
present tense: "change" not "changed" nor "changes". The body should include the
motivation for the change and contrast this with previous behavior.
The body contains (in order of appearance):
* A detailed **description** of the committed changes.
* References to GitHub issues that the commit **closes** (e.g., `Closes #000` or `Fixes #000`).
* References to GitHub issues that the commit **closes** (e.g., `Closes #000` or
`Fixes #000`).
* Any **breaking changes**.
Include every section of the body that is relevant for your commit.
**Breaking changes** should start with the phrase `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.
**Breaking changes** should start with the phrase `BREAKING CHANGE:` with a
space or two newlines. The rest of the commit message is then used for this.

View File

@ -31,7 +31,7 @@
- [Ubuntu >=15.04](#ubuntu-toxcore)
- [filter_audio](#filter_audio)
- [sqlcipher](#sqlcipher)
- [toxcore compiling](#toxcore-compiling)
- [Compile toxcore](#compile-toxcore)
- [Compile qTox](#compile-qtox)
- [OS X](#osx)
- [Windows](#windows)
@ -95,7 +95,8 @@ emerge qtox
<a name="slackware-easy" />
#### Slackware
qTox SlackBuild and all of its dependencies can be found here: http://slackbuilds.org/repository/14.1/network/qTox/
qTox SlackBuild and all of its dependencies can be found here:
http://slackbuilds.org/repository/14.1/network/qTox/
<a name="freebsd-easy" />
#### FreeBSD
@ -109,109 +110,134 @@ make install
----
If your distribution is not listed, or you want / need to compile qTox, there are provided instructions.
If your distribution is not listed, or you want / need to compile qTox, there
are provided instructions.
----
Most of the dependencies should be available through your package manger. You may either follow the directions below, or simply run `./simple_make.sh` after cloning this repository, which will attempt to automatically download dependencies followed by compilation.
Most of the dependencies should be available through your package manger. You
may either follow the directions below, or simply run `./simple_make.sh` after
cloning this repository, which will attempt to automatically download
dependencies followed by compilation.
### Install git
In order to clone the qTox repository you need Git.
<a name="arch-git" />
#### Arch Linux:
#### Arch Linux
```bash
sudo pacman -S --needed git
```
<a name="debian-git" />
#### Debian:
#### Debian
```bash
sudo apt-get install git
```
<a name="fedora-git" />
#### Fedora:
*`yum` is now officially deprecated by `dnf`. using `yum` will redirect to `dnf` on Fedora 21 and fail on future versions.*
#### Fedora
*`yum` is now officially deprecated by `dnf`. using `yum` will redirect to `dnf`
on Fedora 21 and fail on future versions.*
```bash
sudo dnf install git
```
<a name="opensuse-git" />
#### openSUSE:
#### openSUSE
```bash
sudo zypper install git
```
<a name="ubuntu-git" />
#### Ubuntu:
#### Ubuntu
```bash
sudo apt-get install git
```
### Clone qTox
Afterwards open a new Terminal, change to a directory of your choice and clone the repository:
Afterwards open a new terminal, change to a directory of your choice and clone
the repository:
```bash
cd /home/user/qTox
git clone https://github.com/tux3/qTox.git qTox
```
The following steps assumes that you cloned the repository at "/home/user/qTox". If you decided to choose another location, replace corresponding parts.
The following steps assumes that you cloned the repository at `/home/user/qTox`.
If you decided to choose another location, replace corresponding parts.
<a name="other-deps" />
### GCC, Qt, FFmpeg, OpanAL Soft and qrencode
<a name="arch-other-deps" />
#### Arch Linux:
#### Arch Linux
```bash
sudo pacman -S --needed base-devel qt5 openal libxss qrencode ffmpeg
```
<a name="debian-other-deps" />
#### Debian:
#### Debian
**Note that only Debian >=8 stable (jessie) is supported.**
If you use stable, you have to add backports to your `sources.list` for FFmpeg and others. Instructions here: http://backports.debian.org/Instructions/
If you use stable, you have to add backports to your `sources.list` for FFmpeg
and others. Instructions here: http://backports.debian.org/Instructions/
```bash
sudo apt-get install build-essential qt5-qmake qt5-default qttools5-dev-tools libqt5opengl5-dev libqt5svg5-dev libopenal-dev libxss-dev qrencode libqrencode-dev libglib2.0-dev libgdk-pixbuf2.0-dev libgtk2.0-dev ffmpeg libsqlcipher-dev
sudo apt-get install build-essential qt5-qmake qt5-default qttools5-dev-tools \
libqt5opengl5-dev libqt5svg5-dev libopenal-dev libxss-dev qrencode \
libqrencode-dev libglib2.0-dev libgdk-pixbuf2.0-dev libgtk2.0-dev ffmpeg \
libsqlcipher-dev
```
<a name="fedora-other-deps" />
#### Fedora:
#### Fedora
**Note that sqlcipher is not included in Fedora(!).**
**This means that you have to compile sqlcipher yourself, otherwise compiling qTox will fail.**
**This means that you have to compile sqlcipher yourself, otherwise compiling
qTox will fail.**
```bash
sudo dnf groupinstall "Development Tools" (can also use sudo dnf install @"Development Tools")
sudo dnf install qt-devel qt-doc qt-creator qt5-qtsvg qt5-qtsvg-devel openal-soft-devel libXScrnSaver-devel qrencode-devel ffmpeg-devel qtsingleapplication qt5-linguist gtk2-devel
sudo dnf groupinstall "Development Tools"
# (can also use sudo dnf install @"Development Tools")
sudo dnf install qt-devel qt-doc qt-creator qt5-qtsvg qt5-qtsvg-devel \
openal-soft-devel libXScrnSaver-devel qrencode-devel ffmpeg-devel \
qtsingleapplication qt5-linguist gtk2-devel
```
**Go to [sqlcipher](#sqlcipher) section to compile it.**
<a name="opensuse-other-deps" />
#### openSUSE:
#### openSUSE
```bash
sudo zypper install patterns-openSUSE-devel_basis libqt5-qtbase-common-devel libqt5-qtsvg-devel libqt5-linguist libQt5Network-devel libQt5OpenGL-devel libQt5Concurrent-devel libQt5Xml-devel libQt5Sql-devel openal-soft-devel qrencode-devel libXScrnSaver-devel libQt5Sql5-sqlite libffmpeg-devel sqlcipher-devel
sudo zypper install patterns-openSUSE-devel_basis libqt5-qtbase-common-devel \
libqt5-qtsvg-devel libqt5-linguist libQt5Network-devel libQt5OpenGL-devel \
libQt5Concurrent-devel libQt5Xml-devel libQt5Sql-devel openal-soft-devel \
qrencode-devel libXScrnSaver-devel libQt5Sql5-sqlite libffmpeg-devel \
sqlcipher-devel
```
<a name="slackware-other-deps" />
#### Slackware:
#### Slackware
List of all the ``qTox`` dependencies and their SlackBuilds can be found here: http://slackbuilds.org/repository/14.1/network/qTox/
List of all the qTox dependencies and their SlackBuilds can be found here:
http://slackbuilds.org/repository/14.1/network/qTox/
<a name="ubuntu-other-deps" />
#### Ubuntu >=15.04:
#### Ubuntu >=15.04
```bash
sudo apt-get install build-essential qt5-qmake qt5-default qttools5-dev-tools libqt5opengl5-dev libqt5svg5-dev libopenal-dev libxss-dev qrencode libqrencode-dev libavutil-ffmpeg-dev libswresample-ffmpeg-dev libavcodec-ffmpeg-dev libswscale-ffmpeg-dev libavfilter-ffmpeg-dev libavdevice-ffmpeg-dev libglib2.0-dev libgdk-pixbuf2.0-dev libgtk2.0-dev libsqlcipher-dev
sudo apt-get install build-essential qt5-qmake qt5-default qttools5-dev-tools \
libqt5opengl5-dev libqt5svg5-dev libopenal-dev libxss-dev qrencode \
libqrencode-dev libavutil-ffmpeg-dev libswresample-ffmpeg-dev \
libavcodec-ffmpeg-dev libswscale-ffmpeg-dev libavfilter-ffmpeg-dev \
libavdevice-ffmpeg-dev libglib2.0-dev libgdk-pixbuf2.0-dev libgtk2.0-dev \
libsqlcipher-dev
```
<a name="ubuntu-other-1604-deps" />
@ -225,47 +251,54 @@ sudo apt-get install build-essential qt5-qmake qt5-default qttools5-dev-tools li
Install all of the toxcore dependencies.
<a name="arch-toxcore" />
#### Arch Linux:
#### Arch Linux
```bash
sudo pacman -S --needed opus libvpx libsodium
```
<a name="debian-toxcore" />
#### Debian:
#### Debian
```bash
sudo apt-get install libtool autotools-dev automake checkinstall check libopus-dev libvpx-dev libsodium-dev libavdevice-dev
sudo apt-get install libtool autotools-dev automake checkinstall check \
libopus-dev libvpx-dev libsodium-dev libavdevice-dev
```
<a name="fedora-toxcore" />
#### Fedora:
#### Fedora
```bash
sudo dnf install libtool autoconf automake check check-devel libsodium-devel opus-devel libvpx-devel
sudo dnf install libtool autoconf automake check check-devel libsodium-devel \
opus-devel libvpx-devel
```
<a name="opensuse-toxcore" />
#### openSUSE:
#### openSUSE
```bash
sudo zypper install libsodium-devel libvpx-devel libopus-devel patterns-openSUSE-devel_basis
sudo zypper install libsodium-devel libvpx-devel libopus-devel \
patterns-openSUSE-devel_basis
```
<a name="slackware-toxcore" />
#### Slackware:
#### Slackware
List of all the ``toxcore`` dependencies and their SlackBuilds can be found here: http://slackbuilds.org/repository/14.1/network/toxcore/
List of all the toxcore dependencies and their SlackBuilds can be found
here: http://slackbuilds.org/repository/14.1/network/toxcore/
<a name="ubuntu-toxcore" />
#### Ubuntu >=15.04:
#### Ubuntu >=15.04
```bash
sudo apt-get install libtool autotools-dev automake checkinstall check libopus-dev libvpx-dev libsodium-dev
sudo apt-get install libtool autotools-dev automake checkinstall check \
libopus-dev libvpx-dev libsodium-dev
```
### filter_audio
This step is best done before compiling `toxcore`.
This step is best done before compiling toxcore.
Now you can either follow the instructions at https://github.com/irungentoo/toxcore/blob/master/INSTALL.md#unix or use the [`bootstrap.sh`](/bootstrap.sh) script.
The script will automatically download and install `toxcore` and `libfilteraudio`:
Now you can either follow the instructions at
https://github.com/irungentoo/toxcore/blob/master/INSTALL.md#unix or use the
[`bootstrap.sh`](/bootstrap.sh) script. The script will automatically download
and install `toxcore` and `libfilteraudio`:
```bash
## in qTox directory
./bootstrap.sh # use -h or --help for more information
@ -283,7 +316,8 @@ sudo make install
### sqlcipher
If you are not using Fedora, skip this section, and go directly to compiling [**toxcore**](#toxcore-compiling).
If you are not using Fedora, skip this section, and go directly to compiling
[**toxcore**](#toxcore-compiling).
This method automatically detects whether to link statically or dynamically,
depending on your system configs.
@ -296,9 +330,11 @@ make -j$(nproc)
sudo make install
cd ..
```
If you wish to explictly link sqlcipher statically or dynamically use:
If you wish to explicitly link sqlcipher
[statically](#statically-linked-sqlcipher) or
[dynamically](#dynamically-linked-sqlcipher).
#### Statically linked:
#### Statically linked sqlcipher
```
git clone https://github.com/sqlcipher/sqlcipher
cd sqlpcipher
@ -309,7 +345,7 @@ sudo make install
cd ..
```
#### Dynamically linked:
#### Dynamically linked sqlcipher
```
git clone https://github.com/sqlcipher/sqlcipher
cd sqlcipher
@ -320,7 +356,7 @@ sudo make install
cd ..
```
### toxcore compiling
### Compile toxcore
Provided that you have all required dependencies installed, you can simply run:
```bash
@ -336,7 +372,9 @@ sudo ldconfig
### Compile qTox
**Make sure that all the dependencies are installed.** If you experience problems with compiling, it's most likely due to missing dependencies, so please make sure that you did install *all of them*.
**Make sure that all the dependencies are installed.** If you experience
problems with compiling, it's most likely due to missing dependencies, so please
make sure that you did install *all of them*.
Run in qTox directory to compile:
```bash
@ -349,73 +387,85 @@ Now you can start compiled qTox with `./qtox`
Congratulations, you've compiled qTox `:)`
#### openSUSE / Fedora:
#### openSUSE / Fedora
Note to Fedora users: check qt5 version before building default is 4.8 on fedora 21 / 22, everything up until qmake-qt5 will build fine but then qmake-qt5 will freak out.
Note to Fedora users: check qt5 version before building default is 4.8 on fedora
21 / 22, everything up until `qmake-qt5` will build fine but then `qmake-qt5`
will freak out.
```bash
qmake-qt5
make
```
#### Debian / Ubuntu / Mint
If the compiling process stops with a missing dependency like: `... libswscale/swscale.h missing` try:
If the compiling process stops with a missing dependency like:
`... libswscale/swscale.h missing` try:
```
apt-file search libswscale/swscale.h
```
And install the package that provides the missing file.
Start make again. Repeat if nessary until all dependencies are installed. If you can, please note down all additional dependencies you had to install that aren't listed here, and let us know what is missing `;)`
Start make again. Repeat if necessary until all dependencies are installed. If
you can, please note down all additional dependencies you had to install that
aren't listed here, and let us know what is missing `;)`
====
### Building packages
Alternately, qTox now has the experimental and probably-dodgy ability to package itself (in .deb
form natively, and .rpm form with <a href="http://joeyh.name/code/alien/">alien</a>).
Alternately, qTox now has the experimental and probably-dodgy ability to package
itself (in `.deb` form natively, and `.rpm` form with
[alien](http://joeyh.name/code/alien/)).
After installing the required dependencies, run `bootstrap.sh` and then run the
`buildPackages.sh` script, found in the tools folder. It will automatically get the
packages necessary for building .debs, so be prepared to type your password for sudo.
`buildPackages.sh` script, found in the tools folder. It will automatically get
the packages necessary for building `.deb`s, so be prepared to type your
password for sudo.
<a name="osx" />
## OS X
Compiling qTox on OS X for development requires 3 tools, [Xcode](https://developer.apple.com/xcode/) and [Qt 5.4+](http://www.qt.io/qt5-4/), and [homebrew](http://brew.sh).
Compiling qTox on OS X for development requires 3 tools:
[Xcode](https://developer.apple.com/xcode/),
[Qt 5.4+](http://www.qt.io/qt5-4/) and [homebrew](http://brew.sh).
### Automated Script
You can now set up your OS X system to compile qTox automatically thanks to the script in:
`./osx/qTox-Mac-Deployer-ULTIMATE.sh`
You can now set up your OS X system to compile qTox automatically thanks to the
script in: `./osx/qTox-Mac-Deployer-ULTIMATE.sh`
This script can be run independently of the qTox repo and is all that's needed to build from scratch on OS X.
This script can be run independently of the qTox repo and is all that's needed
to build from scratch on OS X.
To use this script you must launch terminal which can be found: `Applications > Utilities > Terminal.app`
To use this script you must launch terminal which can be found:
`Applications > Utilities > Terminal.app`
If you wish to lean more you can run `./qTox-Mac-Deployer-ULTIMATE.sh -h`
#### First Run / Install
If you are running the script for the first time you will want to makesure your system is ready.
To do this simply run `./qTox-Mac-Deployer-ULTIMATE.sh -i` to run you through the automated install set up.
If you are running the script for the first time you will want to make sure your
system is ready. To do this simply run `./qTox-Mac-Deployer-ULTIMATE.sh -i` to
run you through the automated install set up.
After running the installation setup you are now ready to build qTox from source, to do this simply run:
`./qTox-Mac-Deployer-ULTIMATE.sh -b`
After running the installation setup you are now ready to build qTox from
source, to do this simply run: `./qTox-Mac-Deployer-ULTIMATE.sh -b`
If there aren't any errors then you'll find a locally working qTox application in your home folder under
`~/qTox-Mac_Build`
If there aren't any errors then you'll find a locally working qTox application
in your home folder under `~/qTox-Mac_Build`
#### Updating
If you want to update your application for testing purposes or you want to run a nightly build setup then run:
`./qTox-Mac-Deployer-ULTIMATE.sh -u` and follow the prompts.
(NOTE: If you know you updated the repos before running this hit Y)
followed by
`./qTox-Mac-Deployer-ULTIMATE.sh -b`
to build the application once more. (NOTE: This will delete your previous build.)
If you want to update your application for testing purposes or you want to run a
nightly build setup then run: `./qTox-Mac-Deployer-ULTIMATE.sh -u` and follow
the prompts. (NOTE: If you know you updated the repos before running this hit Y)
followed by `./qTox-Mac-Deployer-ULTIMATE.sh -b` to build the application once
more. (NOTE: This will delete your previous build.)
#### Deploying
OS X requires an extra step to make the `qTox.app` file shareable on a system that doesn't have the required libraries installed already.
OS X requires an extra step to make the `qTox.app` file shareable on a system
that doesn't have the required libraries installed already.
If you want to share the build you've made with your other friends who use OS X then simply run:
`./qTox-Mac-Deployer-ULTIMATE.sh -d`
If you want to share the build you've made with your other friends who use OS X
then simply run: `./qTox-Mac-Deployer-ULTIMATE.sh -d`
### Manual Compiling
#### Required Libraries
@ -424,12 +474,14 @@ Install homebrew if you don't have it:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
First, let's install the dependencies available via brew.
First, let's install the dependencies available via `brew`.
```bash
brew install git ffmpeg qrencode libtool automake autoconf check qt5 libvpx opus sqlcipher libsodium
brew install git ffmpeg qrencode libtool automake autoconf check qt5 libvpx \
opus sqlcipher libsodium
```
Next, install [filter_audio](https://github.com/irungentoo/filter_audio) (you may delete the directory it creates afterwards):
Next, install [filter_audio](https://github.com/irungentoo/filter_audio) (you
may delete the directory it creates afterwards):
```bash
git clone https://github.com/irungentoo/filter_audio.git
cd filter_audio
@ -437,22 +489,28 @@ sudo make install
cd ../
```
Next, install [Toxcore](https://github.com/irungentoo/toxcore/blob/master/INSTALL.md#osx)
Next, install
[toxcore](https://github.com/irungentoo/toxcore/blob/master/INSTALL.md#osx)
Then, clone qTox:
```bash
git clone https://github.com/tux3/qTox``
```
Finally, copy all required files. Whenever you update your brew packages, you may skip all of the above steps and simply run the following commands:
Finally, copy all required files. Whenever you update your brew packages, you
may skip all of the above steps and simply run the following commands:
```bash
cd ./git/qTox
sudo bash bootstrap-osx.sh
```
#### Compiling
You can build qTox with Qt Creator [seperate download](http://www.qt.io/download-open-source/#section-6) or you can hunt down the version of home brew qt5 your using in the `/usr/local/Cellar/qt5/` directory.
e.g. `/usr/local/Cellar/qt5/5.5.1_2/bin/qmake` with `5.5.1_2` being the version of Qt5 that's been installed.
You can build qTox with Qt Creator
[seperate download](http://www.qt.io/download-open-source/#section-6) or you can
hunt down the version of home brew qt5 your using in the
`/usr/local/Cellar/qt5/` directory. e.g.
`/usr/local/Cellar/qt5/5.5.1_2/bin/qmake` with `5.5.1_2` being the version of
Qt5 that's been installed.
With that; in your terminal you can compile qTox in the git dir:
```bash
@ -468,7 +526,8 @@ cd build
```
#### Deploying
If you compiled qTox properly you can now deploy the `qTox.app` that's created where you built qTox so you can distribute the package.
If you compiled qTox properly you can now deploy the `qTox.app` that's created
where you built qTox so you can distribute the package.
Using your qt5 homebrew installation from the build directory:
```bash
@ -476,48 +535,64 @@ Using your qt5 homebrew installation from the build directory:
```
#### Running qTox
You've got 2 choices, either click on the qTox app that suddenly exists, or do the following:
You've got 2 choices, either click on the qTox app that suddenly exists, or do
the following:
```bash
qtox.app/Contents/MacOS/qtox
```
* Enjoy the snazzy CLI output as your friends and family congratulate you on becoming a hacker
Enjoy the snazzy CLI output as your friends and family congratulate you on
becoming a hacker
<a name="windows" />
## Windows
### Qt
Download the Qt online installer for Windows from [qt-project.org](http://qt-project.org/downloads).
While installation you have to assemble your Qt toolchain. Take the most recent version of Qt compiled with MinGW.
Although the installer provides its own bundled MinGW compiler toolchain its recommend installing it separately because Qt is missing MSYS which is needed to compile and install OpenCV and OpenAL. Thus you can - if needed - deselect the tab "Tools".
The following steps assume that Qt is installed at "C:\Qt". If you decided to choose another location, replace corresponding parts.
Download the Qt online installer for Windows from
[qt-project.org](http://qt-project.org/downloads). While installation you have
to assemble your Qt toolchain. Take the most recent version of Qt compiled with
MinGW. Although the installer provides its own bundled MinGW compiler toolchain
its recommend installing it separately because Qt is missing MSYS which is
needed to compile and install OpenCV and OpenAL. Thus you can - if needed -
deselect the tab `Tools`. The following steps assume that Qt is installed at
`C:\Qt`. If you decided to choose another location, replace corresponding parts.
### MinGW
Download the MinGW installer for Windows from [sourceforge.net](http://sourceforge.net/projects/mingw/files/Installer/).
Make sure to install MSYS (a set of Unix tools for Windows).
The following steps assume that MinGW is installed at "C:\MinGW". If you decided to choose another location, replace corresponding parts.
Check that the version of MinGW, corresponds to the version of the QT component!
Download the MinGW installer for Windows from
[sourceforge.net](http://sourceforge.net/projects/mingw/files/Installer/). Make
sure to install MSYS (a set of Unix tools for Windows). The following steps
assume that MinGW is installed at `C:\MinGW`. If you decided to choose another
location, replace corresponding parts. Check that the version of MinGW,
corresponds to the version of the QT component!
### WGet
Download the WGet installer for Windows from(
http://gnuwin32.sourceforge.net/packages/wget.htm).
Install them. The following steps assume that WGet is installed at "C:\Program Files\GnuWin32\". If you decided to choose another location, replace corresponding parts.
### Wget
Download the Wget installer for Windows from
http://gnuwin32.sourceforge.net/packages/wget.htm. Install them. The following
steps assume that Wget is installed at `C:\Program Files\GnuWin32\`. If you
decided to choose another location, replace corresponding parts.
### Setting up Path
Add MinGW/MSYS/CMake binaries to the system path to make them globally accessible.
Open Control Panel -> System and Security -> System -> Advanced system settings -> Environment Variables...(or run "sysdm.cpl" select tab "Advanced system settings" -> button "Environment Variables")
In the second box search for the PATH variable and press Edit...
The input box "Variable value:" should already contain some directories. Each directory is separated with a semicolon.
Extend the input box by adding ";C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\Program Files (x86)\CMake 2.8\bin;C:\Program Files\GnuWin32\bin".
The very first semicolon must only be added if it is missing. CMake may be added by installer automatically.
Add MinGW/MSYS/CMake binaries to the system path to make them globally
accessible. Open `Control Panel` -> `System and Security` -> `System` ->
`Advanced system settings` -> `Environment Variables...` (or run `sysdm.cpl`
select tab `Advanced system settings` -> button `Environment Variables`). In the
second box search for the `PATH` variable and press `Edit...`. The input box
`Variable value:` should already contain some directories. Each directory is
separated with a semicolon. Extend the input box by adding
`;C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\Program Files (x86)\CMake 2.8\bin;C:\Program Files\GnuWin32\bin`.
The very first semicolon must only be added if it is missing. CMake may be added
by installer automatically.
### Cloning the Repository
Clone the repository (https://github.com/tux3/qTox.git) with your preferred Git client. [SmartGit](http://www.syntevo.com/smartgit/) is very nice for this task (you may need to add the path to the git.exe system variable Path).
The following steps assume that you cloned the repository at "C:\qTox". If you decided to choose another location, replace corresponding parts.
Clone the repository (https://github.com/tux3/qTox.git) with your preferred Git
client. [SmartGit](http://www.syntevo.com/smartgit/) is very nice for this task
(you may need to add the path to the `git.exe` system variable Path). The
following steps assume that you cloned the repository at `C:\qTox`. If you
decided to choose another location, replace corresponding parts.
### Getting dependencies
Run bootstrap.bat in cloned C:\qTox directory
Script will download rest of dependencies compile them and put to appropriate directories.
Run `bootstrap.bat` in cloned `C:\qTox` directory. Script will download rest of
dependencies compile them and put to appropriate directories.

View File

@ -1,9 +1,18 @@
qTox
======
[**User Manual**](/doc/user_manual_en.md) **⦁** [**Compile**](/INSTALL.md) **⦁** [**Contribute**](https://github.com/tux3/qTox/wiki#contributing) **⦁** [**Report bugs**](https://github.com/tux3/qTox/wiki/Writing-Useful-Bug-Reports) **⦁** [**Translate**](https://github.com/tux3/qTox/wiki/Translating) **⦁** [**Jenkins builds**](https://build.tox.chat/) **⦁** [**Keyboard shortcuts**](https://github.com/tux3/qTox/wiki/Keyboard-shortcuts) **⦁** [**Mailing list**](https://lists.tox.chat) **⦁** **IRC Channel:** [#qtox@freenode](https://webchat.freenode.net/?channels=qtox)
[**User Manual**](/doc/user_manual_en.md) **⦁**
[**Compile**](/INSTALL.md) **⦁**
[**Contribute**](https://github.com/tux3/qTox/wiki#contributing) **⦁**
[**Report bugs**](https://github.com/tux3/qTox/wiki/Writing-Useful-Bug-Reports) **⦁**
[**Translate**](https://github.com/tux3/qTox/wiki/Translating) **⦁**
[**Jenkins builds**](https://build.tox.chat/) **⦁**
[**Keyboard shortcuts**](https://github.com/tux3/qTox/wiki/Keyboard-shortcuts) **⦁**
[**Mailing list**](https://lists.tox.chat) **⦁**
**IRC Channel:** [#qtox@freenode](https://webchat.freenode.net/?channels=qtox)
**qTox is a powerful Tox client that follows the Tox design guidelines while running on all major platforms.**
**qTox is a powerful Tox client that follows the Tox design guidelines while
running on all major platforms.**
----
@ -21,11 +30,14 @@ qTox
- [**Port**](/INSTALL.md#freebsd-easy)
<br/>
Builds other than installer/packages don't receive updates automatically, so make sure you get back to this site and regularly download the latest version of qTox.
Builds other than installer/packages don't receive updates automatically, so
make sure you get back to this site and regularly download the latest version of
qTox.
#### Screenshots
Note: The screenshots may not always be up to date, but they should give a good idea of the general look and features.
Note: The screenshots may not always be up to date, but they should give a good
idea of the general look and features.
![Screenshot 01](https://i.imgur.com/olb89CN.png)

View File

@ -32,137 +32,213 @@ is directly aimed at you, and not sent to everyone, that is:
## User Profile
Your User Profile contains everything you share with other people on Tox. You can open it by clicking the picture in the top left corner. It contains the following settings:
Your User Profile contains everything you share with other people on Tox. You
can open it by clicking the picture in the top left corner. It contains the
following settings:
### Public Information
* _Name:_ This is your nickname which everyone who has your Tox ID can see.
* _Status:_ You can post a status message here, which again everyone on who has your Tox ID can see.
* _Status:_ You can post a status message here, which again everyone on who has
your Tox ID can see.
### Tox ID
The long code in hexadecimal format is your Tox ID, share this with everyone you want to talk to. Click it to copy it to your clipboard.
Your Tox ID is also shown as QR code to easily share it with friends over a smartphone.
The long code in hexadecimal format is your Tox ID, share this with everyone you
want to talk to. Click it to copy it to your clipboard. Your Tox ID is also
shown as QR code to easily share it with friends over a smartphone.
The "Save image" button saves the QR code into a image file, while the "Copy image" button copies into your clipboard.
The "Save image" button saves the QR code into a image file, while the "Copy
image" button copies into your clipboard.
### Profile
qTox allows you to use multiple Tox IDs with different profiles, each of which can have different nicknames, status messages and friends.
qTox allows you to use multiple Tox IDs with different profiles, each of which
can have different nicknames, status messages and friends.
+ _Current profile:_ Shows the filename which stores your information.
+ _Current profile location:_ Shows the path to the profile file.
+ _Rename:_ Allows you to rename your profile. Your nickname and profile name don't have to be the same.
+ _Rename:_ Allows you to rename your profile. Your nickname and profile name
don't have to be the same.
+ _Delete:_ Deletes your profile and the corresponding chat history.
+ _Export:_ Allows you to export your profile in a format compatible with other Tox clients. You can also manually back up your \*.tox files.
+ _Export:_ Allows you to export your profile in a format compatible with other
Tox clients. You can also manually back up your \*.tox files.
+ _Logout:_ Close your current profile and show the login window.
+ _Remove password:_ Removes the existing password for your profile. If the profile already has no password, you will be notified.
+ _Change password:_ Allows you to either change an existing password, or create a new password if your profile does not have one.
+ _Remove password:_ Removes the existing password for your profile. If the
profile already has no password, you will be notified.
+ _Change password:_ Allows you to either change an existing password, or create
a new password if your profile does not have one.
## Settings
### General
#### General Settings
* _Language:_ Changes which language the qTox interface uses.
* _Autostart:_ If set, qTox will start when you login on your computer. qTox will also automatically open the profile which was active when you ticked the checkbox, but this only works if your profile isn't encrypted (has no password set).
* _Light icon:_ If set, qTox will use a different icon, which is easier to see on black backgrounds.
* _Autostart:_ If set, qTox will start when you login on your computer. qTox
will also automatically open the profile which was active when you ticked the
checkbox, but this only works if your profile isn't encrypted (has no password
set).
* _Light icon:_ If set, qTox will use a different icon, which is easier to see
on black backgrounds.
* _Show system tray icon:_ If set, qTox will show its icon in your system tray.
* _Start in tray:_ On start, qTox will only show its tray icon and no window.
* _Minimize to tray:_ The minimize button on the top right, will minimize qTox to its tray icon. There won't be a taskbar item.
* _Auto away after (0 to disable):_ After the specified amount of time, qTox will set your status to "Away". A setting of 0 will never change your status.
* _Default directory to save files:_ Allows you to specify the default destination for incoming file transfers.
* _Autoaccept files:_ If set, qTox will automatically accept file transfers and put them in the directory specified above.
* _Start in tray:_ On start, qTox will only show its tray icon and no
window.
* _Minimize to tray:_ The minimize button on the top right, will minimize
qTox to its tray icon. There won't be a taskbar item.
* _Auto away after (0 to disable):_ After the specified amount of time, qTox
will set your status to "Away". A setting of 0 will never change your status.
* _Default directory to save files:_ Allows you to specify the default
destination for incoming file transfers.
* _Autoaccept files:_ If set, qTox will automatically accept file transfers and
put them in the directory specified above.
#### Chat
* _Play sound:_ If checked, qTox will play a sound when you get a new message.
* _Open window:_ If checked, the qTox window will be opened when you receive a new message. If you use the multiple windows mode, see [Multi Window Mode](#multi-window-mode) for details.
* _Focus window:_ If checked, the qTox window will additionally be focused when you receive a new message.
* _Show contacts' status changes:_ If set, qTox will show contact status changes in your chat window.
* _Group chats always notify:_ If set, qTox will notify you on every new message in a groupchat.
* _Place groupchats at top of friend list:_ If checked, your groupchats will be at the top of the contacts list instead of being sorted with your other contacts.
* _Faux offline messaging:_ If enabled, qTox will attempt to send messages when a currently offline contact comes online again.
* _Compact contact list:_ If set, qTox will use a contact list layout which takes up less screen space.
* _Multiple windows mode:_ If enabled, the qTox user interface will be split into multiple independent windows. For details see [Multi Window Mode](#multi-window-mode).
* _Open each chat in an individual window:_ If checked, a new window will be opened for every chat you open. If you manually grouped the chat into another window, the window which hosts the chat will be focused.
* _Open window:_ If checked, the qTox window will be opened when you receive a
new message. If you use the multiple windows mode, see
[Multi Window Mode](#multi-window-mode) for details.
* _Focus window:_ If checked, the qTox window will additionally be focused
when you receive a new message.
* _Show contacts' status changes:_ If set, qTox will show contact status changes
in your chat window.
* _Group chats always notify:_ If set, qTox will notify you on every new message
in a groupchat.
* _Place groupchats at top of friend list:_ If checked, your groupchats will be
at the top of the contacts list instead of being sorted with your other
contacts.
* _Faux offline messaging:_ If enabled, qTox will attempt to send messages when
a currently offline contact comes online again.
* _Compact contact list:_ If set, qTox will use a contact list layout which
takes up less screen space.
* _Multiple windows mode:_ If enabled, the qTox user interface will be split
into multiple independent windows. For details see
[Multi Window Mode](#multi-window-mode).
* _Open each chat in an individual window:_ If checked, a new window will be
opened for every chat you open. If you manually grouped the chat into
another window, the window which hosts the chat will be focused.
#### Theme
* _Use emoticons:_ If enabled, qTox will replace smileys ( e.g. `:-)` ) with corresponding graphical emoticons.
* _Smiley Pack:_ Allows you to choose from different sets of shipped emoticon styles.
* _Use emoticons:_ If enabled, qTox will replace smileys ( e.g. `:-)` ) with
corresponding graphical emoticons.
* _Smiley Pack:_ Allows you to choose from different sets of shipped emoticon
styles.
* _Emoticon size:_ Allows you to change the size of the emoticons.
* _Style:_ Changes the appearance of qTox.
* _Theme color:_ Changes the colors qTox uses.
* _Timestamp format:_ Change the format in which qTox displays message timestamps.
* _Timestamp format:_ Change the format in which qTox displays message
timestamps.
* _Date format:_ Same as above for the date.
#### Connection Settings
* _Enable IPv6 (recommended):_ If enabled, qTox will use IPv4 and IPv6 protocols, whichever is available. If disabled, qTox will only use IPv4.
* _Enable UDP (recommended):_ If enabled, qTox will use TCP and UDP protocols. If disabled, qTox will only use TCP, which lowers the amount of open connections and slightly decreases required bandwidth, but is also slower and puts more load on other network participants.
* _Enable IPv6 (recommended):_ If enabled, qTox will use IPv4 and IPv6
protocols, whichever is available. If disabled, qTox will only use IPv4.
* _Enable UDP (recommended):_ If enabled, qTox will use TCP and UDP protocols.
If disabled, qTox will only use TCP, which lowers the amount of open
connections and slightly decreases required bandwidth, but is also slower and
puts more load on other network participants.
Most users will want both options enabled, but if qTox negatively impacts your router or connection, you can try to disable them.
Most users will want both options enabled, but if qTox negatively impacts your
router or connection, you can try to disable them.
* _Proxy type:_ If you want to use a proxy, set the type here. "None" disables the proxy.
* _Proxy type:_ If you want to use a proxy, set the type here. "None" disables
the proxy.
* _Address:_ If you use a proxy, enter the address here.
* _Port:_ If you use a proxy, enter the port here.
* _Reconnect:_ Reconnect to the Tox network, e.g. if you changed the proxy settings.
* _Reconnect:_ Reconnect to the Tox network, e.g. if you changed the proxy
settings.
### Privacy
* _Send typing notifications:_ If enabled, notify your chat partner when you are currently typing.
* _Keep chat history:_ If enabled, qTox will save your sent and received messages. Encrypt your profile, if you want to encrypt the chat history.
* _Send typing notifications:_ If enabled, notify your chat partner when you are
currently typing.
* _Keep chat history:_ If enabled, qTox will save your sent and received
messages. Encrypt your profile, if you want to encrypt the chat history.
#### NoSpam
NoSpam is a feature of Tox that prevents a malicious user from spamming you with friend requests. If you get spammed, enter or generate a new NoSpam value. This will alter your Tox ID. You don't need to tell your existing contacts your new Tox ID, but you have to tell new contacts your new Tox ID. Your Tox ID can be found in your [User Profile](#user-profile).
NoSpam is a feature of Tox that prevents a malicious user from spamming you with
friend requests. If you get spammed, enter or generate a new NoSpam value. This
will alter your Tox ID. You don't need to tell your existing contacts your new
Tox ID, but you have to tell new contacts your new Tox ID. Your Tox ID can be
found in your [User Profile](#user-profile).
### Audio/Video
#### Audio Settings
* _Playback device:_ Select the device qTox should use for all audio output (notifications, calls, etc).
* _Playback device:_ Select the device qTox should use for all audio output
(notifications, calls, etc).
* _Playback:_ Here you can adjust the playback volume to your needs.
* _Capture device:_ Select the device qTox should use for audio input in calls.
* _Microphone:_ Set the input volume of your microphone with this slider. When you are talking normally, the displayed volume indicator should be in the green range.
* _Filter audio:_ If enabled, qTox will try to remove noise and echo from your audio input.
* _Microphone:_ Set the input volume of your microphone with this slider. When
you are talking normally, the displayed volume indicator should be in the
green range.
* _Filter audio:_ If enabled, qTox will try to remove noise and echo from your
audio input.
#### Video Settings
* _Video device:_ Select the video device qTox should use for video calls. "None" will show a dummy picture to your chat partner. "Desktop" will stream the content of your screen.
* _Resolution:_ You can select from the available resolutions and frame rates here. Higher resolutions provide more quality, but if the bandwidth of your connection is low, the video may get choppy.
* _Video device:_ Select the video device qTox should use for video calls.
"None" will show a dummy picture to your chat partner. "Desktop" will stream
the content of your screen.
* _Resolution:_ You can select from the available resolutions and frame rates
here. Higher resolutions provide more quality, but if the bandwidth of your
connection is low, the video may get choppy.
If you set up everything correctly, you should see the preview of your video device in the box below.
If you set up everything correctly, you should see the preview of your video
device in the box below.
* _Rescan devices:_ Use this button to search for newly attached devices, e.g. you plugged in a webcam.
* _Rescan devices:_ Use this button to search for newly attached devices, e.g.
you plugged in a webcam.
### Advanced
* _Make Tox portable:_ If enabled, qTox will load/save user data from the working directory, instead of ` ~/.config/tox/ `.
* _Reset to default settings:_ Use this button to revert any changes you made to the qTox settings.
* _Make Tox portable:_ If enabled, qTox will load/save user data from the
working directory, instead of ` ~/.config/tox/ `.
* _Reset to default settings:_ Use this button to revert any changes you made to
the qTox settings.
### About
* _Version:_ Shows the version of qTox and the libraries it depends on. Please append this information to every bug report.
* _Version:_ Shows the version of qTox and the libraries it depends on. Please
append this information to every bug report.
* _License:_ Shows the license under which the code of qTox is available.
* _Authors:_ Lists the people who developed this shiny piece of software.
* _Known Issues:_ Links to our list of known issues and improvements.
## Groupchats
Groupchats are a way to talk with multiple friends at the same time, like when you are standing together in a group. To create a groupchat click the groupchat icon in the bottom left corner and set a name. Now you can invite your contacts by right-clicking on the contact and selecting "Invite to group". Currently, if the last person leaves the chat, it is closed and you have to create a new one. Videochats and file transfers are currently unsupported in groupchats.
Groupchats are a way to talk with multiple friends at the same time, like when
you are standing together in a group. To create a groupchat click the groupchat
icon in the bottom left corner and set a name. Now you can invite your contacts
by right-clicking on the contact and selecting "Invite to group". Currently, if
the last person leaves the chat, it is closed and you have to create a new one.
Videochats and file transfers are currently unsupported in groupchats.
## Message Styling
Similar to other messaging applications, qTox supports stylized text formatting. Formatting follows [Markdown syntax](https://daringfireball.net/projects/markdown/syntax), thus:
Similar to other messaging applications, qTox supports stylized text formatting.
Formatting follows
[Markdown syntax](https://daringfireball.net/projects/markdown/syntax), thus:
* For **Bold**, surround text in double asterisks or underscores: `**text**` or `__text__`
* For **Italics**, surround text in single asterisks or underscores: `*text*` or `_text_`
* For **Bold**, surround text in double asterisks or underscores: `**text**`
or `__text__`
* For **Italics**, surround text in single asterisks or underscores: `*text*`
or `_text_`
* For **Strikethrough**, surround text in single tilde's: `~text~`
* For **Underline**, surround text in single dashes: `-text-`
Additionally, qTox supports three modes of Markdown parsing:
* `Plaintext`: No text is stylized
* `Show Formatting Characters`: Stylize text while showing formatting characters (Default)
* `Don't Show Formatting Characters`: Stylize text without showing formatting characters
* `Show Formatting Characters`: Stylize text while showing formatting characters
(Default)
* `Don't Show Formatting Characters`: Stylize text without showing formatting
characters
*Note that any change in Markdown preference will require a restart.*
## Multi Window Mode
In this mode, qTox will separate its main window into a single contact list and one or multiple chat windows, which allows you to have multiple conversations on your screen at the same time. Additionally you can manually group chats into a window by dragging and dropping them onto each other. This mode can be activated and configured in [settings](#settings).
In this mode, qTox will separate its main window into a single contact list and
one or multiple chat windows, which allows you to have multiple conversations on
your screen at the same time. Additionally you can manually group chats into a
window by dragging and dropping them onto each other. This mode can be activated
and configured in [settings](#settings).
## Keyboard Shortcuts