@kecan0406/ttheme 1.2.9 → 1.2.11
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 +17 -8
- package/bin/ttheme.js +430 -228
- package/bin/ttheme.js.map +1 -1
- package/dist/manifest.json +128 -24
- package/package.json +1 -2
- package/shell/adapters/_bg.zsh +52 -5
- package/shell/adapters/_osc.zsh +20 -10
- package/shell/adapters/_wired.zsh +4 -0
- package/shell/adapters/iterm2.zsh +86 -10
- package/shell/adapters/konsole.zsh +225 -21
- package/shell/adapters/terminal-app.zsh +265 -6
- package/shell/adapters/warp.zsh +65 -20
- package/shell/adapters/wezterm.zsh +13 -4
- package/shell/preview.zsh +332 -26
- package/shell/ttheme.zsh +28 -19
package/dist/manifest.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"schema": 1,
|
|
3
|
+
"version": "1.2.11",
|
|
3
4
|
"gate": [
|
|
4
5
|
{
|
|
5
6
|
"rule": "foreground",
|
|
@@ -56,14 +57,6 @@
|
|
|
56
57
|
"max": 0
|
|
57
58
|
}
|
|
58
59
|
],
|
|
59
|
-
"placement": {
|
|
60
|
-
"tall": 1.15,
|
|
61
|
-
"reach": 0.4,
|
|
62
|
-
"widest": 0.95,
|
|
63
|
-
"headroom": 0.04,
|
|
64
|
-
"margin": 0.03,
|
|
65
|
-
"stands": 12
|
|
66
|
-
},
|
|
67
60
|
"palettes": [
|
|
68
61
|
{
|
|
69
62
|
"name": "neutral",
|
|
@@ -1097,7 +1090,18 @@
|
|
|
1097
1090
|
],
|
|
1098
1091
|
"order": 18,
|
|
1099
1092
|
"ansiSource": "Cursor Dark + Magica",
|
|
1100
|
-
"booru": "
|
|
1093
|
+
"booru": "sakura_kyoko",
|
|
1094
|
+
"booruSites": {
|
|
1095
|
+
"konachan": [
|
|
1096
|
+
"sakura_kyouko"
|
|
1097
|
+
],
|
|
1098
|
+
"yande": [
|
|
1099
|
+
"sakura_kyouko"
|
|
1100
|
+
],
|
|
1101
|
+
"zerochan": [
|
|
1102
|
+
"sakura_kyouko"
|
|
1103
|
+
]
|
|
1104
|
+
},
|
|
1101
1105
|
"background": "#201515",
|
|
1102
1106
|
"foreground": "#e2e2e2",
|
|
1103
1107
|
"cursor": "#ee636b",
|
|
@@ -1274,8 +1278,11 @@
|
|
|
1274
1278
|
],
|
|
1275
1279
|
"order": 21,
|
|
1276
1280
|
"ansiSource": "Rose Pine Dawn + Magica",
|
|
1277
|
-
"booru": "
|
|
1281
|
+
"booru": "kyubey",
|
|
1278
1282
|
"booruSites": {
|
|
1283
|
+
"konachan": [
|
|
1284
|
+
"kyuubee"
|
|
1285
|
+
],
|
|
1279
1286
|
"zerochan": [
|
|
1280
1287
|
"kyubee"
|
|
1281
1288
|
]
|
|
@@ -1883,7 +1890,18 @@
|
|
|
1883
1890
|
],
|
|
1884
1891
|
"order": 31,
|
|
1885
1892
|
"ansiSource": "TokyoNight Storm",
|
|
1886
|
-
"booru": "
|
|
1893
|
+
"booru": "yamada_ryo",
|
|
1894
|
+
"booruSites": {
|
|
1895
|
+
"konachan": [
|
|
1896
|
+
"yamada_ryou"
|
|
1897
|
+
],
|
|
1898
|
+
"yande": [
|
|
1899
|
+
"yamada_ryou"
|
|
1900
|
+
],
|
|
1901
|
+
"zerochan": [
|
|
1902
|
+
"yamada_ryou"
|
|
1903
|
+
]
|
|
1904
|
+
},
|
|
1887
1905
|
"background": "#19180d",
|
|
1888
1906
|
"foreground": "#e7e3c8",
|
|
1889
1907
|
"cursor": "#d6d233",
|
|
@@ -3046,7 +3064,18 @@
|
|
|
3046
3064
|
],
|
|
3047
3065
|
"order": 50,
|
|
3048
3066
|
"ansiSource": "Desert",
|
|
3049
|
-
"booru": "
|
|
3067
|
+
"booru": "sakamoto_ryuji",
|
|
3068
|
+
"booruSites": {
|
|
3069
|
+
"konachan": [
|
|
3070
|
+
"sakamoto_ryuuji"
|
|
3071
|
+
],
|
|
3072
|
+
"yande": [
|
|
3073
|
+
"sakamoto_ryuuji"
|
|
3074
|
+
],
|
|
3075
|
+
"zerochan": [
|
|
3076
|
+
"sakamoto_ryuuji"
|
|
3077
|
+
]
|
|
3078
|
+
},
|
|
3050
3079
|
"background": "#1b170c",
|
|
3051
3080
|
"foreground": "#eee2c2",
|
|
3052
3081
|
"cursor": "#f5cf00",
|
|
@@ -3106,7 +3135,18 @@
|
|
|
3106
3135
|
],
|
|
3107
3136
|
"order": 51,
|
|
3108
3137
|
"ansiSource": "Warm Neon + Phantom",
|
|
3109
|
-
"booru": "
|
|
3138
|
+
"booru": "takamaki_ann",
|
|
3139
|
+
"booruSites": {
|
|
3140
|
+
"konachan": [
|
|
3141
|
+
"takamaki_anne"
|
|
3142
|
+
],
|
|
3143
|
+
"yande": [
|
|
3144
|
+
"takamaki_anne"
|
|
3145
|
+
],
|
|
3146
|
+
"zerochan": [
|
|
3147
|
+
"takamaki_anne"
|
|
3148
|
+
]
|
|
3149
|
+
},
|
|
3110
3150
|
"background": "#201514",
|
|
3111
3151
|
"foreground": "#fcdbd8",
|
|
3112
3152
|
"cursor": "#ee6460",
|
|
@@ -3166,10 +3206,13 @@
|
|
|
3166
3206
|
],
|
|
3167
3207
|
"order": 52,
|
|
3168
3208
|
"ansiSource": "Nord",
|
|
3169
|
-
"booru": "
|
|
3209
|
+
"booru": "kitagawa_yusuke",
|
|
3170
3210
|
"booruSites": {
|
|
3171
|
-
"
|
|
3172
|
-
"
|
|
3211
|
+
"yande": [
|
|
3212
|
+
"kitagawa_yuusuke"
|
|
3213
|
+
],
|
|
3214
|
+
"zerochan": [
|
|
3215
|
+
"kitagawa_yuusuke"
|
|
3173
3216
|
]
|
|
3174
3217
|
},
|
|
3175
3218
|
"background": "#12181d",
|
|
@@ -6242,7 +6285,18 @@
|
|
|
6242
6285
|
"lead": true,
|
|
6243
6286
|
"order": 102,
|
|
6244
6287
|
"ansiSource": "Horizon + Jujutsu",
|
|
6245
|
-
"booru": "
|
|
6288
|
+
"booru": "gojo_satoru",
|
|
6289
|
+
"booruSites": {
|
|
6290
|
+
"konachan": [
|
|
6291
|
+
"gojou_satoru"
|
|
6292
|
+
],
|
|
6293
|
+
"yande": [
|
|
6294
|
+
"gojou_satoru"
|
|
6295
|
+
],
|
|
6296
|
+
"zerochan": [
|
|
6297
|
+
"gojou_satoru"
|
|
6298
|
+
]
|
|
6299
|
+
},
|
|
6246
6300
|
"background": "#11191c",
|
|
6247
6301
|
"foreground": "#e3e2e7",
|
|
6248
6302
|
"cursor": "#7cc1d6",
|
|
@@ -6301,7 +6355,18 @@
|
|
|
6301
6355
|
],
|
|
6302
6356
|
"order": 103,
|
|
6303
6357
|
"ansiSource": "Rose Pine Moon + Jujutsu",
|
|
6304
|
-
"booru": "
|
|
6358
|
+
"booru": "itadori_yuji",
|
|
6359
|
+
"booruSites": {
|
|
6360
|
+
"konachan": [
|
|
6361
|
+
"itadori_yuuji"
|
|
6362
|
+
],
|
|
6363
|
+
"yande": [
|
|
6364
|
+
"itadori_yuuji"
|
|
6365
|
+
],
|
|
6366
|
+
"zerochan": [
|
|
6367
|
+
"itadori_yuuji"
|
|
6368
|
+
]
|
|
6369
|
+
},
|
|
6305
6370
|
"background": "#211513",
|
|
6306
6371
|
"foreground": "#fddbd6",
|
|
6307
6372
|
"cursor": "#e79a8e",
|
|
@@ -6537,9 +6602,15 @@
|
|
|
6537
6602
|
],
|
|
6538
6603
|
"order": 107,
|
|
6539
6604
|
"ansiSource": "Royal + Jujutsu",
|
|
6540
|
-
"booru": "
|
|
6605
|
+
"booru": "geto_suguru",
|
|
6541
6606
|
"booruSites": {
|
|
6542
|
-
"konachan": []
|
|
6607
|
+
"konachan": [],
|
|
6608
|
+
"yande": [
|
|
6609
|
+
"getou_suguru"
|
|
6610
|
+
],
|
|
6611
|
+
"zerochan": [
|
|
6612
|
+
"getou_suguru"
|
|
6613
|
+
]
|
|
6543
6614
|
},
|
|
6544
6615
|
"background": "#16171f",
|
|
6545
6616
|
"foreground": "#e1e1f3",
|
|
@@ -7021,7 +7092,18 @@
|
|
|
7021
7092
|
"lead": true,
|
|
7022
7093
|
"order": 115,
|
|
7023
7094
|
"ansiSource": "SilkCircuit Glow + Geass",
|
|
7024
|
-
"booru": "
|
|
7095
|
+
"booru": "lelouch_vi_britannia",
|
|
7096
|
+
"booruSites": {
|
|
7097
|
+
"konachan": [
|
|
7098
|
+
"lelouch_lamperouge"
|
|
7099
|
+
],
|
|
7100
|
+
"yande": [
|
|
7101
|
+
"lelouch_lamperouge"
|
|
7102
|
+
],
|
|
7103
|
+
"zerochan": [
|
|
7104
|
+
"lelouch_lamperouge"
|
|
7105
|
+
]
|
|
7106
|
+
},
|
|
7025
7107
|
"background": "#19161e",
|
|
7026
7108
|
"foreground": "#e8dff1",
|
|
7027
7109
|
"cursor": "#bb7aae",
|
|
@@ -7200,7 +7282,18 @@
|
|
|
7200
7282
|
],
|
|
7201
7283
|
"order": 118,
|
|
7202
7284
|
"ansiSource": "Kolorit + Geass",
|
|
7203
|
-
"booru": "
|
|
7285
|
+
"booru": "kouzuki_kallen",
|
|
7286
|
+
"booruSites": {
|
|
7287
|
+
"konachan": [
|
|
7288
|
+
"kallen_stadtfeld"
|
|
7289
|
+
],
|
|
7290
|
+
"yande": [
|
|
7291
|
+
"kallen_stadtfeld"
|
|
7292
|
+
],
|
|
7293
|
+
"zerochan": [
|
|
7294
|
+
"kallen_stadtfeld"
|
|
7295
|
+
]
|
|
7296
|
+
},
|
|
7204
7297
|
"background": "#201516",
|
|
7205
7298
|
"foreground": "#fbdbde",
|
|
7206
7299
|
"cursor": "#a3485a",
|
|
@@ -7259,7 +7352,18 @@
|
|
|
7259
7352
|
],
|
|
7260
7353
|
"order": 119,
|
|
7261
7354
|
"ansiSource": "London Embankment Dusk + Geass",
|
|
7262
|
-
"booru": "
|
|
7355
|
+
"booru": "nunnally_vi_britannia",
|
|
7356
|
+
"booruSites": {
|
|
7357
|
+
"konachan": [
|
|
7358
|
+
"nunnally_lamperouge"
|
|
7359
|
+
],
|
|
7360
|
+
"yande": [
|
|
7361
|
+
"nunnally_lamperouge"
|
|
7362
|
+
],
|
|
7363
|
+
"zerochan": [
|
|
7364
|
+
"nunnally_lamperouge"
|
|
7365
|
+
]
|
|
7366
|
+
},
|
|
7263
7367
|
"background": "#1f160d",
|
|
7264
7368
|
"foreground": "#f8dec7",
|
|
7265
7369
|
"cursor": "#c69057",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kecan0406/ttheme",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ttheme": "bin/ttheme.js"
|
|
@@ -32,7 +32,6 @@
|
|
|
32
32
|
],
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@biomejs/biome": "^2.3.0",
|
|
35
|
-
"@clack/core": "^1.4.3",
|
|
36
35
|
"@clack/prompts": "^1.7.0",
|
|
37
36
|
"@jsquash/jpeg": "^1.6.0",
|
|
38
37
|
"@material/material-color-utilities": "^0.4.0",
|
package/shell/adapters/_bg.zsh
CHANGED
|
@@ -12,6 +12,10 @@ __tt_bg_hide() { : }
|
|
|
12
12
|
|
|
13
13
|
__tt_bg_lasting() { : }
|
|
14
14
|
|
|
15
|
+
__tt_bg_tints() { : }
|
|
16
|
+
|
|
17
|
+
__tt_bg_wipe() { REPLY=$'\e_Ga=d,d=A,q=2\e\\' }
|
|
18
|
+
|
|
15
19
|
__tt_bg_frame() {
|
|
16
20
|
local -i iw=$1 ih=$2 W=$3 H=$4 s=$5 ax=$(( ($6 - 1) % 3 )) ay=$(( ($6 - 1) / 3 )) f=${8:--1} wide dw dh ox oy
|
|
17
21
|
wide=$(( W * ih >= H * iw ))
|
|
@@ -274,13 +278,13 @@ __tt_pv_bg_open() {
|
|
|
274
278
|
__tt_pv_bg_show() {
|
|
275
279
|
(( bgcw )) || return 0
|
|
276
280
|
local name=$1 img="" op size fit=contain focus=-1 REPLY
|
|
277
|
-
local -a p=(${=TTHEME_PALETTE[${name%:*}]}) wh at
|
|
281
|
+
local -a p=(${=TTHEME_PALETTE[${name%:*}]}) wh at reply
|
|
278
282
|
local -i cols=$(( pw + 2 * bgmx )) rows=$(( ph + 2 * bgmy ))
|
|
279
283
|
(( ${#p} >= 20 )) || return 0
|
|
280
284
|
(( $2 )) && { __tt_bg_forget; bgshown="" bganchor=0 }
|
|
281
285
|
bgname=$name
|
|
282
286
|
__tt_bg_load $name
|
|
283
|
-
if (( ! bgrel )) && [[ $name == "$bginc" && "${bgsize[$name]} ${bgpos[$name]} ${bgop[$name]} ${bgoff[$name]}" == "${bgload[$name]}" ]]; then
|
|
287
|
+
if (( ! bgrel && ! (te && tedirty) )) && [[ $name == "$bginc" && "${bgsize[$name]} ${bgpos[$name]} ${bgop[$name]} ${bgoff[$name]}" == "${bgload[$name]}" ]]; then
|
|
284
288
|
printf '\e_Ga=d,d=i,i=1,q=2\e\\\e_Ga=d,d=i,i=2,q=2\e\\'
|
|
285
289
|
[[ -n $bgshown ]] && printf '\e_Ga=d,d=i,i=%d,p=%d,q=2\e\\' $bgshown $bgshown
|
|
286
290
|
bgshown=""
|
|
@@ -295,6 +299,9 @@ __tt_pv_bg_show() {
|
|
|
295
299
|
img=${bgsrc[$name]} focus=${bgfocus[$name]}
|
|
296
300
|
fi
|
|
297
301
|
(( bgoff[$name] )) && img=""
|
|
302
|
+
__tt_pv_bg_draft $name "$img"
|
|
303
|
+
[[ -n $reply[1] ]] && p=(${=reply[1]})
|
|
304
|
+
img=$reply[2] op=$reply[3]
|
|
298
305
|
local bg=${p[1]#\#}
|
|
299
306
|
local -i r=$(( 16#${bg:0:2} )) g=$(( 16#${bg:2:2} )) b=$(( 16#${bg:4:2} )) a=$(( (1.0 - op) * 255 + 0.5 ))
|
|
300
307
|
(( a < 0 )) && a=0
|
|
@@ -322,6 +329,22 @@ __tt_pv_bg_show() {
|
|
|
322
329
|
__tt_bg_at $id -1073741826 $(( at[1] - 1 )) $(( at[2] - 1 )) $at[3] $at[4] $at[5] $at[6] $at[7] $at[8]
|
|
323
330
|
}
|
|
324
331
|
|
|
332
|
+
__tt_pv_bg_draft() {
|
|
333
|
+
local name=$1
|
|
334
|
+
local -a look
|
|
335
|
+
reply=("" "$2" "${bgop[$name]}")
|
|
336
|
+
(( te )) && [[ ${name%:*} == "$tename" && -n $tespec ]] || return 0
|
|
337
|
+
if [[ $2 != "$teshown" ]]; then
|
|
338
|
+
teshown=$2
|
|
339
|
+
__tt_te_ask "show $2" || return 0
|
|
340
|
+
fi
|
|
341
|
+
look=("${(@ps:\x1e:)teframe[11]}")
|
|
342
|
+
reply[1]=$tespec
|
|
343
|
+
[[ -n $2 && -n $look[1] ]] && reply[2]=$look[1]
|
|
344
|
+
[[ -n $look[2] && ${bgop[$name]} == ${${=bgdef[$name]}[3]} ]] && reply[3]=$look[2]
|
|
345
|
+
return 0
|
|
346
|
+
}
|
|
347
|
+
|
|
325
348
|
__tt_bg_transmit() {
|
|
326
349
|
local REPLY
|
|
327
350
|
__tt_b64s "$2"
|
|
@@ -413,6 +436,23 @@ __tt_pv_bg_adjust() {
|
|
|
413
436
|
;;
|
|
414
437
|
pos) at=$(( ((at - 1 + n) % 9 + 9) % 9 + 1 )) ;;
|
|
415
438
|
at) at=$n ;;
|
|
439
|
+
sizeat)
|
|
440
|
+
local -i lo=$(( bake ? 20 : 100 )) hi=$(( fs > 100 ? fs : 100 ))
|
|
441
|
+
m=$(( lo + n * (hi - lo + 1) / 1000 ))
|
|
442
|
+
if (( n >= 1000 || (fs && m > fs) )); then
|
|
443
|
+
size=fill
|
|
444
|
+
elif (( bake )); then
|
|
445
|
+
size=$m
|
|
446
|
+
else
|
|
447
|
+
size=100
|
|
448
|
+
fi
|
|
449
|
+
;;
|
|
450
|
+
opto)
|
|
451
|
+
m=$n
|
|
452
|
+
(( m < 0 )) && m=0
|
|
453
|
+
(( m > 100 )) && m=100
|
|
454
|
+
(( m != o )) && printf -v op '%d.%02d' $(( m / 100 )) $(( m % 100 ))
|
|
455
|
+
;;
|
|
416
456
|
op)
|
|
417
457
|
m=$(( o + n ))
|
|
418
458
|
(( m < 0 )) && m=0
|
|
@@ -459,6 +499,7 @@ __tt_pv_bg_find() {
|
|
|
459
499
|
__tt_bg_hide $name
|
|
460
500
|
err=$(__tt_cli find $name 2>&1 >/dev/tty)
|
|
461
501
|
rc=$?
|
|
502
|
+
printf %s "$pvmouse"
|
|
462
503
|
for var in ${(k)parameters[(I)TTHEME_FIND_*]}; do
|
|
463
504
|
[[ ${parameters[$var]} == *export* ]] || unset $var
|
|
464
505
|
done
|
|
@@ -611,6 +652,7 @@ __tt_pv_bg_panel() {
|
|
|
611
652
|
__tt_pv_bg_fs $name && (( REPLY > hi )) && hi=$REPLY
|
|
612
653
|
for k in 1 2 3 4; do
|
|
613
654
|
r=$(( r0 + at[k] ))
|
|
655
|
+
pvz+=("$r $col $(( col + 11 )) tefield $k")
|
|
614
656
|
sty=$d
|
|
615
657
|
(( tf == k && ! off )) && sty=$b
|
|
616
658
|
out+=$'\e['$r';'$col'H'
|
|
@@ -624,6 +666,7 @@ __tt_pv_bg_panel() {
|
|
|
624
666
|
__tt_bg_coloring $name
|
|
625
667
|
val=$REPLY
|
|
626
668
|
out+=$'\e['$r';'$(( col + 12 ))'H'
|
|
669
|
+
pvz+=("$r $(( col + 12 )) $(( col + 17 )) colors tone" "$r $(( col + 19 )) $(( col + 28 )) colors original")
|
|
627
670
|
for choice in tone original; do
|
|
628
671
|
if (( ! color )); then
|
|
629
672
|
if [[ $choice == $val ]]; then out+="[$choice] "; else out+=" $choice "; fi
|
|
@@ -639,6 +682,7 @@ __tt_pv_bg_panel() {
|
|
|
639
682
|
fi
|
|
640
683
|
if (( k == 2 )); then
|
|
641
684
|
for (( i = 1; i <= 9; i++ )); do
|
|
685
|
+
pvz+=("$(( r0 + at[2] - 1 + (i - 1) / 3 )) $(( col + 11 + (i - 1) % 3 * 3 )) $(( col + 13 + (i - 1) % 3 * 3 )) place $i")
|
|
642
686
|
out+=$'\e['$(( r0 + at[2] - 1 + (i - 1) / 3 ))';'$(( col + 12 + (i - 1) % 3 * 3 ))'H'
|
|
643
687
|
if (( ! color )); then
|
|
644
688
|
if (( i == pos )); then out+="#"; else out+="."; fi
|
|
@@ -662,12 +706,15 @@ __tt_pv_bg_panel() {
|
|
|
662
706
|
tuned=0
|
|
663
707
|
[[ ${bgsize[$name]} == "$def[1]" ]] || tuned=1
|
|
664
708
|
else
|
|
665
|
-
o=$(( ${bgop[$name]} * 100 + 0.5 ))
|
|
666
|
-
knob=$(( o * (T - 1) / 100 )) val=${bgop[$name]}
|
|
667
709
|
tuned=$(( ${bgop[$name]} * 1000 + 0.5 != ${def[3]:-1} * 1000 + 0.5 ))
|
|
710
|
+
val=${bgop[$name]}
|
|
711
|
+
(( te && ! tuned )) && [[ ${name%:*} == "$tename" && -n ${${(@ps:\x1e:)teframe[11]}[2]} ]] && val=${${(@ps:\x1e:)teframe[11]}[2]}
|
|
712
|
+
o=$(( val * 100 + 0.5 ))
|
|
713
|
+
knob=$(( o * (T - 1) / 100 ))
|
|
668
714
|
fi
|
|
669
715
|
(( knob < 0 )) && knob=0
|
|
670
716
|
(( knob > T - 1 )) && knob=$(( T - 1 ))
|
|
717
|
+
pvz+=("$r $(( col + 12 )) $(( col + 11 + T )) track $k")
|
|
671
718
|
out+=$'\e['$r';'$(( col + 12 ))'H'
|
|
672
719
|
if (( ! color )); then
|
|
673
720
|
out+=${(l:knob::=:)}"O"${(l:$(( T - 1 - knob ))::-:)}
|
|
@@ -729,7 +776,7 @@ __tt_pv_bg_strip() {
|
|
|
729
776
|
pd=(${=bgpic[$pal:$keys[k]]})
|
|
730
777
|
fill=$dir/$pd[2]
|
|
731
778
|
[[ -r $fill ]] || continue
|
|
732
|
-
__tt_bg_send $fill
|
|
779
|
+
__tt_bg_send $fill || continue
|
|
733
780
|
id=$REPLY
|
|
734
781
|
want="$id $(( r0 + 2 )) $(( x + 1 )) $tc $tr"
|
|
735
782
|
__tt_bg_lasting && [[ ${bgthumb[$slot]} == "$want" ]] && continue
|
package/shell/adapters/_osc.zsh
CHANGED
|
@@ -6,19 +6,25 @@ __tt_out() {
|
|
|
6
6
|
fi
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
__tt_osc_colors() {
|
|
10
10
|
local -a p=(${=1})
|
|
11
|
-
|
|
12
|
-
local out i
|
|
13
|
-
|
|
11
|
+
local i
|
|
14
12
|
if [[ $p[1] == - ]]; then
|
|
15
|
-
|
|
13
|
+
REPLY=$'\e]111\e\\'
|
|
16
14
|
else
|
|
17
|
-
|
|
15
|
+
REPLY=$'\e]11;'$p[1]$'\e\\'
|
|
18
16
|
fi
|
|
19
|
-
|
|
20
|
-
for i in {0..15}; do
|
|
21
|
-
|
|
17
|
+
REPLY+=$'\e]10;'$p[2]$'\e\\\e]12;'$p[3]$'\e\\\e]17;'$p[4]$'\e\\'
|
|
18
|
+
for i in {0..15}; do REPLY+=$'\e]4;'$i';'$p[i+5]$'\e\\'; done
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
__tt_osc_apply() {
|
|
22
|
+
local -a p=(${=1})
|
|
23
|
+
(( ${#p} >= 20 )) || return 1
|
|
24
|
+
local REPLY
|
|
25
|
+
|
|
26
|
+
__tt_osc_colors "$1"
|
|
27
|
+
__tt_out "$REPLY"
|
|
22
28
|
export TTHEME_PAINTED=1
|
|
23
29
|
(( TTHEME_TMUX )) && tmux set -q @ttheme_bg "$p[1]" 2>/dev/null
|
|
24
30
|
__tt_worn "$1"
|
|
@@ -58,6 +64,8 @@ __tt_pv_paint() { __tt_apply "$1" && painted=$1 }
|
|
|
58
64
|
|
|
59
65
|
__tt_pv_claim() { : }
|
|
60
66
|
|
|
67
|
+
__tt_pv_leave() { : }
|
|
68
|
+
|
|
61
69
|
__tt_shown() { return 1 }
|
|
62
70
|
|
|
63
71
|
__tt_unshown() { : }
|
|
@@ -84,7 +92,9 @@ __tt_follows_prompt() { return 1 }
|
|
|
84
92
|
|
|
85
93
|
__tt_prompted() { : }
|
|
86
94
|
|
|
87
|
-
|
|
95
|
+
__tt_cli_env() { : }
|
|
96
|
+
|
|
97
|
+
__tt_links() { (( ${TTHEME_LINKS[(Ie)$TTHEME_ADAPTER]} )) }
|
|
88
98
|
|
|
89
99
|
__tt_pv_bg_open() { : }
|
|
90
100
|
|
|
@@ -63,6 +63,10 @@ __tt_pictured_iterm2() { __tt_cli image $1 tuned }
|
|
|
63
63
|
|
|
64
64
|
__tt_pictured_warp() { (( ${TTHEME_TERMINALS[(Ie)iterm2]} )) || __tt_cli image $1 tuned }
|
|
65
65
|
|
|
66
|
+
__tt_pictured_konsole() { (( ${TTHEME_TERMINALS[(Ie)iterm2]} || ${TTHEME_TERMINALS[(Ie)warp]} )) || __tt_cli image $1 tuned }
|
|
67
|
+
|
|
68
|
+
__tt_pictured_terminal-app() { (( ${TTHEME_TERMINALS[(Ie)iterm2]} || ${TTHEME_TERMINALS[(Ie)warp]} || ${TTHEME_TERMINALS[(Ie)konsole]} )) || __tt_cli image $1 tuned }
|
|
69
|
+
|
|
66
70
|
__tt_bg_aligns() { (( ! ${TTHEME_TERMINALS[(Ie)iterm2]} && ! ${TTHEME_TERMINALS[(Ie)warp]} )) }
|
|
67
71
|
|
|
68
72
|
__tt_bg_covers() { (( ${TTHEME_TERMINALS[(Ie)warp]} )) }
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
source $TTHEME_HOME/adapters/_bg.zsh
|
|
2
2
|
|
|
3
|
+
zmodload -F zsh/datetime p:EPOCHREALTIME 2>/dev/null
|
|
4
|
+
|
|
3
5
|
if (( ! ${+TTHEME_ITERM_SHOWN} )); then
|
|
4
6
|
typeset -gx TTHEME_ITERM_SHOWN="" TTHEME_ITERM_DYED=0
|
|
5
7
|
[[ $ITERM_PROFILE == 'ttheme · '* ]] && TTHEME_ITERM_SHOWN=${ITERM_PROFILE#ttheme · }
|
|
@@ -22,15 +24,90 @@ __tt_takes_default() {
|
|
|
22
24
|
return 0
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
|
|
27
|
+
__tt_cli_env() { pass+=(TTHEME_ITERM_SWITCH=$TTHEME_ITERM_SWITCH) }
|
|
28
|
+
|
|
29
|
+
__tt_switchable() {
|
|
30
|
+
local -a at
|
|
31
|
+
[[ $TTHEME_ITERM_SWITCH == 1 ]] && (( ${TTHEME_ORDER[(Ie)$1]} )) || return 1
|
|
32
|
+
zstat -F %s.%N -A at +mtime -- $TTHEME_ITERM_PROFILES 2>/dev/null && (( EPOCHREALTIME - at[1] >= 1 ))
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
__tt_profiled() {
|
|
36
|
+
__tt_name_of "$1"
|
|
37
|
+
__tt_switchable $REPLY
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
__tt_profile() {
|
|
41
|
+
local out=$'\e]1337;SetProfile='${1:+ttheme · $1}$'\a'
|
|
42
|
+
if [[ $TTHEME_ITERM_SWITCH == 1 ]] && (( TTHEME_ITERM_DYED )); then
|
|
43
|
+
if (( TTHEME_ITERM_DYED == 1 )); then
|
|
44
|
+
out=$'\e]104;0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15\e\\\e]110\e\\\e]111\e\\\e]112\e\\\e]117\e\\'$out
|
|
45
|
+
else
|
|
46
|
+
out=$'\e]110\e\\\e]111\e\\'$out
|
|
47
|
+
fi
|
|
48
|
+
(( TTHEME_RAW )) || out=$'\e[?2026h'$out$'\e[?2026l'
|
|
49
|
+
fi
|
|
50
|
+
__tt_out "$out"
|
|
51
|
+
TTHEME_ITERM_SHOWN=${1:-${TTHEME_STARTUP:+default}} TTHEME_ITERM_DYED=0
|
|
52
|
+
(( TTHEME_TMUX )) && tmux set -q @ttheme_shown "$TTHEME_ITERM_SHOWN" 2>/dev/null
|
|
53
|
+
return 0
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
__tt_osc_apply() {
|
|
57
|
+
local -a p=(${=1})
|
|
58
|
+
(( ${#p} >= 20 )) || return 1
|
|
59
|
+
local REPLY
|
|
60
|
+
if __tt_profiled "$1"; then
|
|
61
|
+
__tt_profile $REPLY
|
|
62
|
+
else
|
|
63
|
+
__tt_osc_colors "$1"
|
|
64
|
+
__tt_out "$REPLY"
|
|
65
|
+
TTHEME_ITERM_DYED=1
|
|
66
|
+
fi
|
|
67
|
+
export TTHEME_PAINTED=1
|
|
68
|
+
(( TTHEME_TMUX )) && tmux set -q @ttheme_bg "$p[1]" 2>/dev/null
|
|
69
|
+
return 0
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
__tt_osc_reset() {
|
|
73
|
+
if [[ $TTHEME_ITERM_SWITCH != 1 ]]; then
|
|
74
|
+
__tt_out $'\e]104\e\\\e]110\e\\\e]111\e\\\e]112\e\\\e]117\e\\'
|
|
75
|
+
elif (( TTHEME_TMUX || TTHEME_ITERM_DYED )) || [[ $TTHEME_ITERM_SHOWN != "${TTHEME_STARTUP:+default}" ]]; then
|
|
76
|
+
__tt_profile ""
|
|
77
|
+
fi
|
|
78
|
+
unset TTHEME_PAINTED
|
|
79
|
+
(( TTHEME_TMUX )) && tmux set -qu @ttheme_bg 2>/dev/null
|
|
80
|
+
return 0
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
__tt_pv_leave() {
|
|
84
|
+
[[ $TTHEME_ITERM_SWITCH == 1 && $painted != "$orig" ]] || return 0
|
|
85
|
+
printf '\e[?2026h'
|
|
86
|
+
if [[ -n $orig ]]; then
|
|
87
|
+
__tt_apply "$orig"
|
|
88
|
+
else
|
|
89
|
+
__tt_osc_reset
|
|
90
|
+
fi
|
|
91
|
+
printf '\e[?2026l'
|
|
92
|
+
painted=$orig
|
|
93
|
+
}
|
|
26
94
|
|
|
27
95
|
__tt_pv_paint() {
|
|
28
96
|
local -a p=(${=1})
|
|
97
|
+
local REPLY
|
|
29
98
|
if (( ${#p} < 20 )); then
|
|
30
|
-
|
|
99
|
+
if [[ $TTHEME_ITERM_SWITCH == 1 ]]; then
|
|
100
|
+
__tt_osc_reset
|
|
101
|
+
else
|
|
102
|
+
__tt_out $'\e]110\e\\\e]111\e\\'
|
|
103
|
+
fi
|
|
31
104
|
return 0
|
|
32
105
|
fi
|
|
33
|
-
|
|
106
|
+
if __tt_profiled "$1"; then
|
|
107
|
+
__tt_apply "$1" && painted=$1
|
|
108
|
+
return 0
|
|
109
|
+
fi
|
|
110
|
+
(( TTHEME_ITERM_DYED )) || TTHEME_ITERM_DYED=2
|
|
34
111
|
if [[ $p[1] == - ]]; then
|
|
35
112
|
__tt_out $'\e]111\e\\\e]10;'$p[2]$'\e\\'
|
|
36
113
|
else
|
|
@@ -50,12 +127,14 @@ __tt_shown() {
|
|
|
50
127
|
local dir=${TTHEME_CONFIG:h}/backgrounds was REPLY
|
|
51
128
|
__tt_bg_shown
|
|
52
129
|
was=$REPLY
|
|
130
|
+
if __tt_switchable $1; then
|
|
131
|
+
[[ $was == $1 ]] && (( ! TTHEME_ITERM_DYED )) || __tt_profile $1
|
|
132
|
+
return 1
|
|
133
|
+
fi
|
|
53
134
|
[[ $2 != force && $was == $1 ]] && return 1
|
|
54
135
|
[[ -r $dir/${${1/@/--}/\//--}.conf || ( -n $was && -r $dir/${${was/@/--}/\//--}.conf ) ]] || (( TTHEME_MUXED )) || return 1
|
|
55
136
|
(( ${TTHEME_ORDER[(Ie)$1]} )) || return 1
|
|
56
|
-
|
|
57
|
-
TTHEME_ITERM_SHOWN=$1 TTHEME_ITERM_DYED=0
|
|
58
|
-
(( TTHEME_TMUX )) && tmux set -q @ttheme_shown $1 2>/dev/null
|
|
137
|
+
__tt_profile $1
|
|
59
138
|
return 1
|
|
60
139
|
}
|
|
61
140
|
|
|
@@ -63,10 +142,7 @@ __tt_unshown() {
|
|
|
63
142
|
local want=${TTHEME_STARTUP:+default} was=$TTHEME_ITERM_SHOWN
|
|
64
143
|
(( TTHEME_TMUX )) && was=$(tmux show -qv @ttheme_shown 2>/dev/null)
|
|
65
144
|
[[ $1 != force && $was == "$want" ]] && return 0
|
|
66
|
-
|
|
67
|
-
TTHEME_ITERM_SHOWN=$want TTHEME_ITERM_DYED=0
|
|
68
|
-
(( TTHEME_TMUX )) && tmux set -q @ttheme_shown "$want" 2>/dev/null
|
|
69
|
-
return 0
|
|
145
|
+
__tt_profile ""
|
|
70
146
|
}
|
|
71
147
|
|
|
72
148
|
__tt_bg_cells() {
|