diff --git a/.gitignore b/.gitignore index 19d78b0..c489766 100644 --- a/.gitignore +++ b/.gitignore @@ -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/ diff --git a/README.md b/README.md index 2860a02..0a57f20 100644 --- a/README.md +++ b/README.md @@ -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. +

+ + Download from extensions.gnome.org + +

+ +> **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: - -image - ## 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. + +

+ Strata's clipboard panel open on the GNOME desktop +

+ +

+ Close-up of the Strata panel: a URL with its hostname, an image thumbnail, color swatches, and text entries +

+ ## Deeper reading - [`ARCHITECTURE.md`](ARCHITECTURE.md): design goals, process model, diff --git a/assets/ego.svg b/assets/ego.svg new file mode 100644 index 0000000..57aaff3 --- /dev/null +++ b/assets/ego.svg @@ -0,0 +1,170 @@ + + + Download From EGO Logo + + + + + + + + + + + + image/svg+xml + + Download From EGO Logo + 2021 + + + Javad Rahmatzadeh + + + + + Javad Rahmatzadeh + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/panel-desktop.png b/assets/panel-desktop.png new file mode 100644 index 0000000..3b971ab Binary files /dev/null and b/assets/panel-desktop.png differ diff --git a/assets/panel.png b/assets/panel.png new file mode 100644 index 0000000..a514e1e Binary files /dev/null and b/assets/panel.png differ