@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,11 +1,12 @@
1
1
  source $TTHEME_HOME/adapters/_bg.zsh
2
2
 
3
3
  typeset -g TTHEME_WARP_SETTINGS=$HOME/.warp/settings.toml TTHEME_WARP_THEMES=$HOME/.warp/themes TTHEME_WARP_WORN=""
4
- typeset -g TTHEME_WARP_TABS=$TTHEME_STATE_DIR/warp TTHEME_WARP_DB="" TTHEME_WARP_ID="" TTHEME_WARP_LAST="" TTHEME_WARP_SEEN=""
4
+ typeset -g TTHEME_WARP_TABS=$TTHEME_STATE_DIR/warp TTHEME_WARP_DB="" TTHEME_WARP_ID="" TTHEME_WARP_LAST="" TTHEME_WARP_LOOK="" TTHEME_WARP_SEEN=""
5
5
  typeset -g TTHEME_WARP_SHOWING="" TTHEME_WARP_VIEW="" TTHEME_WARP_CODE="" TTHEME_WARP_RECORDS=""
6
- typeset -gi TTHEME_WARP_VIEWS=0 TTHEME_WARP_BUSY=0 TTHEME_WARP_FOLLOWS=-1 TTHEME_WARP_UP=0 TTHEME_WARP_SQLPID=0 TTHEME_WARP_MIXED=0
6
+ typeset -gi TTHEME_WARP_VIEWS=0 TTHEME_WARP_BUSY=0 TTHEME_WARP_FOLLOWS=-1 TTHEME_WARP_UP=0 TTHEME_WARP_SQLPID=0 TTHEME_WARP_MIXED=0 TTHEME_WARP_HOLD=0
7
7
  typeset -gF TTHEME_WARP_WARM=0 TTHEME_WARP_PRIMED=0 TTHEME_WARP_LIVED=0
8
8
  typeset -ga TTHEME_WARP_LAID=()
9
+ typeset -gA TTHEME_WARP_WAITED=()
9
10
  typeset -g TTHEME_WARP_SQL='with t as (select id, window_id, row_number() over (partition by window_id order by id) - 1 as ix from tabs) select lower(hex(p.uuid)) from app a join windows w on w.id = a.active_window_id join t on t.window_id = w.id and t.ix = w.active_tab_index join pane_nodes n on n.tab_id = t.id and n.is_leaf join pane_leaves l on l.pane_node_id = n.id and l.is_focused join terminal_panes p on p.id = n.id'
10
11
  if [[ $OSTYPE != darwin* ]]; then
11
12
  TTHEME_WARP_SETTINGS=${XDG_CONFIG_HOME:-$HOME/.config}/warp-terminal/settings.toml
@@ -21,7 +22,12 @@ __tt_paints() { __tt_warp_wired }
21
22
  __tt_warp_wired() { (( ${TTHEME_TERMINALS[(Ie)warp]} )) && [[ -r $TTHEME_WARP_SETTINGS ]] }
22
23
 
23
24
  __tt_unpainted() {
25
+ if [[ -t 0 && -t 1 && -r $TTHEME_WARP_SETTINGS ]] && (( ! ${TTHEME_TERMINALS[(Ie)warp]} )) && __tt_cli wire warp; then
26
+ __tt_palettes_load && __tt_hook
27
+ return 0
28
+ fi
24
29
  print -u2 "ttheme: Warp takes a palette only through the settings.toml init wires — wire it with \`npx @kecan0406/ttheme@latest init\`"
30
+ return 1
25
31
  }
26
32
 
27
33
  __tt_keepable() { return 0 }
@@ -37,6 +43,26 @@ __tt_prompted() {
37
43
  __tt_warp_follows || __tt_sync
38
44
  }
39
45
 
