@kecan0406/ttheme 1.0.32 → 1.0.34
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 +12 -6
- package/bin/ttheme.js +131 -139
- package/bin/ttheme.js.map +1 -0
- package/dist/manifest.json +1 -1
- package/package.json +2 -2
- package/shell/adapters/_osc.zsh +2 -0
- package/shell/adapters/ghostty.zsh +13 -0
- package/shell/ttheme.zsh +121 -44
package/dist/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kecan0406/ttheme",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.34",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ttheme": "bin/ttheme.js"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"!shell/check.zsh",
|
|
14
14
|
"ghostty/shaders"
|
|
15
15
|
],
|
|
16
|
-
"description": "Character terminal palettes for
|
|
16
|
+
"description": "Character terminal palettes for Ghostty, kitty, Alacritty, WezTerm, iTerm2, Windows Terminal and Warp",
|
|
17
17
|
"license": "MIT",
|
|
18
18
|
"author": "kecan0406",
|
|
19
19
|
"repository": {
|
package/shell/adapters/_osc.zsh
CHANGED
|
@@ -4,6 +4,19 @@ __tt_keepable() { return 0 }
|
|
|
4
4
|
|
|
5
5
|
__tt_bg_shown() { __tt_ghostty_shown }
|
|
6
6
|
|
|
7
|
+
__tt_reset_reloaded() {
|
|
8
|
+
local REPLY
|
|
9
|
+
integer i
|
|
10
|
+
__tt_osc_reset
|
|
11
|
+
[[ -n $1 ]] && (( ${TTHEME_TERMINALS[(Ie)ghostty]} && ! TTHEME_TMUX )) || return 0
|
|
12
|
+
for (( i = 0; i < 20; i++ )); do
|
|
13
|
+
__tt_query_bg || return 0
|
|
14
|
+
[[ ${(L)REPLY} == ${(L)1} ]] || return 0
|
|
15
|
+
sleep 0.05
|
|
16
|
+
__tt_osc_reset
|
|
17
|
+
done
|
|
18
|
+
}
|
|
19
|
+
|
|
7
20
|
__tt_shown() {
|
|
8
21
|
local dir=${TTHEME_CONFIG:h}/backgrounds was REPLY
|
|
9
22
|
__tt_bg_shown
|
package/shell/ttheme.zsh
CHANGED
|
@@ -12,8 +12,21 @@ __tt_palettes_load() {
|
|
|
12
12
|
|
|
13
13
|
__tt_fresh() {
|
|
14
14
|
local -a at
|
|
15
|
+
local was=$TTHEME_STARTUP
|
|
15
16
|
zstat -F %s.%N -A at +mtime -- $TTHEME_HOME/palettes.zsh 2>/dev/null || return 0
|
|
16
|
-
[[ $at[1] == "$TTHEME_PALETTES_AT" ]]
|
|
17
|
+
[[ $at[1] == "$TTHEME_PALETTES_AT" ]] && return 0
|
|
18
|
+
__tt_palettes_load && __tt_reloaded
|
|
19
|
+
[[ -n $was && -z $TTHEME_STARTUP && -n $TTHEME_SPEC ]] && __tt_active && __tt_off_here
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
__tt_off_here() {
|
|
23
|
+
local bg=${TTHEME_SPEC%% *}
|
|
24
|
+
TTHEME_SPEC=
|
|
25
|
+
if __tt_shown "" || [[ $1 == reload ]]; then
|
|
26
|
+
__tt_reload
|
|
27
|
+
fi
|
|
28
|
+
__tt_unshown force
|
|
29
|
+
__tt_reset_reloaded $bg
|
|
17
30
|
}
|
|
18
31
|
|
|
19
32
|
if [[ -r $TTHEME_HOME/palettes.zsh ]]; then
|
|
@@ -134,7 +147,7 @@ __tt_spec() {
|
|
|
134
147
|
|
|
135
148
|
__tt_name_of() { REPLY=${${(k)TTHEME_PALETTE[(re)$1]}:-custom} }
|
|
136
149
|
|
|
137
|
-
__tt_color() { [[ -t 1 && -z $NO_COLOR ]] }
|
|
150
|
+
__tt_color() { [[ -t 1 && -z $NO_COLOR && $TERM != dumb ]] }
|
|
138
151
|
|
|
139
152
|
__tt_palette_line() {
|
|
140
153
|
local name=$1 marker=$2
|
|
@@ -379,33 +392,60 @@ __tt_menu() {
|
|
|
379
392
|
[[ $k == $cur ]] && mark=$gutter
|
|
380
393
|
__tt_palette_line "$k" "$mark"
|
|
381
394
|
done
|
|
382
|
-
printf '\n\033[2mttheme <
|
|
395
|
+
printf '\n\033[2mttheme use <palette> paints this tab · ttheme preview · ttheme help\033[0m\n'
|
|
383
396
|
}
|
|
384
397
|
|
|
385
398
|
__tt_help() {
|
|
386
|
-
|
|
399
|
+
local v
|
|
400
|
+
print -r -- $'ttheme — character terminal palettes\n'
|
|
401
|
+
print -r -- " ${(r:16:):-ttheme}list every palette, grouped, with previews"
|
|
402
|
+
for v in $TTHEME_VERBS; do
|
|
403
|
+
if [[ $v == - ]]; then
|
|
404
|
+
print
|
|
405
|
+
else
|
|
406
|
+
print -r -- " ${(r:16:)${:-ttheme $v}}$TTHEME_VERB_ABOUT[$v]"
|
|
407
|
+
fi
|
|
408
|
+
done
|
|
409
|
+
print -r -- $'\nttheme <command> --help describes one command · ttheme --version prints the version'
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
__tt_usage() {
|
|
413
|
+
print -r -- "Usage: ttheme ${${:-$1 $TTHEME_VERB_ARGS[$1]}% }"$'\n\n'"$TTHEME_VERB_ABOUT[$1]"
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
__tt_verb_help() {
|
|
417
|
+
if (( ${TTHEME_SHELL_VERBS[(Ie)$1]} )); then
|
|
418
|
+
__tt_usage $1
|
|
419
|
+
elif [[ -n $1 && -n ${TTHEME_VERB_ABOUT[$1]} ]]; then
|
|
420
|
+
__tt_cli $1 --help
|
|
421
|
+
else
|
|
422
|
+
__tt_help
|
|
423
|
+
fi
|
|
424
|
+
}
|
|
387
425
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
ttheme pin pick a palette for this directory — cd into it repaints, cd out restores
|
|
394
|
-
ttheme unpin drop the palette pinned to this directory
|
|
395
|
-
ttheme config edit settings in $EDITOR — they apply in new tabs
|
|
426
|
+
__tt_misuse() {
|
|
427
|
+
print -u2 -r -- "ttheme $1: $2"$'\n'
|
|
428
|
+
__tt_usage $1 >&2
|
|
429
|
+
return 1
|
|
430
|
+
}
|
|
396
431
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
432
|
+
__tt_arity() {
|
|
433
|
+
local verb=$1
|
|
434
|
+
shift
|
|
435
|
+
local -a want=(${=TTHEME_VERB_ARGS[$verb]})
|
|
436
|
+
local least=${#${(M)want:#\<*}} most=${#want}
|
|
437
|
+
(( ${#${(M)want:#*...*}} )) && most=$#
|
|
438
|
+
(( $# >= least )) || { __tt_misuse $verb "missing $want[$# + 1]"; return }
|
|
439
|
+
(( $# <= most )) || { __tt_misuse $verb "too many arguments: ${argv[most + 1, -1]}"; return }
|
|
402
440
|
}
|
|
403
441
|
|
|
404
442
|
__tt_cli() {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
443
|
+
local k
|
|
444
|
+
local -a pass=()
|
|
445
|
+
for k in $TTHEME_SETTINGS; do
|
|
446
|
+
(( $+parameters[$k] )) && pass+=("$k=${(P)k}")
|
|
447
|
+
done
|
|
448
|
+
env $pass node $TTHEME_HOME/ttheme.js "$@"
|
|
409
449
|
}
|
|
410
450
|
|
|
411
451
|
__tt_catalog() {
|
|
@@ -418,6 +458,25 @@ __tt_catalog() {
|
|
|
418
458
|
[[ "$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}" == "$was" ]] || __tt_reload
|
|
419
459
|
}
|
|
420
460
|
|
|
461
|
+
__tt_switch() {
|
|
462
|
+
local spec
|
|
463
|
+
__tt_cli "$@" || return
|
|
464
|
+
[[ -r $TTHEME_HOME/palettes.zsh ]] && __tt_palettes_load && __tt_reloaded
|
|
465
|
+
if ! __tt_active; then
|
|
466
|
+
__tt_reload
|
|
467
|
+
return 0
|
|
468
|
+
fi
|
|
469
|
+
if [[ $1 == off ]]; then
|
|
470
|
+
__tt_off_here reload
|
|
471
|
+
elif [[ -n $TTHEME_STARTUP ]]; then
|
|
472
|
+
spec=${TTHEME_PALETTE[$TTHEME_STARTUP]}
|
|
473
|
+
__tt_apply "$spec"
|
|
474
|
+
TTHEME_SPEC=$spec
|
|
475
|
+
__tt_shown "$TTHEME_STARTUP" force
|
|
476
|
+
__tt_reload
|
|
477
|
+
fi
|
|
478
|
+
}
|
|
479
|
+
|
|
421
480
|
__tt_config() {
|
|
422
481
|
if [[ ! -e $TTHEME_CONFIG ]]; then
|
|
423
482
|
mkdir -p ${TTHEME_CONFIG:h} || return 1
|
|
@@ -1481,6 +1540,7 @@ __tt_preview() {
|
|
|
1481
1540
|
abc "series and palettes by name" series "series in the order added"
|
|
1482
1541
|
)
|
|
1483
1542
|
[[ $mode == pin ]] && pkdef=2 plabel=(" this directory " " and below ")
|
|
1543
|
+
[[ $mode == init ]] && pkdef=2
|
|
1484
1544
|
__tt_pv_canpick
|
|
1485
1545
|
__tt_pv_size
|
|
1486
1546
|
local -a groups=() rtype=() rval=() rcnt=() reply=()
|
|
@@ -1540,7 +1600,21 @@ __tt_preview() {
|
|
|
1540
1600
|
}
|
|
1541
1601
|
|
|
1542
1602
|
ttheme() {
|
|
1543
|
-
if
|
|
1603
|
+
if (( $# > 1 && ${${argv[2,-1]}[(I)(-h|--help)]} )); then
|
|
1604
|
+
__tt_verb_help $1
|
|
1605
|
+
return
|
|
1606
|
+
fi
|
|
1607
|
+
case $1 in
|
|
1608
|
+
-h|--help) __tt_help; return 0 ;;
|
|
1609
|
+
-V|--version) __tt_cli --version; return ;;
|
|
1610
|
+
help) __tt_verb_help $2; return 0 ;;
|
|
1611
|
+
-*) print -u2 "ttheme: unknown option $1 — see \`ttheme help\`"; return 1 ;;
|
|
1612
|
+
esac
|
|
1613
|
+
if (( $# )) && [[ -z ${TTHEME_VERB_ABOUT[$1]} ]]; then
|
|
1614
|
+
print -u2 "ttheme: unknown command '$1' — see \`ttheme help\`"
|
|
1615
|
+
return 1
|
|
1616
|
+
fi
|
|
1617
|
+
if [[ $TTHEME_ADAPTER == warp && $1 != (browse|list|add|remove|update|config|default|on|off) ]]; then
|
|
1544
1618
|
print -u2 "ttheme: Warp wears one theme app-wide and paints no tab background of its own — \`ttheme default <palette>\` puts one on every Warp window"
|
|
1545
1619
|
return 1
|
|
1546
1620
|
fi
|
|
@@ -1551,40 +1625,43 @@ ttheme() {
|
|
|
1551
1625
|
fi
|
|
1552
1626
|
|
|
1553
1627
|
case $1 in
|
|
1554
|
-
-h|--help|help) __tt_help; return 0 ;;
|
|
1555
1628
|
browse|list|add|remove|update) __tt_catalog "$@"; return ;;
|
|
1556
|
-
|
|
1629
|
+
on|off) __tt_switch "$@"; return ;;
|
|
1557
1630
|
esac
|
|
1558
|
-
|
|
1631
|
+
__tt_arity "$@" || return
|
|
1632
|
+
[[ $1 == config ]] && { __tt_config; return }
|
|
1559
1633
|
(( ${#TTHEME_PALETTE} )) || { __tt_empty; return }
|
|
1560
1634
|
|
|
1635
|
+
local REPLY spec
|
|
1561
1636
|
case $1 in
|
|
1562
|
-
|
|
1637
|
+
use)
|
|
1638
|
+
__tt_resolve "$2" || return 1
|
|
1639
|
+
spec=${TTHEME_PALETTE[$REPLY]}
|
|
1640
|
+
__tt_apply "$spec"
|
|
1641
|
+
TTHEME_SPEC=$spec
|
|
1642
|
+
__tt_shown "$REPLY" force && __tt_reload
|
|
1643
|
+
__tt_announce ;;
|
|
1644
|
+
next) __tt_rotate ;;
|
|
1563
1645
|
default)
|
|
1564
|
-
[[ -n $2 ]] || { print -u2 "ttheme default: name a palette — see \`ttheme help\`"; return 1 }
|
|
1565
|
-
local REPLY
|
|
1566
1646
|
__tt_resolve "$2" || return 1
|
|
1567
|
-
__tt_keep "$REPLY"
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
unpin) __tt_unpin; return ;;
|
|
1572
|
-
-*) print -u2 "ttheme: unknown option $1 — see \`ttheme help\`"; return 1 ;;
|
|
1647
|
+
__tt_keep "$REPLY" ;;
|
|
1648
|
+
preview) __tt_preview ;;
|
|
1649
|
+
pin) __tt_preview pin ;;
|
|
1650
|
+
unpin) __tt_unpin ;;
|
|
1573
1651
|
esac
|
|
1574
|
-
|
|
1575
|
-
local REPLY
|
|
1576
|
-
__tt_resolve "$1" || return 1
|
|
1577
|
-
local spec=${TTHEME_PALETTE[$REPLY]}
|
|
1578
|
-
__tt_apply "$spec"
|
|
1579
|
-
TTHEME_SPEC=$spec
|
|
1580
|
-
__tt_shown "$REPLY" force && __tt_reload
|
|
1581
|
-
__tt_announce
|
|
1582
1652
|
}
|
|
1583
1653
|
|
|
1584
1654
|
if (( $+functions[compdef] )); then
|
|
1585
1655
|
__tt_complete() {
|
|
1586
|
-
|
|
1587
|
-
|
|
1656
|
+
local -a reply
|
|
1657
|
+
if (( CURRENT == 2 )); then
|
|
1658
|
+
compadd -- ${TTHEME_VERBS:#-} help
|
|
1659
|
+
elif [[ $words[2] == remove || ( $words[2] == (use|default) && CURRENT == 3 ) ]]; then
|
|
1660
|
+
compadd -- $TTHEME_ORDER
|
|
1661
|
+
elif [[ $words[2] == add ]]; then
|
|
1662
|
+
reply=(${${${(M)${(f)"$(__tt_cli list --json 2>/dev/null)"}:#*\"name\": *}#*\"name\": \"}%%\"*})
|
|
1663
|
+
compadd -- ${reply:|TTHEME_ORDER}
|
|
1664
|
+
fi
|
|
1588
1665
|
}
|
|
1589
1666
|
compdef __tt_complete ttheme
|
|
1590
1667
|
fi
|