summaryrefslogtreecommitdiff
path: root/README.md
blob: e9b1ee8ae6555f7a02f5d3fad68d4df387e4f902 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# cove

Cove is a TUI client for [euphoria.io](https://euphoria.io/), a threaded
real-time chat platform.

![A very meta screenshot](screenshot.png)

It runs on Linux, Windows and macOS.

## Using cove

To start cove, simply run `cove` in your terminal. For more info about the
available subcommands such as exporting room logs or resetting cookies, run
`cove --help`.

If you delete rooms, cove's vault (the database it stores messages and other
things in) won't automatically shrink. If it takes up too much space, try
running `cove gc` and waiting for it to finish. This isn't done automatically
because it can take quite a while.

## Manual installation

This section contains instructions on how to install cove by compiling it yourself.
It doesn't assume you know how to program, but it does assume basic familiarity with the command line on your platform of choice.
Cove runs in the terminal, after all.

### Installing rustup

Cove is written in Rust, so the first step is to install rustup. Either install
it from your package manager of choice (if you have one) or use the
[installer](https://rustup.rs/).

Test your installation by running `rustup --version` and `cargo --version`. If
rustup is installed correctly, both of these should show a version number.

Cove is designed on the current version of the stable toolchain. If cove doesn't
compile, you can try switching to the stable toolchain and updating it using the
following commands:
```bash
$ rustup default stable
$ rustup update
```

### Installing cove

To install or update to the latest release of cove, run the following command:

```bash
$ cargo install --force --git https://github.com/Garmelon/cove --branch latest
```

If you like to live dangerously and want to install or update to the latest,
bleeding-edge, possibly-broken commit from the repo's main branch, run the
following command.

**Warning:** This could corrupt your vault. Make sure to make a backup before
running the command.

```bash
$ cargo install --force --git https://github.com/Garmelon/cove
```

To install a specific version of cove, run the following command and substitute
in the full version you want to install:

```bash
$ cargo install --force --git https://github.com/Garmelon/cove --tag v0.1.0
```

## Config file

Cove's config file uses the [TOML](https://toml.io/) format.

When launched, cove prints the location it is loading its config file from. To
configure cove, create a config file at that location. This location can be
changed via the `--config` command line option.

The following is a complete list of available options. If a command line option
with the same purpose exists, it takes precedence over the option specified in
the config file.

### `data_dir`

**Type:** String (representing path)  
**Default:** Platform dependent

The directory that cove stores its data in when not running in ephemeral mode.

Relative paths are interpreted relative to the user's home directory.

See also the `--data-dir` command line option.

### `ephemeral`

**Type:** Boolean  
**Default:** `false`

Whether to start in ephemeral mode.

In ephemeral mode, cove doesn't store any data. It completely ignores any
options related to the data dir.

See also the `--ephemeral` command line option.

### `offline`

**Type:** Boolean  
**Default:** `false`

Whether to start in offline mode.

In offline mode, cove won't automatically join rooms marked via the `autojoin`
option on startup. You can still join those rooms manually by pressing `a` in
the rooms list.

See also the `--offline` command line option.

### `rooms_sort_order`

**Type:** String, one of `alphabetic`, `importance`  
**Default:** `alphabetic`

Initial sort order of rooms list.

`alphabetic` sorts rooms in alphabetic order.

`importance` sorts rooms by the following criteria (in descending order of
priority):

1. connected rooms before unconnected rooms
2. rooms with unread messages before rooms without
3. alphabetic order

### `euph.rooms.<room>.autojoin`

**Type:** Boolean  
**Default:** `false`

Whether to automatically join this room on startup.

### `euph.rooms.<room>.username`

**Type:** String  
**Default:** Not set

If set, cove will set this username upon joining if there is no username
associated with the current session.

### `euph.rooms.<room>.force_username`

**Type:** Boolean  
**Default:** `false`

If `euph.rooms.<room>.username` is set, this will force cove to set the username
even if there is already a different username associated with the current
session.

### `euph.rooms.<room>.password`

**Type:** String  
**Default:** Not set

If set, cove will try once to use this password to authenticate, should the room
be password-protected.