aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-07-22 04:14:41 +0200
committerXavier Del Campo Romero <xavi92@disroot.org>2025-09-24 11:03:39 +0200
commitebb825d3c622f74f0c47a84e1e388b709dd06c7d (patch)
tree9360b2bf3faadd05f7c5d7f0218004fa206adb78
parentcb9cb0b83dc90aeee6380cdc4d2fb61d1426939c (diff)
downloadslcl-ebb825d3c622f74f0c47a84e1e388b709dd06c7d.tar.gz
README.md: Update according to thumbnail generation
-rw-r--r--README.md33
-rw-r--r--thumbnail/README.md66
2 files changed, 97 insertions, 2 deletions
diff --git a/README.md b/README.md
index 46cfae2..e34d401 100644
--- a/README.md
+++ b/README.md
@@ -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
@@ -122,16 +125,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
```
@@ -198,6 +217,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
diff --git a/thumbnail/README.md b/thumbnail/README.md
new file mode 100644
index 0000000..5bd876a
--- /dev/null
+++ b/thumbnail/README.md
@@ -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
+```