@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.
@@ -1,5 +1,6 @@
1
1
  {
2
- "version": "1.2.9",
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": "sakura_kyouko",
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": "kyuubee",
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": "yamada_ryou",
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": "sakamoto_ryuuji",
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": "takamaki_anne",
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": "kitagawa_yuusuke",
3209
+ "booru": "kitagawa_yusuke",
3170
3210
  "booruSites": {
3171
- "konachan": [
3172
- "kitagawa_yusuke"
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": "gojou_satoru",
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": "itadori_yuuji",
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": "getou_suguru",
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": "lelouch_lamperouge",
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": "kallen_stadtfeld",
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": "nunnally_lamperouge",
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.9",
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",
@@ -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() {