@kecan0406/ttheme 1.2.2 → 1.2.3

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.2",
2
+ "version": "1.2.3",
3
3
  "gate": [
4
4
  {
5
5
  "rule": "foreground",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kecan0406/ttheme",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "ttheme": "bin/ttheme.js"
@@ -37,6 +37,7 @@
37
37
  "@material/material-color-utilities": "^0.4.0",
38
38
  "@types/bun": "^1.3.0",
39
39
  "@types/pngjs": "6.0.5",
40
+ "@xterm/headless": "6.0.0",
40
41
  "fast-string-width": "^3.0.2",
41
42
  "jpeg-js": "^0.4.4",
42
43
  "pngjs": "7.0.0",
@@ -63,6 +63,8 @@ __tt_unpainted() { : }
63
63
 
64
64
  __tt_follows_focus() { return 1 }
65
65
 
66
+ __tt_takes_default() { return 0 }
67
+
66
68
  __tt_follows_prompt() { return 1 }
67
69
 
68
70
  __tt_prompted() { : }
@@ -1 +1,3 @@
1
1
  __tt_keepable() { (( ${TTHEME_TERMINALS[(Ie)alacritty]} )) }
2
+
3
+ __tt_follows_focus() { return 0 }
@@ -1,17 +1,35 @@
1
1
  source $TTHEME_HOME/adapters/_bg.zsh
2
2
 
3
3
  if (( ! ${+TTHEME_ITERM_SHOWN} )); then
4
- typeset -gx TTHEME_ITERM_SHOWN=""
4
+ typeset -gx TTHEME_ITERM_SHOWN="" TTHEME_ITERM_DYED=0
5
5
  [[ $ITERM_PROFILE == 'ttheme · '* ]] && TTHEME_ITERM_SHOWN=${ITERM_PROFILE#ttheme · }
6
6
  fi
7
7
 
8
8
  __tt_keepable() { return 0 }
9
9
 
10
+ __tt_follows_focus() { return 0 }
11
+
12
+ __tt_takes_default() {
13
+ local REPLY was=$TTHEME_ITERM_SHOWN
14
+ (( ! TTHEME_ITERM_DYED )) || return 1
15
+ (( TTHEME_TMUX )) && was=$(tmux show -qv @ttheme_shown 2>/dev/null)
16
+ [[ $was == default ]] && return 0
17
+ [[ -z $was ]] && __tt_hear && [[ $REPLY == ${TTHEME_PALETTE[$TTHEME_STARTUP]%% *} ]] || return 1
18
+ TTHEME_ITERM_SHOWN=default
19
+ (( TTHEME_TMUX )) && tmux set -q @ttheme_shown default 2>/dev/null
20
+ return 0
21
+ }
22
+
23
+ __tt_worn() { [[ -z $1 ]] || TTHEME_ITERM_DYED=1 }
24
+
10
25
  __tt_pv_paint() {
11
26
  local -a p=(${=1})
12
27
  if (( ${#p} < 20 )); then
13
28
  __tt_out $'\e]110\e\\\e]111\e\\'
14
- elif [[ $p[1] == - ]]; then
29
+ return 0
30
+ fi
31
+ TTHEME_ITERM_DYED=1
32
+ if [[ $p[1] == - ]]; then
15
33
  __tt_out $'\e]111\e\\\e]10;'$p[2]$'\e\\'
16
34
  else
17
35
  __tt_out $'\e]11;'$p[1]$'\e\\\e]10;'$p[2]$'\e\\'
@@ -34,7 +52,7 @@ __tt_shown() {
34
52
  [[ -r $dir/${${1/@/--}/\//--}.conf || ( -n $was && -r $dir/${${was/@/--}/\//--}.conf ) ]] || (( TTHEME_MUXED )) || return 1
35
53
  (( ${TTHEME_ORDER[(Ie)$1]} )) || return 1
36
54
  __tt_out $'\e]1337;SetProfile=ttheme · '$1$'\a'
37
- TTHEME_ITERM_SHOWN=$1
55
+ TTHEME_ITERM_SHOWN=$1 TTHEME_ITERM_DYED=0
38
56
  (( TTHEME_TMUX )) && tmux set -q @ttheme_shown $1 2>/dev/null
39
57
  return 1
40
58
  }
@@ -44,7 +62,7 @@ __tt_unshown() {
44
62
  (( TTHEME_TMUX )) && was=$(tmux show -qv @ttheme_shown 2>/dev/null)
45
63
  [[ $1 != force && $was == "$want" ]] && return 0
46
64
  __tt_out $'\e]1337;SetProfile=\a'
47
- TTHEME_ITERM_SHOWN=$want
65
+ TTHEME_ITERM_SHOWN=$want TTHEME_ITERM_DYED=0
48
66
  (( TTHEME_TMUX )) && tmux set -q @ttheme_shown "$want" 2>/dev/null
49
67
  return 0
50
68
  }
@@ -6,6 +6,10 @@ __tt_unpainted() {
6
6
 
7
7
  __tt_keepable() { __tt_paints }
8
8
 
9
+ __tt_takes_default() { __tt_osc_reset }
10
+
11
+ __tt_follows_focus() { return 0 }
12
+
9
13
  __tt_scheme() {
10
14
  local -a p=(${=TTHEME_PALETTE[$1]})
11
15
  REPLY="ColorScheme=ttheme-${${1/@/--}/\//--};UseCustomCursorColor=true;customCursorColor=$p[3]"
@@ -21,6 +21,8 @@ __tt_hear() {
21
21
 
22
22
  __tt_heard() { TTHEME_TERMINAL_BASE=$1 }
23
23
 
24
+ __tt_takes_default() { return 1 }
25
+
24
26
  __tt_osc_reset() {
25
27
  [[ -n $TTHEME_TERMINAL_BASE ]] && __tt_osc_apply "$TTHEME_TERMINAL_BASE"
26
28
  unset TTHEME_PAINTED
@@ -4,6 +4,8 @@ typeset -g TTHEME_WEZTERM_SHOWN="" TTHEME_WEZTERM_VIEW=""
4
4
 
5
5
  __tt_keepable() { (( ${TTHEME_TERMINALS[(Ie)wezterm]} )) }
6
6
 
7
+ __tt_follows_focus() { return 0 }
8
+
7
9
  __tt_wezterm_var() {
8
10
  local REPLY
9
11
  __tt_b64s "$2"
@@ -1,5 +1,14 @@
1
1
  __tt_keepable() { (( ${TTHEME_TERMINALS[(Ie)windows-terminal]} )) }
2
2
 
3
- __tt_reloaded() { __tt_repaint }
3
+ __tt_reloaded() {
4
+ local REPLY
5
+ integer i
6
+ [[ -n $TTHEME_PAINTED ]] || return 0
7
+ for (( i = 0; i < 20; i++ )); do
8
+ __tt_query_bg && [[ ${(L)REPLY} == ${(L)${TTHEME_SPEC%% *}} ]] || break
9
+ sleep 0.05
10
+ done
11
+ __tt_repaint
12
+ }
4
13
 
5
14
  __tt_follows_focus() { return 0 }
package/shell/ttheme.zsh CHANGED
@@ -14,16 +14,22 @@ __tt_palettes_load() {
14
14
  __tt_fresh() {
15
15
  emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
16
16
  local -a at
17
- local was=$TTHEME_STARTUP
17
+ local was=$TTHEME_STARTUP start="$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}"
18
18
  if ! zstat -F %s.%N -A at +mtime -- $TTHEME_HOME/palettes.zsh 2>/dev/null; then
19
19
  [[ -e $TTHEME_HOME ]] || __tt_gone
20
20
  return 0
21
21
  fi
22
22
  [[ $at[1] == "$TTHEME_PALETTES_AT" ]] && return 0
23
- __tt_palettes_load && __tt_reloaded
23
+ __tt_palettes_load && { __tt_follow "$start" && __tt_sync; __tt_reloaded }
24
24
  [[ -n $was && -z $TTHEME_STARTUP && -n $TTHEME_SPEC ]] && __tt_active && __tt_off_here
25
25
  }
26
26
 
27
+ __tt_follow() {
28
+ [[ -n $TTHEME_STARTUP && "$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}" != "$1" && -z $TTHEME_PAINTED ]] || return 1
29
+ __tt_active && __tt_takes_default || return 1
30
+ TTHEME_SPEC=${TTHEME_PALETTE[$TTHEME_STARTUP]}
31
+ }
32
+
27
33
  __tt_gone() {
28
34
  local bg=${TTHEME_SPEC%% *} hook
29
35
  TTHEME_SPEC=
@@ -304,8 +310,7 @@ __tt_dir_sync() {
304
310
  [[ -n $spec && $spec != "$TTHEME_SPEC" ]] || return 0
305
311
  __tt_apply "$spec"
306
312
  TTHEME_SPEC=$spec
307
- __tt_name_of "$spec"
308
- __tt_shown "$REPLY" && __tt_reload
313
+ __tt_sync
309
314
  }
310
315
 
311
316
  __tt_chpwd() {
@@ -314,14 +319,16 @@ __tt_chpwd() {
314
319
  __tt_dir_sync
315
320
  }
316
321
 
317
- __tt_sync() {
322
+ __tt_worn_shown() {
318
323
  local REPLY
319
- [[ -n $TTHEME_SPEC ]] || return 0
324
+ [[ -n $TTHEME_SPEC ]] || return 1
320
325
  __tt_name_of "$TTHEME_SPEC"
321
- [[ -n ${TTHEME_PALETTE[$REPLY]} ]] || return 0
322
- __tt_shown "$REPLY" && __tt_reload
326
+ [[ -n ${TTHEME_PALETTE[$REPLY]} ]] || return 1
327
+ __tt_shown "$REPLY" $1
323
328
  }
324
329
 
330
+ __tt_sync() { ! __tt_worn_shown || __tt_reload }
331
+
325
332
  __tt_precmd() {
326
333
  emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
327
334
  __tt_sync
@@ -335,12 +342,13 @@ __tt_preexec() {
335
342
  }
336
343
 
337
344
  __tt_rewear() {
338
- local REPLY
339
345
  __tt_repaint
340
- [[ -n $TTHEME_SPEC ]] || { __tt_unshown $1; return 0 }
341
- __tt_name_of "$TTHEME_SPEC"
342
- [[ -n ${TTHEME_PALETTE[$REPLY]} ]] || return 0
343
- __tt_shown "$REPLY" $1 && __tt_reload
346
+ if [[ -n $TTHEME_SPEC ]]; then
347
+ __tt_worn_shown $1 && __tt_reload
348
+ else
349
+ __tt_unshown $1
350
+ fi
351
+ return 0
344
352
  }
345
353
 
346
354
  __tt_focus() {
@@ -1074,10 +1082,11 @@ __tt_pins_map() {
1074
1082
  }
1075
1083
 
1076
1084
  __tt_keep() {
1077
- local note
1085
+ local note was="$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}"
1078
1086
  note=$(__tt_cli default "$1") || return 1
1079
- TTHEME_STARTUP=$1
1080
- __tt_shown "$1" force
1087
+ [[ -r $TTHEME_HOME/palettes.zsh ]] && __tt_palettes_load && __tt_reloaded
1088
+ __tt_follow "$was"
1089
+ __tt_worn_shown $2
1081
1090
  __tt_reload
1082
1091
  if __tt_color; then
1083
1092
  printf '\033[2m%s\033[0m\n' "${(@f)note}"
@@ -1189,7 +1198,10 @@ __tt_catalog() {
1189
1198
  [[ -r $TTHEME_HOME/palettes.zsh ]] || return 0
1190
1199
  was="$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}"
1191
1200
  __tt_palettes_load && __tt_reloaded
1192
- [[ "$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}" == "$was" ]] || __tt_reload
1201
+ [[ "$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}" == "$was" ]] && return 0
1202
+ __tt_follow "$was"
1203
+ __tt_worn_shown
1204
+ __tt_reload
1193
1205
  }
1194
1206
 
1195
1207
  __tt_switch() {
@@ -1307,13 +1319,11 @@ __tt_next() {
1307
1319
  }
1308
1320
 
1309
1321
  __tt_rotate() {
1310
- local REPLY spec
1322
+ local REPLY
1311
1323
  __tt_next
1312
- spec=$REPLY
1313
- __tt_apply "$spec"
1314
- TTHEME_SPEC=$spec
1315
- __tt_name_of "$spec"
1316
- __tt_shown "$REPLY" force && __tt_reload
1324
+ __tt_apply "$REPLY"
1325
+ TTHEME_SPEC=$REPLY
1326
+ __tt_worn_shown force && __tt_reload
1317
1327
  __tt_announce
1318
1328
  }
1319
1329
 
@@ -2705,7 +2715,7 @@ __tt_preview() {
2705
2715
  __tt_sync
2706
2716
  elif (( picked == 2 )); then
2707
2717
  __tt_announce
2708
- __tt_keep "$sel"
2718
+ __tt_keep "$sel" force
2709
2719
  else
2710
2720
  __tt_announce
2711
2721
  __tt_shown "$sel" force && __tt_reload
@@ -2733,6 +2743,8 @@ ttheme() {
2733
2743
  print -u2 "ttheme: unknown command '$1' — see \`ttheme help\`"
2734
2744
  return 1
2735
2745
  fi
2746
+ __tt_fresh
2747
+ (( $+functions[ttheme] )) || { print -u2 "ttheme: uninstalled — \`npx @kecan0406/ttheme@latest init\` sets it up again"; return 1 }
2736
2748
  if ! __tt_paints && (( ! $# || ${TTHEME_TAB_VERBS[(Ie)$1]} )); then
2737
2749
  __tt_unpainted
2738
2750
  return 1