@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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.2.8",
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": "sakura_kyouko",
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": "kyuubee",
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": "yamada_ryou",
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": "sakamoto_ryuuji",
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": "takamaki_anne",
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": "kitagawa_yuusuke",
3216
+ "booru": "kitagawa_yusuke",
3170
3217
  "booruSites": {
3171
- "konachan": [
3172
- "kitagawa_yusuke"
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": "gojou_satoru",
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": "itadori_yuuji",
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": "getou_suguru",
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": "lelouch_lamperouge",
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": "kallen_stadtfeld",
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": "nunnally_lamperouge",
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.8",
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",
@@ -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
@@ -6,19 +6,25 @@ __tt_out() {
6
6
  fi
7
7
  }
8
8
 
9
- __tt_osc_apply() {
9
+ __tt_osc_colors() {
10
10
  local -a p=(${=1})
11
- (( ${#p} >= 20 )) || return 1
12
- local out i
13
-
11
+ local i
14
12
  if [[ $p[1] == - ]]; then
15
- out=$'\e]111\e\\'
13
+ REPLY=$'\e]111\e\\'
16
14
  else
17
- out=$'\e]11;'$p[1]$'\e\\'
15
+ REPLY=$'\e]11;'$p[1]$'\e\\'
18
16
  fi
19
- out+=$'\e]10;'$p[2]$'\e\\\e]12;'$p[3]$'\e\\\e]17;'$p[4]$'\e\\'
20
- for i in {0..15}; do out+=$'\e]4;'$i';'$p[i+5]$'\e\\'; done
21
- __tt_out "$out"
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
- __tt_pv_conf_rows() { : }
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
- __tt_worn() { [[ -z $1 ]] || TTHEME_ITERM_DYED=1 }
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
- __tt_out $'\e]110\e\\\e]111\e\\'
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
- TTHEME_ITERM_DYED=1
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
- __tt_out $'\e]1337;SetProfile=ttheme · '$1$'\a'
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
- __tt_out $'\e]1337;SetProfile=\a'
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() {