|
8 | 8 |
|
9 | 9 | <p align="center"> |
10 | 10 | A native desktop app that generates <strong>article cover art</strong> in an |
11 | | - <strong>Omakase / Japanese-constructivist</strong> style — <strong>five aspect ratios</strong> |
| 11 | + <strong>Omakase / Japanese-constructivist</strong> style: <strong>five aspect ratios</strong> |
12 | 12 | (square, link, wide, portrait, banner), six themes, five patterns, three layouts, a live |
13 | 13 | preview, exported up to <strong>4K PNG</strong> (plus the source SVG). |
14 | 14 | </p> |
|
29 | 29 |
|
30 | 30 | ## The idea |
31 | 31 |
|
32 | | -Built around **Omakase** (お任せ — "I leave it to you", the sushi chef's choice) and the |
| 32 | +Built around **Omakase** (お任せ, "I leave it to you", the sushi chef's choice) and the |
33 | 33 | geometry of traditional Japanese patterns (**wagara**, 和柄), tempered with bold, |
34 | 34 | structural, constructivist typography. The result is calm but assertive: a huge |
35 | 35 | **Montserrat Black** title, a lot of **Ma** (negative space), and a quiet wave "seal". |
36 | 36 |
|
37 | | -The Japanese identity comes **only from geometry and color** — there are deliberately |
| 37 | +The Japanese identity comes **only from geometry and color**; there are deliberately |
38 | 38 | **no Japanese glyphs in the artwork**. It shares its design language (themes, wagara, |
39 | 39 | the sumi-ê palette) with [skvggor.dev](https://skvggor.dev) and |
40 | 40 | [`waka-readme`](https://github.com/skvggor/waka-readme). |
41 | 41 |
|
42 | 42 | ## Features |
43 | 43 |
|
44 | | -- **6 sumi-ê themes** — `terracotta` 赤土 · `sumi` 墨 · `matcha` 抹茶 · `washi` 和紙 · `ai` 藍 · `sakura` 桜 |
45 | | -- **5 wagara patterns** — `seigaiha` (waves) · `shippo` (interlocking circles) · `kikko` |
| 44 | +- **6 sumi-ê themes**: `terracotta` 赤土 · `sumi` 墨 · `matcha` 抹茶 · `washi` 和紙 · `ai` 藍 · `sakura` 桜 |
| 45 | +- **5 wagara patterns**: `seigaiha` (waves) · `shippo` (interlocking circles) · `kikko` |
46 | 46 | (tortoiseshell) · `yabane` (arrow feathers) · `asanoha` (hemp leaf) |
47 | | -- **3 layouts** — `editorial` (asymmetric), `bloco` (constructivist color block), `ma` (negative space) |
48 | | -- **5 formats** — `1:1` square, `1.91:1` link/Open Graph (LinkedIn, Facebook, X, Slack), |
49 | | - `16:9` wide (native LinkedIn article, YouTube), `4:5` portrait, `2:1` banner — the layouts |
| 47 | +- **3 layouts**: `editorial` (asymmetric), `bloco` (constructivist color block), `ma` (negative space) |
| 48 | +- **5 formats**: `1:1` square, `1.91:1` link/Open Graph (LinkedIn, Facebook, X, Slack), |
| 49 | + `16:9` wide (native LinkedIn article, YouTube), `4:5` portrait, `2:1` banner; the layouts |
50 | 50 | adapt to each ratio |
51 | | -- **Live preview** — every control updates the preview instantly |
| 51 | +- **Live preview**: every control updates the preview instantly |
52 | 52 | - **Adjustable film grain** and **pattern strength** sliders, shown live in the preview |
53 | | -- **Omakase button** — randomizes the visual style and lets the house plate it for you |
54 | | -- **Named presets** — save any number of looks as TOML and load/delete any of them (`~/.config/article-cover-art-generator/presets/` on Linux, `%APPDATA%\article-cover-art-generator\presets\` on Windows) |
55 | | -- **WCAG AAA** — all readable text is forced to ≥ 7:1 contrast against its background |
| 53 | +- **Omakase button**: randomizes the visual style and lets the house plate it for you |
| 54 | +- **Named presets**: save any number of looks as TOML and load/delete any of them (`~/.config/article-cover-art-generator/presets/` on Linux, `%APPDATA%\article-cover-art-generator\presets\` on Windows) |
| 55 | +- **WCAG AAA**: all readable text is forced to ≥ 7:1 contrast against its background |
56 | 56 | - **Montserrat** Black / Bold / Regular, embedded in the binary (no system fonts needed) |
57 | | -- **Export** — **2K or 4K** (longest edge) PNG at each format's exact dimensions, plus the |
| 57 | +- **Export**: **2K or 4K** (longest edge) PNG at each format's exact dimensions, plus the |
58 | 58 | resolution-independent source SVG; a non-blocking save (spinner while it rasterizes) and |
59 | 59 | optional open-after-export |
60 | | -- **Native** — Rust + [slint](https://slint.dev) + [resvg](https://github.com/linebender/resvg), |
| 60 | +- **Native**: Rust + [slint](https://slint.dev) + [resvg](https://github.com/linebender/resvg), |
61 | 61 | running directly on Wayland (no web view, no Node) |
62 | 62 |
|
63 | 63 | Only the **title** is required; category, date, number and brand are optional, keeping the |
64 | 64 | cover generic enough for any platform (blog, dev.to, LinkedIn, X, OG image, thumbnail…). |
65 | 65 |
|
66 | 66 | ## Download |
67 | 67 |
|
68 | | -Prebuilt binaries are attached to each [GitHub release](https://github.com/skvggor/acag/releases) — no Rust toolchain or system dependencies required. |
| 68 | +Prebuilt binaries are attached to each [GitHub release](https://github.com/skvggor/acag/releases). No Rust toolchain or system dependencies required. |
69 | 69 |
|
70 | | -- **Linux** — `acag-*-x86_64.AppImage` (self-contained: `chmod +x` and run), or `acag-*-linux-x86_64.tar.gz` (raw binary). |
71 | | -- **Windows** — `acag-*-windows-x86_64.zip` (standalone `acag.exe`, no Visual C++ runtime needed). |
| 70 | +- **Linux**: `acag-*-x86_64.AppImage` (self-contained: `chmod +x` and run), or `acag-*-linux-x86_64.tar.gz` (raw binary). |
| 71 | +- **Windows**: `acag-*-windows-x86_64.zip` (standalone `acag.exe`, no Visual C++ runtime needed). |
72 | 72 |
|
73 | 73 | ### Rendering backend |
74 | 74 |
|
75 | | -By default the app uses Slint's **software (CPU) renderer**, so it runs everywhere — |
| 75 | +By default the app uses Slint's **software (CPU) renderer**, so it runs everywhere, |
76 | 76 | including headless VMs and RDP sessions without a usable OpenGL driver. For this |
77 | 77 | form-plus-preview UI the difference is imperceptible. To opt into GPU rendering: |
78 | 78 |
|
@@ -157,7 +157,7 @@ cargo run --example icon # regenerate the app icon |
157 | 157 |
|
158 | 158 | ## Credits |
159 | 159 |
|
160 | | -- **Montserrat** by Julieta Ulanovsky et al. — [SIL Open Font License](https://github.com/JulietaUla/Montserrat). |
| 160 | +- **Montserrat** by Julieta Ulanovsky et al., under the [SIL Open Font License](https://github.com/JulietaUla/Montserrat). |
161 | 161 | - **resvg / tiny-skia** and **slint** for native rendering and UI. |
162 | 162 | - Design language shared with [skvggor.dev](https://skvggor.dev) and `waka-readme`. |
163 | 163 |
|
|
0 commit comments