46
+ if (( ! $+functions[TRAPURG] )); then
47
+ TRAPURG() {
48
+ emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
49
+ (( ${#zsh_eval_context} == 1 )) && __tt_warp_poked
50
+ return 0
51
+ }
52
+ fi
53
+
54
+ __tt_warp_poked() {
55
+ local -i TTHEME_WARP_HOLD=1
56
+ __tt_fresh
57
+ __tt_warp_publish
58
+ }
59
+
60
+ __tt_cli_env() {
61
+ local REPLY
62
+ __tt_warp_tab
63
+ [[ -n $REPLY ]] && __tt_warp_here && pass+=(TTHEME_WARP_WEARS=$REPLY)
64
+ }
65
+
40
66
  __tt_hear() {
41
67
  if [[ -n $TTHEME_PAINTED ]] && __tt_warp_wearing && [[ -n ${TTHEME_PALETTE[$REPLY]} ]]; then
42
68
  REPLY=${TTHEME_PALETTE[$REPLY]%% *}
@@ -142,6 +168,7 @@ __tt_warp_wear() {
142
168
 
143
169
  __tt_warp_here() {
144
170
  local fd f=$TTHEME_WARP_TABS/.active
171
+ (( ! TTHEME_WARP_HOLD )) || return 1
145
172
  [[ -r $f && -e $TTHEME_WARP_TABS/.follow && -n $WARP_TERMINAL_SESSION_UUID ]] || return 0
146
173
  [[ "$(<$f)" == "$WARP_TERMINAL_SESSION_UUID" ]] && return 0
147
174
  zsystem flock -t 0 -f fd $TTHEME_WARP_TABS/.follow 2>/dev/null || return 1
@@ -156,7 +183,7 @@ __tt_warp_publish() {
156
183
  __tt_warp_tab
157
184
  pal=$REPLY
158
185
  fi
159
- f=$TTHEME_WARP_TABS/$id line="$$ ${TTHEME_STARTUP:--} ${pal:--} ${2:--}"
186
+ f=$TTHEME_WARP_TABS/$id line="$$ ${TTHEME_STARTUP:--} ${pal:--} ${2:--} ${TTHEME_PALETTES_AT:--} ${TTHEME_PINS_AT:--}"
160
187
  [[ -r $f && "$(<$f)" == "$line" ]] && return 0
161
188
  [[ -d $TTHEME_WARP_TABS ]] || zf_mkdir -p $TTHEME_WARP_TABS 2>/dev/null || return 0
162
189
  __tt_put $f "$line" 2>/dev/null
@@ -247,16 +274,38 @@ __tt_warp_line() {
247
274
  __tt_warp_want "$pal" "$view"
248
275
  }
249
276
 
277
+ __tt_warp_poke() {
278
+ local f=$TTHEME_WARP_TABS/$TTHEME_WARP_ID pins
279
+ local -a rec at=("")
280
+ local -F end
281
+ [[ -n $TTHEME_WARP_ID && -r $f ]] || return 0
282
+ rec=(${=${"$(<$f)"}})
283
+ zstat -F %s.%N -A at +mtime -- $TTHEME_PINS_FILE 2>/dev/null
284
+ pins=${at[1]:--}
285
+ [[ $rec[1] == <-> && "$rec[5] $rec[6]" != "${TTHEME_PALETTES_AT:--} $pins" ]] || return 0
286
+ kill -URG $rec[1] 2>/dev/null || return 0
287
+ [[ $rec[6] == "$pins" || ${TTHEME_WARP_WAITED[$rec[1]]} == "$pins" ]] && return 0
288
+ TTHEME_WARP_WAITED[$rec[1]]=$pins
289
+ end=$(( EPOCHREALTIME + 0.15 ))
290
+ while (( EPOCHREALTIME < end )); do
291
+ zselect -t 1
292
+ rec=(${=${"$(<$f)"}})
293
+ [[ $rec[6] == "$pins" ]] && return 0
294
+ done
295
+ return 0
296
+ }
297
+
250
298
  __tt_warp_tick() {
251
- local line="" REPLY
252
- local -a at
253
- integer recount=0
299
+ local line REPLY
300
+ local -a at rec
301
+ integer recount=0 came=0
254
302
  if __tt_warp_stamp && [[ $REPLY != "$TTHEME_WARP_SEEN" ]]; then
255
303
  TTHEME_WARP_SEEN=$REPLY
256
304
  if __tt_warp_active; then
305
+ (( TTHEME_WARP_UP )) || came=1
257
306
  TTHEME_WARP_UP=1
258
307
  if [[ $REPLY != "$TTHEME_WARP_ID" ]]; then
259
- TTHEME_WARP_ID=$REPLY recount=1
308
+ TTHEME_WARP_ID=$REPLY recount=1 came=1
260
309
  __tt_put $TTHEME_WARP_TABS/.active $REPLY 2>/dev/null
261
310
  fi
262
311
  else
@@ -269,11 +318,13 @@ __tt_warp_tick() {
269
318
  __tt_warp_mixed
270
319
  TTHEME_WARP_MIXED=$(( ! $? ))
271
320
  fi
272
- [[ -n $TTHEME_WARP_ID && -r $TTHEME_WARP_TABS/$TTHEME_WARP_ID ]] && line=$(<$TTHEME_WARP_TABS/$TTHEME_WARP_ID)
273
- [[ "$TTHEME_WARP_ID $line $TTHEME_PALETTES_AT" == "$TTHEME_WARP_LAST" ]] && return 0
274
- [[ ${TTHEME_WARP_LAST%% *} == "$TTHEME_WARP_ID" ]] && TTHEME_WARP_WARM=$(( EPOCHREALTIME + 3 ))
275
- TTHEME_WARP_LAST="$TTHEME_WARP_ID $line $TTHEME_PALETTES_AT"
276
- [[ -n $line ]] && __tt_warp_line ${=line} && __tt_warp_wear "$REPLY"
321
+ (( came )) && __tt_warp_poke
322
+ [[ -n $TTHEME_WARP_ID && -r $TTHEME_WARP_TABS/$TTHEME_WARP_ID ]] && rec=(${=${"$(<$TTHEME_WARP_TABS/$TTHEME_WARP_ID)"}})
323
+ line="$TTHEME_WARP_ID ${rec[1,4]}"
324
+ [[ "$line $TTHEME_PALETTES_AT" == "$TTHEME_WARP_LAST" ]] && return 0
325
+ [[ ${TTHEME_WARP_LOOK%% *} == "$TTHEME_WARP_ID" && "$TTHEME_WARP_ID ${rec[3,4]}" != "$TTHEME_WARP_LOOK" ]] && TTHEME_WARP_WARM=$(( EPOCHREALTIME + 3 ))
326
+ TTHEME_WARP_LAST="$line $TTHEME_PALETTES_AT" TTHEME_WARP_LOOK="$TTHEME_WARP_ID ${rec[3,4]}"
327
+ (( $#rec )) && __tt_warp_line $rec[1,4] && __tt_warp_wear "$REPLY"
277
328
  return 0
278
329
  }
279
330
 
@@ -292,14 +343,6 @@ __tt_warp_live() {
292
343
  (( live ))
293
344
  }
294
345
 
295
- __tt_pv_conf_rows() {
296
- cvars+=(TTHEME_WARP_FAST) clabel+=("Warp tabs") cchoice+=("on off") cshow+=("on off")
297
- cnote+=(
298
- TTHEME_WARP_FAST:on "About 0.2 s per switch, for about 8% CPU"
299
- TTHEME_WARP_FAST:off "About 0.6 s per switch"
300
- )
301
- }
302
-
303
346
  __tt_warp_warming() {
304
347
  [[ $TTHEME_WARP_FAST == on ]] && (( TTHEME_WARP_UP && ( TTHEME_WARP_MIXED || EPOCHREALTIME < TTHEME_WARP_WARM ) ))
305
348
  }
@@ -398,6 +441,8 @@ __tt_reloaded() {
398
441
  return 0
399
442
  }
400
443
 
444
+ __tt_bg_tints() { return 1 }
445
+
401
446
  __tt_bg_shown() { __tt_warp_wearing }
402
447
 
403
448
  __tt_bg_refresh() { __tt_warp_unview }
@@ -34,18 +34,24 @@ __tt_bg_cells() {
34
34
  bgch=${resp%;*} bgcw=${resp#*;}
35
35
  }
36
36
 
37
- __tt_pv_bg_findable() { return 1 }
37
+ __tt_pv_bg_findable() { (( bgcw )) && __tt_keepable }
38
+
39
+ __tt_bg_hide() {
40
+ local -a p=(${=TTHEME_PALETTE[${1%:*}]})
41
+ __tt_wezterm_var ttheme_view "$p[1]||1|1|1|0|0|0|0|5"
42
+ TTHEME_WEZTERM_VIEW=find
43
+ }
38
44
 
39
45
  __tt_pv_bg_show() {
40
46
  (( bgcw )) || return 0
41
47
  local name=$1 img="" size fit=contain view="" REPLY
42
48
  local -i W=$(( pw * bgcw )) H=$(( ph * bgch )) focus=-1
43
- local -a p=(${=TTHEME_PALETTE[${name%:*}]}) wh
49
+ local -a p=(${=TTHEME_PALETTE[${name%:*}]}) wh reply
44
50
  (( ${#p} >= 20 )) || return 0
45
51
  (( $2 )) && TTHEME_WEZTERM_VIEW=-
46
52
  bgname=$name
47
53
  __tt_bg_load $name
48
- if [[ $name != "$bginc" || "${bgsize[$name]} ${bgpos[$name]} ${bgop[$name]} ${bgoff[$name]}" != "${bgload[$name]}" ]]; then
54
+ if (( te && tedirty )) || [[ $name != "$bginc" || "${bgsize[$name]} ${bgpos[$name]} ${bgop[$name]} ${bgoff[$name]}" != "${bgload[$name]}" ]]; then
49
55
  size=${bgsize[$name]}
50
56
  if [[ $size == fill ]]; then
51
57
  img=${bgfill[$name]} size=100 fit=cover
@@ -55,11 +61,14 @@ __tt_pv_bg_show() {
55
61
  img=${bgsrc[$name]} focus=${bgfocus[$name]}
56
62
  fi
57
63
  (( bgoff[$name] )) && img=""
64
+ __tt_pv_bg_draft $name "$img"
65
+ [[ -n $reply[1] ]] && p=(${=reply[1]})
66
+ img=$reply[2]
58
67
  view="$p[1]||1|$W|$H|0|0|0|0|5"
59
68
  if [[ -n $img ]] && __tt_bg_dim "$img"; then
60
69
  wh=(${=bgdim[$img]})
61
70
  __tt_bg_frame $wh[1] $wh[2] $W $H $size ${bgpos[$name]} $fit $focus
62
- view="$p[1]|$img|${bgop[$name]}|$W|$H|${REPLY// /|}|${bgpos[$name]}"
71
+ view="$p[1]|$img|$reply[3]|$W|$H|${REPLY// /|}|${bgpos[$name]}"
63
72
  fi
64
73
  fi
65
74
  [[ $view == "$TTHEME_WEZTERM_VIEW" ]] && return 0