caracal 0.4.0

Nostr client for Gemini
![logo](https://gitlab.com/cipres/caracal/-/raw/master/media/img/caracal.png)

> The caracal ("Caracal caracal"; /ˈkærəkæl/) is a wild cat native to Africa, the Middle East, Central Asia, and arid areas of Pakistan and northwestern India. It is characterised by a robust build, long legs, a short face, long tufted ears, relatively short tail, and long canine teeth. [Caracal (Gemipedia)]gemini://gemi.dev/cgi-bin/wp.cgi/view?Caracal

A simple [Nostr](https://nostr.how) client with a [gemini](https://geminiprotocol.net) interface. It is a Nostr client for what we often call the [Geminispace](gemini://gemi.dev/cgi-bin/wp.cgi/view?Gemini+(protocol)).

The beauty of the Nostr protocol combined with the simplicity of Gemini.

*caracal* is written in Rust and uses the [rust-nostr](https://rust-nostr.org) SDK. Use the
[Matrix room](https://matrix.to/#/#caracal:matrix.org) for help and discussions, or the
[BBS subspace](gemini://bbs.geminispace.org/s/caracal) on the Gemini BBS.

Follow *caracal* on nostr: [npub1vsgkdknxzhj9853gmpz5hkvr5a9zysqcnaphwfcex5k0te776ckq8ucxqx](nostr:npub1vsgkdknxzhj9853gmpz5hkvr5a9zysqcnaphwfcex5k0te776ckq8ucxqx) ([Nostter](https://nostter.app/npub1vsgkdknxzhj9853gmpz5hkvr5a9zysqcnaphwfcex5k0te776ckq8ucxqx)).

![screenshot-feed-0](https://gitlab.com/cipres/caracal/-/raw/master/media/screenshots/feed.webp)
![screenshot-liber](https://blossom.primal.net/afbfad033a5893534446925a660e9260c296cc13c1cec404eecc8a005c65975d.webp)
![everything-burns](https://cdn.azzamo.media/25cc1d60fd16cfb06340b28ae395d32b8892b346e0d7a8a58d995cc02a17d2bb.webp)
![i18n](https://blossom.primal.net/3206213608a4e1c34a89d7c6ea340e2eaceb1e4bcff05917edb925f2a30f4537.webp)
![hashtag-nsite](https://cdn.azzamo.media/72a8879352b64be03f1988ca52c47a75af3e4421a1458ce7f97c6ff1d6a433e8.webp)

- UI languages: English, French, Spanish, Japanese
- Long-form notes (gemtext <=> markdown): compose notes in the gemtext format, view long-form notes
- Remote signer (bunker)
- Encrypted private messages (NIP-17)
- Payment targets (NIP-A3)
- Polls and [Nsites]https://nsite.run
- Supports file uploads to blossom servers ([Titan]https://communitywiki.org/wiki/Titan to [Blossom]https://github.com/hzrd149/blossom bridge)
- Renders images attached to notes over Gemini

## Donations

Monero (XMR)

```
46CAwqF4zwjL3Pe1oxtr2AGbmzLFY4rp6eAGkiDbAfYnYCAx8C47dex2XGb6VqXDUoYEZmemLzKxT1wkjFU6ebk23DensvR
```

## Install

[![AppImage](https://appimage.github.io/img/logo3.svg)](https://gitlab.com/cipres/caracal/-/releases/continuous-master/downloads/caracal-x86_64.AppImage)

### Cargo

```sh
cargo install caracal
```

Run it:

```sh
caracal
```

Then go to [gemini://localhost](gemini://localhost) in your Gemini browser.

If needed, you can change the listen port (which is 1965 by default) using the -p option.

```sh
caracal -p 1995
```

### Binary release (GitLab)
#### Intel x64

You can download the latest binary release for Linux (x64)
[here](https://gitlab.com/cipres/caracal/-/releases/continuous-master/downloads/caracal).

```sh
curl -L -o ~/.local/bin/caracal https://gitlab.com/cipres/caracal/-/releases/continuous-master/downloads/caracal
chmod +x ~/.local/bin/caracal
```

#### ARM64

You can download the latest binary release for Linux (arm64)
[here](https://gitlab.com/cipres/caracal/-/releases/continuous-master/downloads/caracal-arm64).

```sh
curl -L -o ~/.local/bin/caracal https://gitlab.com/cipres/caracal/-/releases/continuous-master/downloads/caracal-arm64
chmod +x ~/.local/bin/caracal
```

### AppImage

[![AppImage](https://appimage.github.io/img/logo3.svg)](https://gitlab.com/cipres/caracal/-/releases/continuous-master/downloads/caracal-x86_64.AppImage)

This AppImage is based on the [Lagrange](https://gmi.skyjake.fi/lagrange/) browser (v1.18.4). It bundles and runs caracal for you, making it the easiest way to get started if you use Linux.

It runs caracal on port 1985 to avoid conflicts.

[Download the AppImage](https://gitlab.com/cipres/caracal/-/releases/continuous-master/downloads/caracal-x86_64.AppImage).

```sh
curl -L -o caracal-x86_64.AppImage https://gitlab.com/cipres/caracal/-/releases/continuous-master/downloads/caracal-x86_64.AppImage
chmod +x ./caracal-x86_64.AppImage
./caracal-x86_64.AppImage
```

## Usage

To use *caracal*, you'll need to use a Gemini browser like
[Lagrange](https://gmi.skyjake.fi/lagrange/).

Start *caracal*, open Lagrange and go to [gemini://localhost](gemini://localhost).
You should see a page telling you that you need to use a X509 Gemini certificate.

From Lagrange, create an identity by selecting
*New identity for domain* in the identities controller menu (top-right corner).
Lagrange will then always use this certificate to access caracal.

*caracal* maps your Gemini identity to your Nostr identity, therefore you can
have multiple Nostr identities by creating different Gemini certificates and
switching between them.

### Remote signer (Nostr Connect)

If you want to use a remote signer (bunker), create an identity in Lagrange
(*New identity for domain*), click on *More*, and set the *Organization*
field's value to **nostr**. After creating the identity, activate it and you will
be prompted for the *Nostr Bunker URI*. Copy-paste your bunker URI and send it.
You should now be connected to the remote signer.

### Web content

caracal is able to serve content from web URLs contained in Nostr notes over Gemini,
therefore images and videos from notes will be displayed in the Gemini browser.

If you use Lagrange, you can activate automatic loading of images as you scroll
by activating the "Load next image on scroll key" setting in the "Behavior"
section of the preferences ("File menu" => "Preferences").

### Drafts

*caracal* supports writing and editing note drafts using the
[titan](https://communitywiki.org/wiki/Titan) protocol. Click on *New draft*
in the homepage and you should get a Titan dialog window from Lagrange. Be sure
to select the correct identity.

Once you've uploaded your draft, you can edit it by just pressing *Ctrl+e*.

You can attach files to your note by clicking on *Upload file* in the note.
Files are uploaded to a Blossom server.

Just click on *Post note* when you're ready to send it.

## Contributors

- [knshow]gemini://bbs.geminispace.org/u/knshow: Testing, Japanese translation