@kecan0406/ttheme 1.2.5 → 1.2.6
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/bin/ttheme.js +171 -171
- package/bin/ttheme.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/package.json +1 -1
- package/shell/adapters/_osc.zsh +2 -0
- package/shell/adapters/warp.zsh +114 -14
- package/shell/ttheme.zsh +6 -3
package/dist/manifest.json
CHANGED
package/package.json
CHANGED
package/shell/adapters/_osc.zsh
CHANGED
package/shell/adapters/warp.zsh
CHANGED
|
@@ -2,8 +2,9 @@ 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
4
|
typeset -g TTHEME_WARP_TABS=$TTHEME_STATE_DIR/warp TTHEME_WARP_DB="" TTHEME_WARP_ID="" TTHEME_WARP_LAST="" TTHEME_WARP_SEEN=""
|
|
5
|
-
typeset -g TTHEME_WARP_SHOWING="" TTHEME_WARP_VIEW=""
|
|
6
|
-
typeset -gi TTHEME_WARP_VIEWS=0 TTHEME_WARP_BUSY=0 TTHEME_WARP_FOLLOWS=-1
|
|
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
|
|
7
|
+
typeset -gF TTHEME_WARP_WARM=0 TTHEME_WARP_PRIMED=0 TTHEME_WARP_LIVED=0
|
|
7
8
|
typeset -ga TTHEME_WARP_LAID=()
|
|
8
9
|
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'
|
|
9
10
|
if [[ $OSTYPE != darwin* ]]; then
|
|
@@ -194,8 +195,48 @@ __tt_warp_follow() {
|
|
|
194
195
|
|
|
195
196
|
__tt_warp_active() {
|
|
196
197
|
setopt localoptions extendedglob
|
|
197
|
-
|
|
198
|
-
|
|
198
|
+
local line
|
|
199
|
+
REPLY=""
|
|
200
|
+
if (( ! TTHEME_WARP_SQLPID )) || ! kill -0 $TTHEME_WARP_SQLPID 2>/dev/null; then
|
|
201
|
+
coproc sqlite3 -readonly -batch -cmd '.timeout 300' $TTHEME_WARP_DB 2>/dev/null
|
|
202
|
+
TTHEME_WARP_SQLPID=$!
|
|
203
|
+
fi
|
|
204
|
+
if print -rp -- "$TTHEME_WARP_SQL; select 'end';" 2>/dev/null; then
|
|
205
|
+
while read -rp -t 1 line; do
|
|
206
|
+
[[ $line == end ]] && { [[ $REPLY == [0-9a-f](#c32) ]]; return }
|
|
207
|
+
REPLY=$line
|
|
208
|
+
done
|
|
209
|
+
fi
|
|
210
|
+
TTHEME_WARP_SQLPID=0 REPLY=""
|
|
211
|
+
return 1
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
__tt_warp_stamp() {
|
|
215
|
+
local -a at
|
|
216
|
+
zstat -F %s.%N -A at +mtime -- $TTHEME_WARP_DB-wal 2>/dev/null || zstat -F %s.%N -A at +mtime -- $TTHEME_WARP_DB 2>/dev/null || return 1
|
|
217
|
+
REPLY=$at[1]
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
__tt_warp_mixed() {
|
|
221
|
+
setopt localoptions extendedglob
|
|
222
|
+
local f pal view
|
|
223
|
+
local -a rec
|
|
224
|
+
local -A looks
|
|
225
|
+
for f in $TTHEME_WARP_TABS/[0-9a-f](#c32)(N); do
|
|
226
|
+
rec=(${=${"$(<$f)"}})
|
|
227
|
+
pal=${rec[3]#-} view=${rec[4]#-}
|
|
228
|
+
[[ $rec[2] != - && -z $TTHEME_STARTUP ]] && pal="" view=""
|
|
229
|
+
pal="${pal:-$TTHEME_STARTUP} $view"
|
|
230
|
+
looks[$pal]=1
|
|
231
|
+
done
|
|
232
|
+
(( ${#looks} > 1 ))
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
__tt_warp_prime() {
|
|
236
|
+
local fd byte
|
|
237
|
+
sysopen -rw -u fd $TTHEME_WARP_SETTINGS 2>/dev/null || return 0
|
|
238
|
+
sysread -s 1 -i $fd byte && sysseek -u $fd 0 && syswrite -o $fd -- $byte
|
|
239
|
+
exec {fd}>&-
|
|
199
240
|
}
|
|
200
241
|
|
|
201
242
|
__tt_warp_line() {
|
|
@@ -207,18 +248,28 @@ __tt_warp_line() {
|
|
|
207
248
|
__tt_warp_tick() {
|
|
208
249
|
local line="" REPLY
|
|
209
250
|
local -a at
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
251
|
+
integer recount=0
|
|
252
|
+
if __tt_warp_stamp && [[ $REPLY != "$TTHEME_WARP_SEEN" ]]; then
|
|
253
|
+
TTHEME_WARP_SEEN=$REPLY
|
|
254
|
+
if __tt_warp_active; then
|
|
255
|
+
TTHEME_WARP_UP=1
|
|
256
|
+
if [[ $REPLY != "$TTHEME_WARP_ID" ]]; then
|
|
257
|
+
TTHEME_WARP_ID=$REPLY recount=1
|
|
215
258
|
__tt_put $TTHEME_WARP_TABS/.active $REPLY 2>/dev/null
|
|
216
259
|
fi
|
|
260
|
+
else
|
|
261
|
+
TTHEME_WARP_UP=0
|
|
217
262
|
fi
|
|
218
263
|
fi
|
|
219
|
-
zstat -F %s.%N -A at +mtime -- $TTHEME_HOME/palettes.zsh 2>/dev/null && [[ $at[1] != "$TTHEME_PALETTES_AT" ]] && __tt_palettes_load
|
|
264
|
+
zstat -F %s.%N -A at +mtime -- $TTHEME_HOME/palettes.zsh 2>/dev/null && [[ $at[1] != "$TTHEME_PALETTES_AT" ]] && __tt_palettes_load && recount=1
|
|
265
|
+
zstat -F %s.%N -A at +mtime -- $TTHEME_WARP_TABS 2>/dev/null && [[ $at[1] != "$TTHEME_WARP_RECORDS" ]] && TTHEME_WARP_RECORDS=$at[1] recount=1
|
|
266
|
+
if (( recount )); then
|
|
267
|
+
__tt_warp_mixed
|
|
268
|
+
TTHEME_WARP_MIXED=$(( ! $? ))
|
|
269
|
+
fi
|
|
220
270
|
[[ -n $TTHEME_WARP_ID && -r $TTHEME_WARP_TABS/$TTHEME_WARP_ID ]] && line=$(<$TTHEME_WARP_TABS/$TTHEME_WARP_ID)
|
|
221
271
|
[[ "$TTHEME_WARP_ID $line $TTHEME_PALETTES_AT" == "$TTHEME_WARP_LAST" ]] && return 0
|
|
272
|
+
[[ ${TTHEME_WARP_LAST%% *} == "$TTHEME_WARP_ID" ]] && TTHEME_WARP_WARM=$(( EPOCHREALTIME + 3 ))
|
|
222
273
|
TTHEME_WARP_LAST="$TTHEME_WARP_ID $line $TTHEME_PALETTES_AT"
|
|
223
274
|
[[ -n $line ]] && __tt_warp_line ${=line} && __tt_warp_wear "$REPLY"
|
|
224
275
|
return 0
|
|
@@ -239,15 +290,64 @@ __tt_warp_live() {
|
|
|
239
290
|
(( live ))
|
|
240
291
|
}
|
|
241
292
|
|
|
293
|
+
__tt_pv_conf_rows() {
|
|
294
|
+
cvars+=(TTHEME_WARP_FAST) clabel+=("Warp tabs") cchoice+=("on off") cshow+=("on off")
|
|
295
|
+
cnote+=(
|
|
296
|
+
TTHEME_WARP_FAST:on "About 0.2 s per switch, for about 8% CPU"
|
|
297
|
+
TTHEME_WARP_FAST:off "About 0.6 s per switch"
|
|
298
|
+
)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
__tt_warp_warming() {
|
|
302
|
+
[[ $TTHEME_WARP_FAST == on ]] && (( TTHEME_WARP_UP && ( TTHEME_WARP_MIXED || EPOCHREALTIME < TTHEME_WARP_WARM ) ))
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
__tt_warp_wait() {
|
|
306
|
+
local REPLY
|
|
307
|
+
local -F now=$EPOCHREALTIME end=$(( EPOCHREALTIME + 0.1 ))
|
|
308
|
+
if ! __tt_warp_warming; then
|
|
309
|
+
zselect -t 10
|
|
310
|
+
return 0
|
|
311
|
+
fi
|
|
312
|
+
while (( now < end )); do
|
|
313
|
+
if (( now - TTHEME_WARP_PRIMED >= 0.25 )); then
|
|
314
|
+
__tt_warp_prime
|
|
315
|
+
TTHEME_WARP_PRIMED=$now
|
|
316
|
+
fi
|
|
317
|
+
zselect -t 2
|
|
318
|
+
__tt_warp_stamp && [[ $REPLY != "$TTHEME_WARP_SEEN" ]] && return 0
|
|
319
|
+
now=$EPOCHREALTIME
|
|
320
|
+
done
|
|
321
|
+
return 0
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
__tt_warp_code() {
|
|
325
|
+
local -a at conf
|
|
326
|
+
zstat -F %s.%N -A at +mtime -- $TTHEME_HOME/adapters/warp.zsh 2>/dev/null
|
|
327
|
+
zstat -F %s.%N -A conf +mtime -- $TTHEME_CONFIG 2>/dev/null
|
|
328
|
+
REPLY="$at[1] $conf[1]"
|
|
329
|
+
}
|
|
330
|
+
|
|
242
331
|
__tt_warp_follower() {
|
|
243
332
|
emulate -L zsh
|
|
244
|
-
local fd
|
|
333
|
+
local fd REPLY
|
|
245
334
|
__tt_warp_db && zsystem flock -t 0 -f fd $TTHEME_WARP_TABS/.follow 2>/dev/null || return 0
|
|
246
|
-
trap '' HUP
|
|
335
|
+
trap '' HUP PIPE
|
|
336
|
+
__tt_warp_code
|
|
337
|
+
TTHEME_WARP_CODE=$REPLY TTHEME_WARP_LIVED=$EPOCHREALTIME
|
|
247
338
|
while [[ -e $TTHEME_HOME/palettes.zsh && -e $TTHEME_WARP_DB ]]; do
|
|
248
339
|
__tt_warp_tick
|
|
249
|
-
((
|
|
250
|
-
|
|
340
|
+
if (( EPOCHREALTIME - TTHEME_WARP_LIVED >= 5 )); then
|
|
341
|
+
TTHEME_WARP_LIVED=$EPOCHREALTIME
|
|
342
|
+
__tt_warp_live || break
|
|
343
|
+
__tt_warp_code
|
|
344
|
+
if [[ $REPLY != "$TTHEME_WARP_CODE" ]]; then
|
|
345
|
+
coproc :
|
|
346
|
+
zsystem flock -u $fd
|
|
347
|
+
exec zsh -fc 'source $1; __tt_warp_follower' zsh $TTHEME_HOME/ttheme.zsh
|
|
348
|
+
fi
|
|
349
|
+
fi
|
|
350
|
+
__tt_warp_wait
|
|
251
351
|
done
|
|
252
352
|
zf_rm -f -- $TTHEME_WARP_TABS/.active 2>/dev/null
|
|
253
353
|
}
|
package/shell/ttheme.zsh
CHANGED
|
@@ -118,6 +118,8 @@ __tt_pins_load
|
|
|
118
118
|
|
|
119
119
|
: ${TTHEME_BG_COLORS:=tone}
|
|
120
120
|
|
|
121
|
+
: ${TTHEME_WARP_FAST:=on}
|
|
122
|
+
|
|
121
123
|
typeset -g TTHEME_STATE_DIR=${XDG_STATE_HOME:-$HOME/.local/state}/ttheme
|
|
122
124
|
|
|
123
125
|
() {
|
|
@@ -2202,7 +2204,7 @@ __tt_pv_draw() {
|
|
|
2202
2204
|
split=$(( sw > 0 )) sc=$(( pw - 1 - sw ))
|
|
2203
2205
|
h=$(( ph - 5 ))
|
|
2204
2206
|
[[ -n $tune ]] && (( ! split )) && h=$(( ph - 14 ))
|
|
2205
|
-
(( conf && ! split )) && h=$(( ph -
|
|
2207
|
+
(( conf && ! split )) && h=$(( ph - 6 - ${#cvars} ))
|
|
2206
2208
|
reach=()
|
|
2207
2209
|
if [[ -n $pick && $mode == pin ]]; then
|
|
2208
2210
|
if (( split )); then
|
|
@@ -2351,8 +2353,8 @@ __tt_pv_draw() {
|
|
|
2351
2353
|
__tt_pv_head $(( ph - 10 )) 1 $lw $tune "$REPLY" $state
|
|
2352
2354
|
__tt_pv_bg_panel $tpick $(( ph - 9 )) 1 $lw
|
|
2353
2355
|
elif (( conf )); then
|
|
2354
|
-
__tt_pv_head $(( ph -
|
|
2355
|
-
__tt_pv_conf_panel $(( ph -
|
|
2356
|
+
__tt_pv_head $(( ph - 2 - ${#cvars} )) 1 $lw Config
|
|
2357
|
+
__tt_pv_conf_panel $(( ph - 1 - ${#cvars} )) 1 $lw
|
|
2356
2358
|
fi
|
|
2357
2359
|
(( help )) && __tt_pv_help
|
|
2358
2360
|
fi
|
|
@@ -2663,6 +2665,7 @@ __tt_preview() {
|
|
|
2663
2665
|
TTHEME_BG_COLORS:tone "New pictures are tinted in one color of the palette"
|
|
2664
2666
|
TTHEME_BG_COLORS:original "New pictures keep their own colors"
|
|
2665
2667
|
)
|
|
2668
|
+
__tt_pv_conf_rows
|
|
2666
2669
|
[[ $mode == pin ]] && __tt_pin_scopes "$pdir"
|
|
2667
2670
|
[[ $mode == init ]] && pkdef=2
|
|
2668
2671
|
__tt_pv_canpick
|