@kecan0406/ttheme 1.2.8 → 1.2.10
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 +15 -6
- package/bin/ttheme.js +429 -229
- package/bin/ttheme.js.map +1 -1
- package/dist/manifest.json +127 -16
- 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 +2255 -0
- package/shell/ttheme.zsh +78 -2023
package/dist/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.2.
|
|
2
|
+
"version": "1.2.10",
|
|
3
3
|
"gate": [
|
|
4
4
|
{
|
|
5
5
|
"rule": "foreground",
|
|
@@ -1097,7 +1097,18 @@
|
|
|
1097
1097
|
],
|
|
1098
1098
|
"order": 18,
|
|
1099
1099
|
"ansiSource": "Cursor Dark + Magica",
|
|
1100
|
-
"booru": "
|
|
1100
|
+
"booru": "sakura_kyoko",
|
|
1101
|
+
"booruSites": {
|
|
1102
|
+
"konachan": [
|
|
1103
|
+
"sakura_kyouko"
|
|
1104
|
+
],
|
|
1105
|
+
"yande": [
|
|
1106
|
+
"sakura_kyouko"
|
|
1107
|
+
],
|
|
1108
|
+
"zerochan": [
|
|
1109
|
+
"sakura_kyouko"
|
|
1110
|
+
]
|
|
1111
|
+
},
|
|
1101
1112
|
"background": "#201515",
|
|
1102
1113
|
"foreground": "#e2e2e2",
|
|
1103
1114
|
"cursor": "#ee636b",
|
|
@@ -1274,8 +1285,11 @@
|
|
|
1274
1285
|
],
|
|
1275
1286
|
"order": 21,
|
|
1276
1287
|
"ansiSource": "Rose Pine Dawn + Magica",
|
|
1277
|
-
"booru": "
|
|
1288
|
+
"booru": "kyubey",
|
|
1278
1289
|
"booruSites": {
|
|
1290
|
+
"konachan": [
|
|
1291
|
+
"kyuubee"
|
|
1292
|
+
],
|
|
1279
1293
|
"zerochan": [
|
|
1280
1294
|
"kyubee"
|
|
1281
1295
|
]
|
|
@@ -1883,7 +1897,18 @@
|
|
|
1883
1897
|
],
|
|
1884
1898
|
"order": 31,
|
|
1885
1899
|
"ansiSource": "TokyoNight Storm",
|
|
1886
|
-
"booru": "
|
|
1900
|
+
"booru": "yamada_ryo",
|
|
1901
|
+
"booruSites": {
|
|
1902
|
+
"konachan": [
|
|
1903
|
+
"yamada_ryou"
|
|
1904
|
+
],
|
|
1905
|
+
"yande": [
|
|
1906
|
+
"yamada_ryou"
|
|
1907
|
+
],
|
|
1908
|
+
"zerochan": [
|
|
1909
|
+
"yamada_ryou"
|
|
1910
|
+
]
|
|
1911
|
+
},
|
|
1887
1912
|
"background": "#19180d",
|
|
1888
1913
|
"foreground": "#e7e3c8",
|
|
1889
1914
|
"cursor": "#d6d233",
|
|
@@ -3046,7 +3071,18 @@
|
|
|
3046
3071
|
],
|
|
3047
3072
|
"order": 50,
|
|
3048
3073
|
"ansiSource": "Desert",
|
|
3049
|
-
"booru": "
|
|
3074
|
+
"booru": "sakamoto_ryuji",
|
|
3075
|
+
"booruSites": {
|
|
3076
|
+
"konachan": [
|
|
3077
|
+
"sakamoto_ryuuji"
|
|
3078
|
+
],
|
|
3079
|
+
"yande": [
|
|
3080
|
+
"sakamoto_ryuuji"
|
|
3081
|
+
],
|
|
3082
|
+
"zerochan": [
|
|
3083
|
+
"sakamoto_ryuuji"
|
|
3084
|
+
]
|
|
3085
|
+
},
|
|
3050
3086
|
"background": "#1b170c",
|
|
3051
3087
|
"foreground": "#eee2c2",
|
|
3052
3088
|
"cursor": "#f5cf00",
|
|
@@ -3106,7 +3142,18 @@
|
|
|
3106
3142
|
],
|
|
3107
3143
|
"order": 51,
|
|
3108
3144
|
"ansiSource": "Warm Neon + Phantom",
|
|
3109
|
-
"booru": "
|
|
3145
|
+
"booru": "takamaki_ann",
|
|
3146
|
+
"booruSites": {
|
|
3147
|
+
"konachan": [
|
|
3148
|
+
"takamaki_anne"
|
|
3149
|
+
],
|
|
3150
|
+
"yande": [
|
|
3151
|
+
"takamaki_anne"
|
|
3152
|
+
],
|
|
3153
|
+
"zerochan": [
|
|
3154
|
+
"takamaki_anne"
|
|
3155
|
+
]
|
|
3156
|
+
},
|
|
3110
3157
|
"background": "#201514",
|
|
3111
3158
|
"foreground": "#fcdbd8",
|
|
3112
3159
|
"cursor": "#ee6460",
|
|
@@ -3166,10 +3213,13 @@
|
|
|
3166
3213
|
],
|
|
3167
3214
|
"order": 52,
|
|
3168
3215
|
"ansiSource": "Nord",
|
|
3169
|
-
"booru": "
|
|
3216
|
+
"booru": "kitagawa_yusuke",
|
|
3170
3217
|
"booruSites": {
|
|
3171
|
-
"
|
|
3172
|
-
"
|
|
3218
|
+
"yande": [
|
|
3219
|
+
"kitagawa_yuusuke"
|
|
3220
|
+
],
|
|
3221
|
+
"zerochan": [
|
|
3222
|
+
"kitagawa_yuusuke"
|
|
3173
3223
|
]
|
|
3174
3224
|
},
|
|
3175
3225
|
"background": "#12181d",
|
|
@@ -6242,7 +6292,18 @@
|
|
|
6242
6292
|
"lead": true,
|
|
6243
6293
|
"order": 102,
|
|
6244
6294
|
"ansiSource": "Horizon + Jujutsu",
|
|
6245
|
-
"booru": "
|
|
6295
|
+
"booru": "gojo_satoru",
|
|
6296
|
+
"booruSites": {
|
|
6297
|
+
"konachan": [
|
|
6298
|
+
"gojou_satoru"
|
|
6299
|
+
],
|
|
6300
|
+
"yande": [
|
|
6301
|
+
"gojou_satoru"
|
|
6302
|
+
],
|
|
6303
|
+
"zerochan": [
|
|
6304
|
+
"gojou_satoru"
|
|
6305
|
+
]
|
|
6306
|
+
},
|
|
6246
6307
|
"background": "#11191c",
|
|
6247
6308
|
"foreground": "#e3e2e7",
|
|
6248
6309
|
"cursor": "#7cc1d6",
|
|
@@ -6301,7 +6362,18 @@
|
|
|
6301
6362
|
],
|
|
6302
6363
|
"order": 103,
|
|
6303
6364
|
"ansiSource": "Rose Pine Moon + Jujutsu",
|
|
6304
|
-
"booru": "
|
|
6365
|
+
"booru": "itadori_yuji",
|
|
6366
|
+
"booruSites": {
|
|
6367
|
+
"konachan": [
|
|
6368
|
+
"itadori_yuuji"
|
|
6369
|
+
],
|
|
6370
|
+
"yande": [
|
|
6371
|
+
"itadori_yuuji"
|
|
6372
|
+
],
|
|
6373
|
+
"zerochan": [
|
|
6374
|
+
"itadori_yuuji"
|
|
6375
|
+
]
|
|
6376
|
+
},
|
|
6305
6377
|
"background": "#211513",
|
|
6306
6378
|
"foreground": "#fddbd6",
|
|
6307
6379
|
"cursor": "#e79a8e",
|
|
@@ -6537,9 +6609,15 @@
|
|
|
6537
6609
|
],
|
|
6538
6610
|
"order": 107,
|
|
6539
6611
|
"ansiSource": "Royal + Jujutsu",
|
|
6540
|
-
"booru": "
|
|
6612
|
+
"booru": "geto_suguru",
|
|
6541
6613
|
"booruSites": {
|
|
6542
|
-
"konachan": []
|
|
6614
|
+
"konachan": [],
|
|
6615
|
+
"yande": [
|
|
6616
|
+
"getou_suguru"
|
|
6617
|
+
],
|
|
6618
|
+
"zerochan": [
|
|
6619
|
+
"getou_suguru"
|
|
6620
|
+
]
|
|
6543
6621
|
},
|
|
6544
6622
|
"background": "#16171f",
|
|
6545
6623
|
"foreground": "#e1e1f3",
|
|
@@ -7021,7 +7099,18 @@
|
|
|
7021
7099
|
"lead": true,
|
|
7022
7100
|
"order": 115,
|
|
7023
7101
|
"ansiSource": "SilkCircuit Glow + Geass",
|
|
7024
|
-
"booru": "
|
|
7102
|
+
"booru": "lelouch_vi_britannia",
|
|
7103
|
+
"booruSites": {
|
|
7104
|
+
"konachan": [
|
|
7105
|
+
"lelouch_lamperouge"
|
|
7106
|
+
],
|
|
7107
|
+
"yande": [
|
|
7108
|
+
"lelouch_lamperouge"
|
|
7109
|
+
],
|
|
7110
|
+
"zerochan": [
|
|
7111
|
+
"lelouch_lamperouge"
|
|
7112
|
+
]
|
|
7113
|
+
},
|
|
7025
7114
|
"background": "#19161e",
|
|
7026
7115
|
"foreground": "#e8dff1",
|
|
7027
7116
|
"cursor": "#bb7aae",
|
|
@@ -7200,7 +7289,18 @@
|
|
|
7200
7289
|
],
|
|
7201
7290
|
"order": 118,
|
|
7202
7291
|
"ansiSource": "Kolorit + Geass",
|
|
7203
|
-
"booru": "
|
|
7292
|
+
"booru": "kouzuki_kallen",
|
|
7293
|
+
"booruSites": {
|
|
7294
|
+
"konachan": [
|
|
7295
|
+
"kallen_stadtfeld"
|
|
7296
|
+
],
|
|
7297
|
+
"yande": [
|
|
7298
|
+
"kallen_stadtfeld"
|
|
7299
|
+
],
|
|
7300
|
+
"zerochan": [
|
|
7301
|
+
"kallen_stadtfeld"
|
|
7302
|
+
]
|
|
7303
|
+
},
|
|
7204
7304
|
"background": "#201516",
|
|
7205
7305
|
"foreground": "#fbdbde",
|
|
7206
7306
|
"cursor": "#a3485a",
|
|
@@ -7259,7 +7359,18 @@
|
|
|
7259
7359
|
],
|
|
7260
7360
|
"order": 119,
|
|
7261
7361
|
"ansiSource": "London Embankment Dusk + Geass",
|
|
7262
|
-
"booru": "
|
|
7362
|
+
"booru": "nunnally_vi_britannia",
|
|
7363
|
+
"booruSites": {
|
|
7364
|
+
"konachan": [
|
|
7365
|
+
"nunnally_lamperouge"
|
|
7366
|
+
],
|
|
7367
|
+
"yande": [
|
|
7368
|
+
"nunnally_lamperouge"
|
|
7369
|
+
],
|
|
7370
|
+
"zerochan": [
|
|
7371
|
+
"nunnally_lamperouge"
|
|
7372
|
+
]
|
|
7373
|
+
},
|
|
7263
7374
|
"background": "#1f160d",
|
|
7264
7375
|
"foreground": "#f8dec7",
|
|
7265
7376
|
"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.10",
|
|
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() {
|