Compare commits

...

5 commits

5 changed files with 220 additions and 7 deletions

3
.gitignore vendored
View file

@ -4,8 +4,9 @@ strata-daemon/target/
# Bundled binary (no longer shipped - daemon must be installed separately)
strata@edu4rdshl.dev/bin/
# Screenshots / scratch images
# Screenshots / scratch images (project assets under assets/ are kept)
*.png
!assets/*.png
# External reference code (not part of this project)
external_sources/

View file

@ -10,6 +10,15 @@ All heavy work (hashing, decoding, storage, search, thumbnails) lives in a Rust
daemon. The GNOME Shell extension only renders UI and forwards events over
D-Bus, so the compositor is never blocked, even with thousands of items.
<p align="center">
<a href="https://extensions.gnome.org/extension/10291/strata/">
<img src="assets/ego.svg" width="200" alt="Download from extensions.gnome.org">
</a>
</p>
> **Requires a companion daemon.** Installing from GNOME Extensions is only half
> the setup. See [Installing the daemon](#installing-the-daemon).
The motivation behind this is explained in the technical blog post [Rethinking the GNOME clipboard issues](https://edu4rdshl.dev/posts/rethinking-the-gnome-clipboard-issues/)
## Features
@ -78,12 +87,6 @@ Unknown MIME types are ignored (a strict allowlist).
- Keyboard navigation (arrow keys, `Esc` to close), click-outside to dismiss,
per-row delete, and "Clear all".
## How it looks
The idea is to have a simple but responsive UI that fits into the project's goals. Actually, Strata looks like it:
<img width="1470" height="1227" alt="image" src="https://github.com/user-attachments/assets/07a17d08-4d7f-4afb-bafc-9346814e376a" />
## Architecture
Strata is **two components**, and you need **both** for it to work:
@ -104,6 +107,32 @@ GNOME Shell (GJS) ──D-Bus──▶ strata-daemon ──▶ SQLite (~/.lo
└──▶ thumbnails (~/.cache/strata)
```
## Installing the daemon
Strata is two parts: the GNOME Shell extension and a small background daemon
(`strata-daemon`) that does the storage, search, and thumbnailing. Installing
the extension from [GNOME Extensions](https://extensions.gnome.org/extension/10291/strata/)
is only half the setup; **without the daemon the extension does nothing.**
Install the daemon with whichever fits your system:
- **Arch (AUR):** `paru -S strata-daemon` (or `strata-daemon-git` for the latest `main`).
- **From source** (needs Rust/Cargo 1.74+):
```sh
git clone https://github.com/Edu4rdSHL/Strata.git
cd Strata
make install-daemon # builds and installs to ~/.local/bin
```
Make sure `~/.local/bin` is in your `$PATH`.
Then log out and back in (Wayland) or `Alt+F2``r` (X11). The extension finds
`strata-daemon` in `$PATH` and starts it automatically; no separate service is
needed.
For distro packages and the systemd user service, see [Install](#install).
## Requirements
- GNOME Shell 50. Older releases may work if built from source but are not tested or supported.
@ -197,6 +226,19 @@ the wire protocol and a `busctl` example.
The shipped UI is a GNOME Shell extension. Ports to other desktops only
need a new front-end against the same D-Bus interface.
## How it looks
A responsive panel that drops down from the top bar and follows the GNOME
shell's look.
<p align="center">
<img src="assets/panel-desktop.png" alt="Strata's clipboard panel open on the GNOME desktop" width="100%">
</p>
<p align="center">
<img src="assets/panel.png" alt="Close-up of the Strata panel: a URL with its hostname, an image thumbnail, color swatches, and text entries" width="400">
</p>
## Deeper reading
- [`ARCHITECTURE.md`](ARCHITECTURE.md): design goals, process model,

170
assets/ego.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

BIN
assets/panel-desktop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 KiB

BIN
assets/panel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB