@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 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
- safebooru; tab moves to yande.re, then konachan, then danbooru, then back — they
216
- share one tag vocabulary, so the same tag works on each, and danbooru here is
217
- `safebooru.donmai.us`, the mirror that carries general-rated posts only. The
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` or `vector_trace` on
224
- safebooru, `transparent_png` on yande.re, `transparent` or `vector` on konachan,
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 where the site names one — yande.re, konachan and danbooru answer
237
- with the tag types, so it costs no extra request — and the uploader as
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
- space unfolds it and folds it again. Pictures by the uploader of the backgrounds
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. A palette with no `meta.booru` tag at all opens
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 safebooru and danbooru — and its size carries `↓`; those
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 preview carries on straight into the tuning panel below. `c` switches
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 window-shaped crop) — the hash is of
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 face in percent, which
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 the
368
- defaults and never overwrites a line you changed — bar `TTHEME_TAB_PALETTE`, which its
369
- default/rotate/keep question sets — `ttheme config` opens it in `$EDITOR` and alt-c in `preview` edits it in place. Each line is a plain zsh
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 `safebooru`, `yande`, `konachan` or `danbooru` (`safebooru=transparent_background yande=transparent_png,vector`). 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 |
383
- | `TTHEME_FIND_ORDER` | `newest` | the order `find` lists posts in — `newest` or `score` |
384
- | `TTHEME_FIND_SETS` | `fold` | a run of the same picture at the same size from one uploader: `fold` shows it as one tile marked `×N`, `show` lists every one |
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 own requests through a proxy it runs on `127.0.0.1`, which splits the TLS handshake across two records so a network that blocks boorus by hostname cannot read the name. 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 |
387
- | `TTHEME_FIND_HOSTS` | — | send a `find` site somewhere else, as `key=https://host` pairs (`konachan=https://konachan.com danbooru=https://danbooru.donmai.us`). The tab keeps its name and carries `*`. ttheme ships the safe mirrors only; the hosts that serve everything are yours to name, and plenty of networks block them |
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" # safebooru character tag find searches
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]