@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.
- package/README.md +17 -8
- package/bin/ttheme.js +430 -228
- package/bin/ttheme.js.map +1 -1
- package/dist/manifest.json +128 -24
- package/package.json +1 -2
- package/shell/adapters/_bg.zsh +52 -5
- package/shell/adapters/_osc.zsh +20 -10
- package/shell/adapters/_wired.zsh +4 -0
- package/shell/adapters/iterm2.zsh +86 -10
- package/shell/adapters/konsole.zsh +225 -21
- package/shell/adapters/terminal-app.zsh +265 -6
- package/shell/adapters/warp.zsh +65 -20
- package/shell/adapters/wezterm.zsh +13 -4
- package/shell/preview.zsh +332 -26
- package/shell/ttheme.zsh +28 -19
package/shell/adapters/warp.zsh
CHANGED
|
@@ -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
|
|
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
|
-
|
|
273
|
-
[[
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
[[
|
|
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() {
|
|
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|$
|
|
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
|