README.md: Update according to thumbnail generation

This commit is contained in:
Xavier Del Campo Romero 2023-07-22 04:14:41 +02:00
parent 77327e7c2d
commit 2f1caebaae
Signed by: xavi
GPG Key ID: 84FF3612A9BF43F2
2 changed files with 97 additions and 2 deletions

View File

@ -23,6 +23,9 @@ portability, minimalism, simplicity and efficiency.
- Uses [`libweb`](https://gitea.privatedns.org/xavi/libweb), a tiny web framework.
- A simple JSON file as the credentials database.
- No JavaScript.
- Thumbnail generation can be optionally provided via a
[separate application](thumbnail/README-md) and enabled by `slcl` via a command
line option. Inter-process communication is achieved via a named pipe.
### TLS
@ -123,16 +126,32 @@ anything users put into them.
**Note:** `slcl` creates the given directory if it does not exist.
[Generated thumbnails](thumbnail/README.md) are stored into another directory,
namely `thumbnails`, which is automatically created with directory mode bits
set to `0700`.
```
.
├── db.json
├── public
├── thumbnails
└── user
```
A more complete example:
```
.
├── db.json
├── public
│   └── 44e03ab1bc3b0eff1567c76619186596 -> user/alice/file.txt
│   └── 44e03ab1bc3b0eff1567c76619186596 -> user/alice/file.jpg
├── thumbnails
│ ├── alice
│ │   └── file.jpg
│ └── john
└── user
├── alice
│   └── file.txt
│   └── file.jpg
└── john
└── file2.txt
```
@ -199,6 +218,16 @@ temporary directory to the database, which might be an expensive operation.
Therefore, in order to avoid expensive copies, define a custom temporary
directory that resides on the same filesystem.
#### Thumbnail generation and rendering
Optionally, `slcl` displays thumbnails when listing a directory, if available
from the `thumbnails/` directory. In order to update these thumbnails when
files are added/removed to/from the database, a separate application must be
executed. See its [`README.md`](thumbnail/README.md) for further reference.
`slcl` provides the `-F` command line option to enable the use of a named pipe
that shall be used by the [thumbnail generation tool](thumbnail/).
## Why this project?
Previously, I had been recommended Nextcloud as an alternative to proprietary

66
thumbnail/README.md Normal file
View File

@ -0,0 +1,66 @@
# Thumbnail generation tool for `slcl`
This directory defines a separation application to be used in conjunction with
`slcl`, aimed to update the thumbnail database automatically whenever files
are added/removed to/from the database.
### Root permissions
This application requires no `root` permissions. So, in order to avoid the
risk for security bugs, **please do not run this application as `root`**.
## Requirements
- A POSIX environment.
- [`dynstr`](https://gitea.privatedns.org/xavi92/dynstr)
(provided as a `git` submodule).
- MagickCore
- CMake (optional).
### Ubuntu / Debian
#### Mandatory packages
```sh
sudo apt install build-essential libmagickcore-6.q16-dev
```
#### Optional packages
```sh
sudo apt install cmake
```
## How to use
### Build
Similarly to `slcl`, two build environments are provided - feel free to choose
any of them:
- A mostly POSIX-compliant [`Makefile`](Makefile).
- A [`CMakeLists.txt`](CMakeLists.txt).
`thumbnail` can be built using the standard build process:
#### Make
```sh
$ make
```
#### CMake
```sh
$ mkdir build/
$ cmake ..
$ cmake --build .
```
## Usage
This tool only consumes one argument: the directory containing the instance
database, which must be the same used by `slcl`. For example:
```sh
thumbnail ~/my-db
```