@kecan0406/ttheme 1.1.4 → 1.1.6
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 +18 -6
- package/bin/ttheme.js +180 -178
- package/bin/ttheme.js.map +1 -1
- package/dist/manifest.json +599 -141
- package/package.json +1 -1
- package/shell/adapters/_bg.zsh +230 -64
- package/shell/adapters/_osc.zsh +9 -1
- package/shell/adapters/terminal-app.zsh +4 -1
- package/shell/adapters/wezterm.zsh +58 -8
- package/shell/ttheme.zsh +1085 -173
package/package.json
CHANGED
package/shell/adapters/_bg.zsh
CHANGED
|
@@ -9,14 +9,6 @@ __tt_ghostty_shown() {
|
|
|
9
9
|
REPLY=${${REPLY/--/@}/--//}
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
__tt_put() {
|
|
13
|
-
local f=$1
|
|
14
|
-
shift
|
|
15
|
-
print -rl -- "$@" > $f.$$ && mv -f -- $f.$$ $f && return 0
|
|
16
|
-
rm -f -- $f.$$
|
|
17
|
-
return 1
|
|
18
|
-
}
|
|
19
|
-
|
|
20
12
|
__tt_bg_saved() {
|
|
21
13
|
local REPLY
|
|
22
14
|
(( ${TTHEME_TERMINALS[(Ie)iterm2]} )) && __tt_cli image $1 tuned
|
|
@@ -27,6 +19,8 @@ __tt_bg_saved() {
|
|
|
27
19
|
|
|
28
20
|
__tt_bg_refresh() { : }
|
|
29
21
|
|
|
22
|
+
__tt_bg_lasting() { : }
|
|
23
|
+
|
|
30
24
|
__tt_bg_aligns() { (( ! ${TTHEME_TERMINALS[(Ie)iterm2]} )) }
|
|
31
25
|
|
|
32
26
|
__tt_bg_frame() {
|
|
@@ -80,31 +74,50 @@ __tt_bg_path() {
|
|
|
80
74
|
}
|
|
81
75
|
|
|
82
76
|
__tt_bg_load() {
|
|
83
|
-
local name=$1
|
|
84
|
-
local -i at=5
|
|
85
|
-
local -a fills lines
|
|
77
|
+
local name=$1 pal=${1%:*} key="" file dir=${TTHEME_CONFIG:h}/backgrounds img="" fit=contain op=1 pos=center line stem="" size=100 REPLY
|
|
78
|
+
local -i at=5 pass
|
|
79
|
+
local -a fills lines src pics pd
|
|
86
80
|
(( ${+bgsrc[$name]} )) && return 0
|
|
87
|
-
|
|
88
|
-
|
|
81
|
+
[[ $name == *:* ]] && key=${name##*:}
|
|
82
|
+
file=${${pal/@/--}/\//--}
|
|
83
|
+
bgfrom[$name]="" bgurl[$name]="" bgby[$name]="" bgtunef[$name]=$file.tune.conf bgofff[$name]=$file.off.conf bgimages[$name]=1
|
|
84
|
+
if [[ -n $key ]]; then
|
|
85
|
+
pd=(${=bgpic[$pal:$key]})
|
|
86
|
+
lines=("# from ${pd[5,-1]}" "background-image = $pd[2]" "background-image-fit = cover" "background-image-position = top-right" "background-image-opacity = $pd[3]" "config-file = ?$pd[1].tune.conf" "config-file = ?$pd[1].off.conf")
|
|
87
|
+
[[ $pd[4] == - ]] || lines+=("# by $pd[4]")
|
|
88
|
+
bgimages[$name]=${bgimages[$pal]:-1}
|
|
89
|
+
elif [[ -r $dir/$file.conf ]]; then
|
|
90
|
+
lines=("${(@f)$(<$dir/$file.conf)}")
|
|
91
|
+
fi
|
|
89
92
|
for line in $lines; do
|
|
90
93
|
case $line in
|
|
91
94
|
'config-file = ?'*.tune.conf) bgtunef[$name]=${line#config-file = \?} ;;
|
|
92
95
|
'config-file = ?'*.off.conf) bgofff[$name]=${line#config-file = \?} ;;
|
|
93
|
-
'# image '*/<->) bgimages[$name]=${line##*/} ;;
|
|
96
|
+
'# image '*/<->) bgimages[$name]=${line##*/} bgact[$pal]=${${line#\# image }%% *} ;;
|
|
97
|
+
'# picture '*)
|
|
98
|
+
pd=(${=line#\# picture })
|
|
99
|
+
bgpic[$pal:$pd[1]]=${(j: :)pd[2,-1]}
|
|
100
|
+
pics+=($pd[1])
|
|
101
|
+
;;
|
|
94
102
|
esac
|
|
95
103
|
done
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
'background-image-fit = '*|'background-image-fit='*) fit=${${line#*=}# } ;;
|
|
103
|
-
'background-image-opacity = '*|'background-image-opacity='*) op=${${line#*=}# } ;;
|
|
104
|
-
'background-image-position = '*|'background-image-position='*) pos=${${line#*=}# } ;;
|
|
105
|
-
esac
|
|
106
|
-
done
|
|
104
|
+
[[ -n $key ]] || bgpics[$pal]=${(j: :)pics}
|
|
105
|
+
for pass in 1 2; do
|
|
106
|
+
src=("${lines[@]}")
|
|
107
|
+
if (( pass == 2 )); then
|
|
108
|
+
src=()
|
|
109
|
+
[[ -r $dir/${bgtunef[$name]} ]] && src=("${(@f)$(<$dir/${bgtunef[$name]})}")
|
|
107
110
|
fi
|
|
111
|
+
for line in "${src[@]}"; do
|
|
112
|
+
case $line in
|
|
113
|
+
'# from '*) (( pass == 1 )) && bgfrom[$name]=${(j: :)${${=line#\# from }[1,2]}} bgurl[$name]=${${=line#\# from }[3]} ;;
|
|
114
|
+
'# by '*) (( pass == 1 )) && bgby[$name]=${${line#\# by }//,/, } ;;
|
|
115
|
+
'background-image = '*|'background-image='*) img=${${line#*=}# } ;;
|
|
116
|
+
'background-image-fit = '*|'background-image-fit='*) fit=${${line#*=}# } ;;
|
|
117
|
+
'background-image-opacity = '*|'background-image-opacity='*) op=${${line#*=}# } ;;
|
|
118
|
+
'background-image-position = '*|'background-image-position='*) pos=${${line#*=}# } ;;
|
|
119
|
+
esac
|
|
120
|
+
done
|
|
108
121
|
[[ $op == <->(|.<->) ]] || op=1
|
|
109
122
|
[[ $pos == center-center ]] && pos=center
|
|
110
123
|
at=${TTHEME_BG_POSITIONS[(Ie)$pos]}
|
|
@@ -116,7 +129,7 @@ __tt_bg_load() {
|
|
|
116
129
|
*@<20-999>-*-<->x<->.png|*@<20-99>-*.png) stem=${REPLY%@*} size=${${REPLY##*@}%%-*} ;;
|
|
117
130
|
*.png) stem=${REPLY%.png}; [[ $fit == cover ]] && size=fill ;;
|
|
118
131
|
esac
|
|
119
|
-
|
|
132
|
+
(( pass == 1 )) && bgdef[$name]="$size $at $op" bgbase[$name]=$REPLY
|
|
120
133
|
done
|
|
121
134
|
bgsize[$name]=$size bgpos[$name]=$at bgop[$name]=$op bgoff[$name]=0 bgshot[$name]="" bgshotkey[$name]="" bgfocus[$name]=50
|
|
122
135
|
[[ -e $dir/${bgofff[$name]} ]] && bgoff[$name]=1
|
|
@@ -200,12 +213,12 @@ __tt_bg_include() {
|
|
|
200
213
|
}
|
|
201
214
|
|
|
202
215
|
__tt_bg_write() {
|
|
203
|
-
local name=$1 dir=${TTHEME_CONFIG:h}/backgrounds src=${bgsrc[$1]} size=${bgsize[$1]} shape img="" fit=contain f REPLY
|
|
216
|
+
local name=$1 pal=${1%:*} dir=${TTHEME_CONFIG:h}/backgrounds src=${bgsrc[$1]} size=${bgsize[$1]} shape img="" fit=contain f REPLY
|
|
204
217
|
local pos=${TTHEME_BG_POSITIONS[${bgpos[$1]}]}
|
|
205
218
|
local -i W=$(( (pw + 2 * bgmx) * bgcw )) H=$(( (ph + 2 * bgmy) * bgch ))
|
|
206
219
|
local -a wh fr
|
|
207
|
-
[[ -r $dir/${${
|
|
208
|
-
__tt_bg_include $name || return 1
|
|
220
|
+
[[ -r $dir/${${pal/@/--}/\//--}.conf ]] || return 0
|
|
221
|
+
[[ $name == *:* ]] || __tt_bg_include $name || return 1
|
|
209
222
|
if [[ "$size ${bgpos[$1]} ${bgop[$1]}" == "${bgdef[$1]}" ]]; then
|
|
210
223
|
rm -f -- $dir/${bgtunef[$1]}
|
|
211
224
|
else
|
|
@@ -262,7 +275,7 @@ __tt_pv_bg_open() {
|
|
|
262
275
|
__tt_pv_bg_show() {
|
|
263
276
|
(( bgcw )) || return 0
|
|
264
277
|
local name=$1 img="" op size fit=contain focus=-1 REPLY
|
|
265
|
-
local -a p=(${=TTHEME_PALETTE[$name]}) wh at
|
|
278
|
+
local -a p=(${=TTHEME_PALETTE[${name%:*}]}) wh at
|
|
266
279
|
local -i cols=$(( pw + 2 * bgmx )) rows=$(( ph + 2 * bgmy ))
|
|
267
280
|
(( ${#p} >= 20 )) || return 0
|
|
268
281
|
(( $2 )) && { __tt_bg_forget; bgshown="" bganchor=0 }
|
|
@@ -336,7 +349,7 @@ __tt_bg_forget() {
|
|
|
336
349
|
for id in $bgsent; do
|
|
337
350
|
printf '\e_Ga=d,d=I,i=%d,q=2\e\\' $id
|
|
338
351
|
done
|
|
339
|
-
bgsent=() bgcost=() bgorder=() bgbytes=0
|
|
352
|
+
bgsent=() bgcost=() bgorder=() bgbytes=0 bgthumb=()
|
|
340
353
|
}
|
|
341
354
|
|
|
342
355
|
__tt_pv_bg_fs() {
|
|
@@ -353,8 +366,8 @@ __tt_pv_bg_fs() {
|
|
|
353
366
|
}
|
|
354
367
|
|
|
355
368
|
__tt_pv_bg_adjust() {
|
|
356
|
-
(( bgcw )) && [[ -n $
|
|
357
|
-
local name=$
|
|
369
|
+
(( bgcw )) && [[ -n $tpick ]] || return 0
|
|
370
|
+
local name=$tpick REPLY
|
|
358
371
|
__tt_bg_load $name
|
|
359
372
|
__tt_bg_image $name
|
|
360
373
|
__tt_bg_dim "$REPLY" || return 0
|
|
@@ -364,7 +377,14 @@ __tt_pv_bg_adjust() {
|
|
|
364
377
|
__tt_pv_bg_fs $name && fs=$REPLY
|
|
365
378
|
case $1 in
|
|
366
379
|
on) off=$(( ! off )) ;;
|
|
367
|
-
def)
|
|
380
|
+
def)
|
|
381
|
+
case $n in
|
|
382
|
+
1) size=$def[1] ;;
|
|
383
|
+
2) at=$def[2] ;;
|
|
384
|
+
3) op=$def[3] ;;
|
|
385
|
+
*) size=$def[1] at=$def[2] op=$def[3] off=0 ;;
|
|
386
|
+
esac
|
|
387
|
+
;;
|
|
368
388
|
*)
|
|
369
389
|
(( off )) && return 0
|
|
370
390
|
case $1 in
|
|
@@ -425,8 +445,12 @@ __tt_pv_bg_findable() {
|
|
|
425
445
|
|
|
426
446
|
__tt_pv_bg_find() {
|
|
427
447
|
local name=$1 err var
|
|
428
|
-
local -i rc
|
|
448
|
+
local -i rc n=${#TTHEME_SCENES}
|
|
449
|
+
local -x TTHEME_SCENE="" TTHEME_BG_MARGIN=""
|
|
450
|
+
(( n )) && TTHEME_SCENE=${(L)TTHEME_SCENES[(scene % n + n) % n + 1]}
|
|
451
|
+
(( bgrel )) && TTHEME_BG_MARGIN="$bgmx $bgmy"
|
|
429
452
|
[[ $applied == "$painted" ]] || { __tt_apply "$applied" && painted=$applied }
|
|
453
|
+
__tt_pv_bg_commit $name
|
|
430
454
|
__tt_pv_bg_close
|
|
431
455
|
err=$(__tt_cli find $name 2>&1 >/dev/tty)
|
|
432
456
|
rc=$?
|
|
@@ -440,44 +464,91 @@ __tt_pv_bg_find() {
|
|
|
440
464
|
msg=${err:-"Find failed for $name"} msgt=300
|
|
441
465
|
fi
|
|
442
466
|
(( rc == 0 )) || return 1
|
|
443
|
-
|
|
467
|
+
__tt_pv_bg_reset $name
|
|
444
468
|
__tt_bg_load $name
|
|
445
469
|
bgload[$name]="" bgedit[$name]=1
|
|
446
470
|
msg=${err:-"Background · $name"} msgt=200
|
|
447
471
|
return 0
|
|
448
472
|
}
|
|
449
473
|
|
|
474
|
+
__tt_pv_bg_commit() {
|
|
475
|
+
local img
|
|
476
|
+
for img in ${(k)bgedit[(I)${(b)1}(|:*)]}; do
|
|
477
|
+
__tt_bg_write $img
|
|
478
|
+
unset "bgedit[$img]"
|
|
479
|
+
done
|
|
480
|
+
unset "bgview[$1]" "bgswap[$1]"
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
__tt_pv_bg_reset() {
|
|
484
|
+
local img
|
|
485
|
+
for img in ${(k)bgsrc[(I)${(b)1}(|:*)]}; do
|
|
486
|
+
unset "bgsrc[$img]"
|
|
487
|
+
done
|
|
488
|
+
unset "bgview[$1]" "bgswap[$1]"
|
|
489
|
+
}
|
|
490
|
+
|
|
450
491
|
__tt_pv_bg_images() {
|
|
451
492
|
__tt_bg_load $1
|
|
452
493
|
REPLY=${bgimages[$1]:-1}
|
|
453
494
|
}
|
|
454
495
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
496
|
+
__tt_pv_img() {
|
|
497
|
+
REPLY=$1
|
|
498
|
+
[[ -z $2 || $2 == "${bgact[$1]}" ]] || REPLY=$1:$2
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
__tt_pv_tune_open() {
|
|
502
|
+
local REPLY
|
|
503
|
+
__tt_bg_load $1
|
|
504
|
+
__tt_pv_shows $1
|
|
505
|
+
tpick=$REPLY tune=$1 tf=1 tsnaps=()
|
|
506
|
+
__tt_bg_load $tpick
|
|
507
|
+
tsnaps[$tpick]="${bgsize[$tpick]} ${bgpos[$tpick]} ${bgop[$tpick]} ${bgoff[$tpick]}"
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
__tt_pv_bg_pick() {
|
|
511
|
+
local -a keys=(${=bgpics[$tune]})
|
|
512
|
+
local cur=${tpick##*:} REPLY
|
|
513
|
+
local -i n=${#keys} at
|
|
514
|
+
if (( n < 2 )); then
|
|
515
|
+
msg="$tune has one image" msgt=200
|
|
516
|
+
return 0
|
|
462
517
|
fi
|
|
463
|
-
|
|
518
|
+
[[ $tpick == *:* ]] || cur=${bgact[$tune]}
|
|
519
|
+
at=${keys[(Ie)$cur]}
|
|
520
|
+
(( at )) || at=1
|
|
521
|
+
at=$(( (at - 1 + $1 + n) % n + 1 ))
|
|
522
|
+
__tt_pv_img $tune $keys[at]
|
|
523
|
+
tpick=$REPLY
|
|
524
|
+
__tt_bg_load $tpick
|
|
525
|
+
(( ${+tsnaps[$tpick]} )) || tsnaps[$tpick]="${bgsize[$tpick]} ${bgpos[$tpick]} ${bgop[$tpick]} ${bgoff[$tpick]}"
|
|
526
|
+
bgname=""
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
__tt_pv_bg_drop() {
|
|
530
|
+
local name=$tune key=${tpick##*:} err
|
|
531
|
+
local -i rc
|
|
532
|
+
[[ $tpick == *:* ]] || key=${bgact[$name]}
|
|
533
|
+
__tt_pv_untune
|
|
534
|
+
__tt_pv_bg_commit $name
|
|
464
535
|
__tt_pv_bg_close
|
|
465
|
-
err=$(__tt_cli image $name $
|
|
536
|
+
err=$(__tt_cli image $name drop ${key:+$key} 2>&1)
|
|
466
537
|
rc=$?
|
|
467
538
|
err=${${err//$'\n'/ }## #}
|
|
468
539
|
resized=1 bgname="" bgshown="" bgdim=()
|
|
469
|
-
|
|
540
|
+
__tt_pv_bg_reset $name
|
|
470
541
|
__tt_bg_load $name
|
|
471
542
|
bgload[$name]="" bgedit[$name]=1
|
|
472
543
|
msg=${err:-"Background · $name"} msgt=$(( rc ? 300 : 200 ))
|
|
473
544
|
[[ -r ${TTHEME_CONFIG:h}/backgrounds/${${name/@/--}/\//--}.conf ]] || return 0
|
|
474
|
-
|
|
545
|
+
__tt_pv_tune_open $name
|
|
475
546
|
}
|
|
476
547
|
|
|
477
548
|
__tt_pv_bg_panel() {
|
|
478
|
-
local name=$1 z=$'\e[0m' b=$'\e[1m' d=$'\e[2m' c=$ac val sty REPLY
|
|
479
|
-
local -a labs=(Size Position Opacity) at=(0 3 6)
|
|
480
|
-
local -i r0=$2 col=$3 end=$4 off=${bgoff[$1]} T=$(( $4 - $3 -
|
|
549
|
+
local name=$1 z=$'\e[0m' b=$'\e[1m' d=$'\e[2m' c=$ac val sty mark REPLY
|
|
550
|
+
local -a labs=(Size Position Opacity) at=(0 3 6) def=(${=bgdef[$1]})
|
|
551
|
+
local -i r0=$2 col=$3 end=$4 off=${bgoff[$1]} T=$(( $4 - $3 - 21 )) lo=100 hi=100 k i r knob pos=${bgpos[$1]} o tuned
|
|
481
552
|
(( color )) || z= b= d= c=
|
|
482
553
|
(( T < 8 )) && T=8
|
|
483
554
|
(( $+commands[sips] )) && lo=20
|
|
@@ -507,6 +578,7 @@ __tt_pv_bg_panel() {
|
|
|
507
578
|
fi
|
|
508
579
|
done
|
|
509
580
|
val=${TTHEME_BG_POSITIONS[pos]}
|
|
581
|
+
tuned=$(( pos != def[2] ))
|
|
510
582
|
else
|
|
511
583
|
if (( k == 1 )); then
|
|
512
584
|
if [[ ${bgsize[$name]} == fill ]]; then
|
|
@@ -514,9 +586,12 @@ __tt_pv_bg_panel() {
|
|
|
514
586
|
else
|
|
515
587
|
knob=$(( (${bgsize[$name]} - lo) * (T - 1) / (hi - lo + 1) )) val=${bgsize[$name]}%
|
|
516
588
|
fi
|
|
589
|
+
tuned=0
|
|
590
|
+
[[ ${bgsize[$name]} == "$def[1]" ]] || tuned=1
|
|
517
591
|
else
|
|
518
592
|
o=$(( ${bgop[$name]} * 100 + 0.5 ))
|
|
519
593
|
knob=$(( o * (T - 1) / 100 )) val=${bgop[$name]}
|
|
594
|
+
tuned=$(( ${bgop[$name]} * 1000 + 0.5 != ${def[3]:-1} * 1000 + 0.5 ))
|
|
520
595
|
fi
|
|
521
596
|
(( knob < 0 )) && knob=0
|
|
522
597
|
(( knob > T - 1 )) && knob=$(( T - 1 ))
|
|
@@ -529,8 +604,88 @@ __tt_pv_bg_panel() {
|
|
|
529
604
|
out+=$c${(l:knob::━:)}$b"●"$z$d${(l:$(( T - 1 - knob ))::─:)}$z
|
|
530
605
|
fi
|
|
531
606
|
fi
|
|
532
|
-
out+=$'\e['$r';'$(( end - ${#val}
|
|
607
|
+
out+=$'\e['$r';'$(( end - ${#val} - 1 ))'H'$sty$val$z
|
|
608
|
+
if (( tuned )); then
|
|
609
|
+
mark=$d
|
|
610
|
+
(( tf == k )) && mark=$b$c
|
|
611
|
+
out+=$'\e['$r';'$end'H'$mark"↺"$z
|
|
612
|
+
fi
|
|
613
|
+
done
|
|
614
|
+
(( split )) && bgstrip="$(( r0 + 8 )) $col $end"
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
__tt_pv_bg_strip() {
|
|
618
|
+
local pal=$tune dir=${TTHEME_CONFIG:h}/backgrounds cur fill want sty top side bot cmd buf="" z=$'\e[0m' d=$'\e[2m' REPLY
|
|
619
|
+
local -a keys=(${=bgpics[$tune]}) wh pd
|
|
620
|
+
local -i r0=$1 col=$2 end=$3 n=${#keys} at show tc tr=3 i k x r id slot first
|
|
621
|
+
if (( n < 2 )); then
|
|
622
|
+
__tt_pv_bg_strip_off
|
|
623
|
+
return 0
|
|
624
|
+
fi
|
|
625
|
+
cur=${tpick##*:}
|
|
626
|
+
[[ $tpick == *:* ]] || cur=${bgact[$pal]}
|
|
627
|
+
at=${keys[(Ie)$cur]}
|
|
628
|
+
(( at )) || at=1
|
|
629
|
+
buf+=$'\e['$r0';'$(( col + 2 ))'H'$d"Images"$z$'\e['$r0';'$(( end - ${#at} - ${#n} ))'H'$d"$at/$n"$z
|
|
630
|
+
pd=(${=bgpic[$pal:$keys[at]]})
|
|
631
|
+
if (( r0 + tr + 3 >= ph )) || ! __tt_bg_dim $dir/$pd[2]; then
|
|
632
|
+
print -rn -- "$buf"
|
|
633
|
+
__tt_pv_bg_strip_off
|
|
634
|
+
return 0
|
|
635
|
+
fi
|
|
636
|
+
wh=(${=bgdim[$dir/$pd[2]]})
|
|
637
|
+
tc=$(( (2 * tr * bgch * wh[1] + wh[2] * bgcw) / (2 * wh[2] * bgcw) ))
|
|
638
|
+
(( tc < 4 )) && tc=4
|
|
639
|
+
(( tc > 16 )) && tc=16
|
|
640
|
+
show=$(( n < 5 ? n : 5 ))
|
|
641
|
+
while (( show > 1 && show * (tc + 3) - 1 > end - col )); do
|
|
642
|
+
(( show-- ))
|
|
643
|
+
done
|
|
644
|
+
first=1
|
|
645
|
+
(( n > show )) && first=$(( ((at - 1 - show / 2) % n + n) % n + 1 ))
|
|
646
|
+
for (( i = 0; i < show; i++ )); do
|
|
647
|
+
k=$(( (first - 1 + i) % n + 1 ))
|
|
648
|
+
x=$(( col + i * (tc + 3) ))
|
|
649
|
+
slot=$(( i + 1 ))
|
|
650
|
+
if (( k == at )); then
|
|
651
|
+
sty=$'\e[1m'$ac top="┏${(l:tc::━:)}┓" side="┃" bot="┗${(l:tc::━:)}┛"
|
|
652
|
+
else
|
|
653
|
+
sty=$d top="╭${(l:tc::─:)}╮" side="│" bot="╰${(l:tc::─:)}╯"
|
|
654
|
+
fi
|
|
655
|
+
buf+=$'\e['$(( r0 + 1 ))';'$x'H'$sty$top$z$'\e['$(( r0 + tr + 2 ))';'$x'H'$sty$bot$z
|
|
656
|
+
for (( r = 0; r < tr; r++ )); do
|
|
657
|
+
buf+=$'\e['$(( r0 + 2 + r ))';'$x'H'$sty$side$z$'\e['$(( r0 + 2 + r ))';'$(( x + tc + 1 ))'H'$sty$side$z
|
|
658
|
+
done
|
|
659
|
+
pd=(${=bgpic[$pal:$keys[k]]})
|
|
660
|
+
fill=$dir/$pd[2]
|
|
661
|
+
[[ -r $fill ]] || continue
|
|
662
|
+
__tt_bg_send $fill
|
|
663
|
+
id=$REPLY
|
|
664
|
+
want="$id $(( r0 + 2 )) $(( x + 1 )) $tc $tr"
|
|
665
|
+
__tt_bg_lasting && [[ ${bgthumb[$slot]} == "$want" ]] && continue
|
|
666
|
+
if [[ -n ${bgthumb[$slot]} ]]; then
|
|
667
|
+
printf -v cmd '\e_Ga=d,d=i,i=%d,p=%d,q=2\e\\' ${${=bgthumb[$slot]}[1]} $(( 700000 + slot ))
|
|
668
|
+
buf+=$cmd
|
|
669
|
+
fi
|
|
670
|
+
printf -v cmd '\e[%d;%dH\e_Ga=p,i=%d,p=%d,c=%d,r=%d,C=1,z=-1,q=2\e\\' $(( r0 + 2 )) $(( x + 1 )) $id $(( 700000 + slot )) $tc $tr
|
|
671
|
+
buf+=$cmd
|
|
672
|
+
bgthumb[$slot]=$want
|
|
673
|
+
done
|
|
674
|
+
for slot in ${(k)bgthumb}; do
|
|
675
|
+
(( slot > show )) || continue
|
|
676
|
+
printf -v cmd '\e_Ga=d,d=i,i=%d,p=%d,q=2\e\\' ${${=bgthumb[$slot]}[1]} $(( 700000 + slot ))
|
|
677
|
+
buf+=$cmd
|
|
678
|
+
unset "bgthumb[$slot]"
|
|
679
|
+
done
|
|
680
|
+
print -rn -- "$buf"
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
__tt_pv_bg_strip_off() {
|
|
684
|
+
local slot
|
|
685
|
+
for slot in ${(k)bgthumb}; do
|
|
686
|
+
printf '\e_Ga=d,d=i,i=%d,p=%d,q=2\e\\' ${${=bgthumb[$slot]}[1]} $(( 700000 + slot ))
|
|
533
687
|
done
|
|
688
|
+
bgthumb=()
|
|
534
689
|
}
|
|
535
690
|
|
|
536
691
|
__tt_pv_bg_close() {
|
|
@@ -539,27 +694,38 @@ __tt_pv_bg_close() {
|
|
|
539
694
|
}
|
|
540
695
|
|
|
541
696
|
__tt_pv_bg_save() {
|
|
542
|
-
local name
|
|
697
|
+
local img name note err REPLY
|
|
543
698
|
local -a saved=()
|
|
544
|
-
(( ${#bgedit} )) || return 0
|
|
545
|
-
for
|
|
546
|
-
if ! __tt_bg_write $
|
|
547
|
-
print -u2 "ttheme: could not save the background of $
|
|
699
|
+
(( ${#bgedit} + ${#bgswap} )) || return 0
|
|
700
|
+
for img in ${(ok)bgedit}; do
|
|
701
|
+
if ! __tt_bg_write $img; then
|
|
702
|
+
print -u2 "ttheme: could not save the background of ${img%:*}"
|
|
703
|
+
continue
|
|
704
|
+
fi
|
|
705
|
+
(( ${saved[(Ie)${img%:*}]} )) || saved+=(${img%:*})
|
|
706
|
+
done
|
|
707
|
+
for name in ${(ok)bgswap}; do
|
|
708
|
+
if ! err=$(__tt_cli image $name show ${bgswap[$name]} 2>&1); then
|
|
709
|
+
print -u2 -r -- "$err"
|
|
548
710
|
continue
|
|
549
711
|
fi
|
|
550
|
-
saved+=($name)
|
|
712
|
+
(( ${saved[(Ie)$name]} )) || saved+=($name)
|
|
713
|
+
done
|
|
714
|
+
for name in $saved; do
|
|
715
|
+
__tt_pv_shows $name
|
|
716
|
+
img=$REPLY
|
|
551
717
|
if [[ ! -r ${TTHEME_CONFIG:h}/backgrounds/${${name/@/--}/\//--}.conf ]]; then
|
|
552
|
-
|
|
553
|
-
elif (( bgoff[$
|
|
554
|
-
|
|
718
|
+
note="Background · $name none"
|
|
719
|
+
elif (( bgoff[$img] )); then
|
|
720
|
+
note="Background · $name off"
|
|
555
721
|
else
|
|
556
|
-
__tt_bg_label $
|
|
557
|
-
|
|
722
|
+
__tt_bg_label $img
|
|
723
|
+
note="Background · $name $REPLY"
|
|
558
724
|
fi
|
|
559
725
|
if __tt_color; then
|
|
560
|
-
printf '\033[2m%s\033[0m\n' "$
|
|
726
|
+
printf '\033[2m%s\033[0m\n' "$note"
|
|
561
727
|
else
|
|
562
|
-
print -r -- "$
|
|
728
|
+
print -r -- "$note"
|
|
563
729
|
fi
|
|
564
730
|
done
|
|
565
731
|
(( ${#saved} )) && __tt_bg_saved $saved
|
package/shell/adapters/_osc.zsh
CHANGED
|
@@ -71,10 +71,18 @@ __tt_pv_bg_find() { return 1 }
|
|
|
71
71
|
|
|
72
72
|
__tt_pv_bg_images() { REPLY=1 }
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
__tt_pv_tune_open() { : }
|
|
75
|
+
|
|
76
|
+
__tt_pv_bg_pick() { : }
|
|
77
|
+
|
|
78
|
+
__tt_pv_bg_drop() { : }
|
|
75
79
|
|
|
76
80
|
__tt_pv_bg_panel() { : }
|
|
77
81
|
|
|
82
|
+
__tt_pv_bg_strip() { : }
|
|
83
|
+
|
|
84
|
+
__tt_pv_bg_strip_off() { : }
|
|
85
|
+
|
|
78
86
|
__tt_pv_bg_close() { : }
|
|
79
87
|
|
|
80
88
|
__tt_pv_bg_save() { : }
|
|
@@ -1,23 +1,73 @@
|
|
|
1
|
-
|
|
1
|
+
source $TTHEME_HOME/adapters/_bg.zsh
|
|
2
|
+
|
|
3
|
+
typeset -g TTHEME_WEZTERM_SHOWN="" TTHEME_WEZTERM_VIEW=""
|
|
2
4
|
|
|
3
5
|
__tt_keepable() { (( ${TTHEME_TERMINALS[(Ie)wezterm]} )) }
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
__tt_wezterm_var() {
|
|
6
8
|
local REPLY
|
|
7
|
-
__tt_b64s "$
|
|
8
|
-
|
|
9
|
+
__tt_b64s "$2"
|
|
10
|
+
__tt_out $'\e]1337;SetUserVar='$1'='$REPLY$'\a'
|
|
9
11
|
}
|
|
10
12
|
|
|
11
13
|
__tt_shown() {
|
|
12
14
|
[[ $2 != force && $TTHEME_WEZTERM_SHOWN == $1 ]] && return 1
|
|
13
15
|
TTHEME_WEZTERM_SHOWN=$1
|
|
14
|
-
|
|
16
|
+
__tt_wezterm_var ttheme_shown $1
|
|
15
17
|
return 1
|
|
16
18
|
}
|
|
17
19
|
|
|
20
|
+
__tt_bg_shown() { REPLY=$TTHEME_WEZTERM_SHOWN }
|
|
21
|
+
|
|
22
|
+
__tt_bg_refresh() { __tt_wezterm_var ttheme_shown $TTHEME_WEZTERM_SHOWN }
|
|
23
|
+
|
|
24
|
+
__tt_bg_lasting() { return 1 }
|
|
25
|
+
|
|
26
|
+
__tt_bg_cells() {
|
|
27
|
+
local REPLY resp
|
|
28
|
+
__tt_ask $'\e[16t' || return 0
|
|
29
|
+
resp=$REPLY
|
|
30
|
+
[[ $resp == *'[6;'<1->';'<1->t ]] || return 0
|
|
31
|
+
resp=${${resp##*\[6;}%t}
|
|
32
|
+
bgch=${resp%;*} bgcw=${resp#*;}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
__tt_pv_bg_findable() { return 1 }
|
|
36
|
+
|
|
18
37
|
__tt_pv_bg_show() {
|
|
19
|
-
|
|
20
|
-
|
|
38
|
+
(( bgcw )) || return 0
|
|
39
|
+
local name=$1 img="" size fit=contain view="" REPLY
|
|
40
|
+
local -i W=$(( pw * bgcw )) H=$(( ph * bgch )) focus=-1
|
|
41
|
+
local -a p=(${=TTHEME_PALETTE[${name%:*}]}) wh
|
|
42
|
+
(( ${#p} >= 20 )) || return 0
|
|
43
|
+
(( $2 )) && TTHEME_WEZTERM_VIEW=-
|
|
44
|
+
bgname=$name
|
|
45
|
+
__tt_bg_load $name
|
|
46
|
+
if [[ $name != "$bginc" || "${bgsize[$name]} ${bgpos[$name]} ${bgop[$name]} ${bgoff[$name]}" != "${bgload[$name]}" ]]; then
|
|
47
|
+
size=${bgsize[$name]}
|
|
48
|
+
if [[ $size == fill ]]; then
|
|
49
|
+
img=${bgfill[$name]} size=100 fit=cover
|
|
50
|
+
elif [[ "$size ${bgpos[$name]}" == "${bgshotkey[$name]}" && -r ${bgshot[$name]} ]]; then
|
|
51
|
+
img=${bgshot[$name]} size=100 fit=cover
|
|
52
|
+
else
|
|
53
|
+
img=${bgsrc[$name]} focus=${bgfocus[$name]}
|
|
54
|
+
fi
|
|
55
|
+
(( bgoff[$name] )) && img=""
|
|
56
|
+
view="$p[1]||1|$W|$H|0|0|0|0|5"
|
|
57
|
+
if [[ -n $img ]] && __tt_bg_dim "$img"; then
|
|
58
|
+
wh=(${=bgdim[$img]})
|
|
59
|
+
__tt_bg_frame $wh[1] $wh[2] $W $H $size ${bgpos[$name]} $fit $focus
|
|
60
|
+
view="$p[1]|$img|${bgop[$name]}|$W|$H|${REPLY// /|}|${bgpos[$name]}"
|
|
61
|
+
fi
|
|
62
|
+
fi
|
|
63
|
+
[[ $view == "$TTHEME_WEZTERM_VIEW" ]] && return 0
|
|
64
|
+
TTHEME_WEZTERM_VIEW=$view
|
|
65
|
+
__tt_wezterm_var ttheme_view "$view"
|
|
21
66
|
}
|
|
22
67
|
|
|
23
|
-
__tt_pv_bg_close() {
|
|
68
|
+
__tt_pv_bg_close() {
|
|
69
|
+
(( bgcw )) && { printf '\e_Ga=d,d=A,q=2\e\\'; __tt_bg_forget }
|
|
70
|
+
[[ -n $TTHEME_WEZTERM_VIEW ]] || return 0
|
|
71
|
+
TTHEME_WEZTERM_VIEW=""
|
|
72
|
+
__tt_wezterm_var ttheme_view ""
|
|
73
|
+
}
|