@kecan0406/ttheme 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -26
- package/bin/ttheme.js +102 -102
- package/dist/manifest.json +1079 -147
- package/package.json +1 -1
- package/shell/adapters/_bg.zsh +5 -1
- package/shell/ttheme.zsh +11 -4
package/README.md
CHANGED
|
@@ -212,17 +212,21 @@ the size of the window, as the sizes above 100% are.
|
|
|
212
212
|
A palette with no background yet can find one: on it in `preview`, tab opens
|
|
213
213
|
**find**, which searches a booru for the palette's character tag
|
|
214
214
|
(`meta.booru`) and lays the results out as a grid of thumbnails. It starts on
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
215
|
+
danbooru; tab moves to konachan, then yande.re, then back — they share one tag
|
|
216
|
+
vocabulary, so the same tag works on each. danbooru and yande.re carry every
|
|
217
|
+
rating and `TTHEME_FIND_RATING` picks which come through; konachan is
|
|
218
|
+
`konachan.net`, the mirror that carries safe posts only, since `konachan.com`
|
|
219
|
+
answers with a Cloudflare challenge. When a site's connection is cut off — the
|
|
220
|
+
way a network that blocks boorus by name drops danbooru — find asks whether to
|
|
221
|
+
turn on the unblock proxy (`TTHEME_FIND_UNBLOCK`); `y` saves the setting and
|
|
222
|
+
opens find again through it, `n` leaves it off. The
|
|
218
223
|
sites sit in a strip of tabs under the query, the one you are on lit in its own
|
|
219
224
|
color, and it comes again as a badge at the start of the line above a picture
|
|
220
225
|
you try on, next to the site the artwork itself came from when the post records
|
|
221
226
|
one (`pixiv.net`, `deviantart.com`). The grid starts
|
|
222
227
|
with every post of the character; `c` narrows it to **cutouts** — posts carrying
|
|
223
|
-
the site's transparency tags (`transparent_background`
|
|
224
|
-
|
|
225
|
-
`transparent_background` on danbooru) whose PNG header says they have
|
|
228
|
+
the site's transparency tags (`transparent_background` on danbooru,
|
|
229
|
+
`transparent` or `vector` on konachan, `transparent_png` on yande.re) whose PNG header says they have
|
|
226
230
|
an alpha channel; yande.re's `transparent_png` already means exactly that, so
|
|
227
231
|
its posts skip the header check, which its slow file server would drag out —
|
|
228
232
|
and the counter reads shown out of checked, `13/33`. find checks only as far as
|
|
@@ -233,12 +237,14 @@ few of those tags, so `TTHEME_FIND_CUTOUTS` names the ones to look for, site by
|
|
|
233
237
|
site.
|
|
234
238
|
|
|
235
239
|
Under each thumbnail is its post id and size, and under that whoever made it:
|
|
236
|
-
the artist
|
|
237
|
-
|
|
238
|
-
`@name` where it does not, which is every safebooru post. A score follows as
|
|
240
|
+
the artist, which every site names through its tag types at no extra
|
|
241
|
+
request, and the uploader as `@name` where a post has no artist tag. A score follows as
|
|
239
242
|
`★22` on the sites that keep one. When the same hand uploads the same picture at
|
|
240
|
-
the same size over and over, find folds that run into one tile marked `×9
|
|
241
|
-
|
|
243
|
+
the same size over and over, find folds that run into one tile marked `×9`,
|
|
244
|
+
wherever the order puts its pictures, and folds in the same way a picture
|
|
245
|
+
another site holds too — re-encoded at the same shape, cut from the post its
|
|
246
|
+
source names, or hung under the same parent; space unfolds it and folds it
|
|
247
|
+
again. Pictures by the uploader of the backgrounds
|
|
242
248
|
you already have in the same series come first and carry `≈`, so a series keeps
|
|
243
249
|
one hand; anything under 1600 px on its long edge shows its size in yellow.
|
|
244
250
|
|
|
@@ -253,7 +259,10 @@ the screen never hides what it is filtering by.
|
|
|
253
259
|
|
|
254
260
|
`/` opens the query for editing — type a tag to search for something else, or paste a post url or id
|
|
255
261
|
(`https://yande.re/post/show/214705`, `konachan:244200`, `7159377`) to go
|
|
256
|
-
straight to that one picture.
|
|
262
|
+
straight to that one picture. While you type, danbooru's tag completion lists
|
|
263
|
+
up to eight tags that start like the last word, each with its post count — the
|
|
264
|
+
way to find a costume variant such as `amane_suzuha_(beta)` or a tag you only
|
|
265
|
+
half remember; `↑`/`↓` pick one and enter searches it. A palette with no `meta.booru` tag at all opens
|
|
257
266
|
find on that empty query, so it can have a background too. `o` opens the post's
|
|
258
267
|
page in a browser.
|
|
259
268
|
|
|
@@ -268,10 +277,12 @@ marks the picture `cut out`, and `x` switches between the cut-out and the pictur
|
|
|
268
277
|
as it is. When Vision finds no character, or would leave almost nothing or
|
|
269
278
|
remove almost nothing, the picture stays opaque; elsewhere it always does. A post over 25 megapixels is
|
|
270
279
|
fetched as the site's own smaller copy instead — up to 3500 px on yande.re and
|
|
271
|
-
konachan, 850 px on
|
|
280
|
+
konachan, 850 px on danbooru — and its size carries `↓`; those
|
|
272
281
|
copies are JPEGs, so a cutout tried on that way comes out opaque. `←`/`→` try
|
|
273
|
-
the neighbours, which find fetches ahead of you two at a time, enter installs
|
|
274
|
-
and the
|
|
282
|
+
the neighbours, which find fetches ahead of you two at a time, and enter installs
|
|
283
|
+
and returns to the grid with the tile marked `✓`, the tab, search and scroll as
|
|
284
|
+
you left them; esc then hands the last one installed to the preview, which
|
|
285
|
+
carries on straight into the tuning panel below. `c` switches
|
|
275
286
|
between every post and the cutouts, esc goes back. Unless the settings say otherwise,
|
|
276
287
|
only `safe` and `general` posts are shown, and none tagged with nudity or
|
|
277
288
|
underwear (`nude`, `panties` and each site's own spelling of them) — with only
|
|
@@ -285,7 +296,9 @@ minute, with a countdown at the bottom. ttheme keeps no
|
|
|
285
296
|
list of images — the tag is all it knows about a character.
|
|
286
297
|
|
|
287
298
|
An install writes `<palette>.<hash>.png` (the tinted figure),
|
|
288
|
-
`<palette>.<hash>@fill-<focus>.png` (the
|
|
299
|
+
`<palette>.<hash>@fill-<focus>.png` (the picture made at the shape of the window
|
|
300
|
+
find ran in: a cut-out stands whole from its head down against the right edge, a
|
|
301
|
+
little taller than the window, and a wallpaper covers it from its top) — the hash is of
|
|
289
302
|
their content, because Ghostty and iTerm2 reload a background only when its path
|
|
290
303
|
changes, so no two pictures may share a name — `<palette>.conf` and the untouched original under
|
|
291
304
|
`backgrounds/originals/`, and starts it untuned — the picture it replaces moves
|
|
@@ -307,7 +320,7 @@ screen as it changes: 100% is the whole image fitted into the window
|
|
|
307
320
|
(`contain`), below that it shrinks to 20%, above it the image grows around the
|
|
308
321
|
face until it covers the window, and the top step is **fill** (`cover`). Fill
|
|
309
322
|
uses `<palette>.<hash>@fill-<focus>.png` when it sits beside the image — a crop made
|
|
310
|
-
to fill the window, whose name carries the height of the
|
|
323
|
+
to fill the window, whose name carries the height of the figure at the window's middle, which
|
|
311
324
|
the sizes above 100% zoom around — and the image itself otherwise. Position
|
|
312
325
|
steps through the nine `background-image-position` anchors, or `1`–`9` jump to
|
|
313
326
|
one in reading order; opacity moves by 0.01. Space turns the palette's
|
|
@@ -364,9 +377,11 @@ With `TTHEME_TAB_PALETTE=seq`, new tabs take the next palette in group order, wi
|
|
|
364
377
|
tabs — so opening four tabs walks you through four different characters rather
|
|
365
378
|
than rolling the same one twice.
|
|
366
379
|
|
|
367
|
-
Settings live in `~/.config/ttheme/config.zsh` — `init` seeds it with
|
|
368
|
-
|
|
369
|
-
|
|
380
|
+
Settings live in `~/.config/ttheme/config.zsh` — `init` seeds it with every
|
|
381
|
+
setting at its default on a commented line, so a default a later version changes
|
|
382
|
+
reaches you, and never overwrites a line you changed — bar `TTHEME_TAB_PALETTE`, which its
|
|
383
|
+
default/rotate/keep question sets — `ttheme config` opens it in `$EDITOR` and alt-c in `preview` edits it in place. Only a value that differs from the default
|
|
384
|
+
is left uncommented; setting one back comments it out again. Each line is a plain zsh
|
|
370
385
|
`: ${VAR:=value}` assignment, so a variable exported before the layer loads
|
|
371
386
|
still wins:
|
|
372
387
|
|
|
@@ -379,12 +394,13 @@ still wins:
|
|
|
379
394
|
| `TTHEME_FIND_RATING` | `safe` | the ratings `find` lists, any of `safe`, `questionable` and `explicit` separated by spaces (`"safe explicit"`). Each site is read in its own vocabulary, so danbooru's `s` (sensitive) is not mistaken for yande.re's `s` (safe). The set shows next to the query whenever it is not just `safe` |
|
|
380
395
|
| `TTHEME_FIND_BLOCK` | `nudity underwear` | the posts `find` drops by tag: `nudity` (`nude`, `naked`, `topless`…), `underwear` (`panties`, `bra`, `lingerie`… — each with the site's own spelling), both, or `none` to keep every post. What is let through shows next to the query as `allows …` |
|
|
381
396
|
| `TTHEME_FIND_POSTS` | `all` | what `find` opens on — every post of the character, or only the transparent cutouts (`cutouts`) |
|
|
382
|
-
| `TTHEME_FIND_CUTOUTS` | — | the tags `find` calls a transparent cutout, as `key=tag,tag` pairs separated by spaces, keyed by `
|
|
383
|
-
| `
|
|
384
|
-
| `
|
|
397
|
+
| `TTHEME_FIND_CUTOUTS` | — | the tags `find` calls a transparent cutout, as `key=tag,tag` pairs separated by spaces, keyed by `danbooru`, `konachan` or `yande` (`konachan=transparent,vector yande=transparent_png`). A site with several tags matches any of them; `danbooru=` names none, so its cutouts are the posts whose PNG header has an alpha channel. A site named here loses yande.re's shortcut of skipping that header check. Sites left out keep the built-in tags |
|
|
398
|
+
| `TTHEME_FIND_SOLO` | `on` | `on` keeps only the posts tagged `solo` — the character alone, which is what a backdrop needs. konachan and yande.re do not tag how many people a picture shows, so their posts borrow the tags danbooru holds for the same file, one request per page; a post danbooru does not have is left alone. The query line says `solo` while it is on |
|
|
399
|
+
| `TTHEME_FIND_ORDER` | `fit` | the order `find` lists posts in — `fit` ranks each page it fetches by how well a post makes a backdrop (solo, resolution against the window, a cutout or an aspect close to the window's, score within the page, the palette's colors in its preview; comics, monochrome, sketches and landscapes sink) and appends it below what is already shown, so nothing moves under you; `newest`; or `score` |
|
|
400
|
+
| `TTHEME_FIND_SETS` | `fold` | a run of the same picture at the same size from one uploader, and a picture another site holds too: `fold` shows it as one tile marked `×N`, `show` lists every one |
|
|
385
401
|
| `TTHEME_FIND_REMOVE_BG` | `on` | on macOS, `on` cuts the character out of an opaque picture `find` tries on, with the system's Vision framework; `off` leaves it as it is. The row is in the `s` panel as `remove bg` |
|
|
386
|
-
| `TTHEME_FIND_UNBLOCK` | `0` | `1` sends `find`'s
|
|
387
|
-
| `TTHEME_FIND_HOSTS` | — | send a `find` site somewhere else, as `key=https://host` pairs (`
|
|
402
|
+
| `TTHEME_FIND_UNBLOCK` | `0` | find offers to turn it on when a site's connection is cut off. `1` sends `find`'s requests to danbooru through a proxy it runs on `127.0.0.1`, which splits the TLS handshake across two records so a network that blocks it by hostname cannot read the name; konachan and yande.re, which no network is known to block, still go direct. It is not a VPN: the address you reach is unchanged and nothing else on the machine is affected. Needs node 22.21 or newer, and the query line says `unblock` while it is on |
|
|
403
|
+
| `TTHEME_FIND_HOSTS` | — | send a `find` site somewhere else, as `key=https://host` pairs (`danbooru=https://safebooru.donmai.us`, the general-rated mirror, reachable where danbooru is blocked). The tab keeps its name and carries `*` |
|
|
388
404
|
|
|
389
405
|
## The catalog
|
|
390
406
|
|
|
@@ -468,7 +484,7 @@ name = "madoka" # must match the filename
|
|
|
468
484
|
group = "Madoka Magica" # needs a [[group]] in themes/_groups.toml
|
|
469
485
|
order = 15 # position in the rotation
|
|
470
486
|
ansi_source = "Elegant + Magica" # what the harmonizer was fed
|
|
471
|
-
booru = "kaname_madoka" #
|
|
487
|
+
booru = "kaname_madoka" # booru character tag find searches
|
|
472
488
|
signature = ["cursor", "ansi1", "ansi3"] # the three slots the site draws as identity
|
|
473
489
|
|
|
474
490
|
[colors]
|