@kecan0406/ttheme 1.2.18 → 1.2.19
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 +3 -3
- package/bin/ttheme.js +220 -218
- package/bin/ttheme.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/package.json +9 -7
- package/shell/adapters/_bg.zsh +2 -1
- package/shell/adapters/_osc.zsh +20 -4
- package/shell/adapters/ghostty.zsh +1 -1
- package/shell/adapters/iterm2.zsh +6 -3
- package/shell/adapters/kitty.zsh +1 -1
- package/shell/adapters/konsole.zsh +1 -1
- package/shell/adapters/terminal-app.zsh +1 -1
- package/shell/adapters/warp.zsh +1 -1
- package/shell/adapters/wezterm.zsh +1 -1
- package/shell/preview.zsh +83 -23
- package/shell/ttheme.zsh +31 -13
package/dist/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kecan0406/ttheme",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ttheme": "bin/ttheme.js"
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"shell",
|
|
12
12
|
"!shell/check.zsh"
|
|
13
13
|
],
|
|
14
|
-
"description": "Character terminal palettes for Ghostty, kitty, Alacritty, WezTerm,
|
|
14
|
+
"description": "Character terminal palettes for Ghostty, iTerm2, kitty, Alacritty, WezTerm, Windows Terminal, Warp, Konsole and Terminal.app",
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"author": "kecan0406",
|
|
17
17
|
"repository": {
|
|
@@ -28,20 +28,22 @@
|
|
|
28
28
|
"alacritty",
|
|
29
29
|
"wezterm",
|
|
30
30
|
"iterm2",
|
|
31
|
-
"konsole"
|
|
31
|
+
"konsole",
|
|
32
|
+
"warp",
|
|
33
|
+
"windows-terminal"
|
|
32
34
|
],
|
|
33
35
|
"devDependencies": {
|
|
34
|
-
"@biomejs/biome": "^2.
|
|
35
|
-
"@clack/prompts": "^1.
|
|
36
|
+
"@biomejs/biome": "^2.5.15",
|
|
37
|
+
"@clack/prompts": "^1.8.1",
|
|
36
38
|
"@jsquash/jpeg": "^1.6.0",
|
|
37
39
|
"@material/material-color-utilities": "^0.4.0",
|
|
38
|
-
"@types/bun": "^1.
|
|
40
|
+
"@types/bun": "^1.4.2",
|
|
39
41
|
"@types/pngjs": "6.0.5",
|
|
40
42
|
"@xterm/headless": "6.0.0",
|
|
41
43
|
"fast-string-width": "^3.0.2",
|
|
42
44
|
"pngjs": "7.0.0",
|
|
43
45
|
"smol-toml": "^1.9.0",
|
|
44
|
-
"typescript": "^
|
|
46
|
+
"typescript": "^7.0.2",
|
|
45
47
|
"uqr": "^0.1.3"
|
|
46
48
|
},
|
|
47
49
|
"engines": {
|
package/shell/adapters/_bg.zsh
CHANGED
|
@@ -476,7 +476,8 @@ __tt_pv_bg_find() {
|
|
|
476
476
|
__tt_bg_hide $name
|
|
477
477
|
err=$(__tt_cli find $name 2>&1 >/dev/tty)
|
|
478
478
|
rc=$?
|
|
479
|
-
printf %s "$pvmouse"
|
|
479
|
+
printf '\e[?2004h%s' "$pvmouse"
|
|
480
|
+
__tt_pv_size
|
|
480
481
|
for var in ${(k)parameters[(I)TTHEME_FIND_*]}; do
|
|
481
482
|
[[ ${parameters[$var]} == *export* ]] || unset $var
|
|
482
483
|
done
|
package/shell/adapters/_osc.zsh
CHANGED
|
@@ -165,7 +165,7 @@ __tt_b64s() {
|
|
|
165
165
|
|
|
166
166
|
__tt_ask() {
|
|
167
167
|
setopt localoptions extendedglob
|
|
168
|
-
local fd saved="" buf="" chunk
|
|
168
|
+
local fd saved="" buf="" chunk seq
|
|
169
169
|
local -a match mbegin mend
|
|
170
170
|
REPLY=""
|
|
171
171
|
{ exec {fd}<>/dev/tty } 2>/dev/null || return 1
|
|
@@ -185,10 +185,26 @@ __tt_ask() {
|
|
|
185
185
|
[[ -n $saved ]] && stty "$saved" <&$fd 2>/dev/null
|
|
186
186
|
exec {fd}>&-
|
|
187
187
|
[[ $buf == *$'\e[0n'* ]] || __tt_owed
|
|
188
|
-
while [[ $buf
|
|
189
|
-
|
|
188
|
+
while [[ -n $buf ]]; do
|
|
189
|
+
if [[ $buf == (#b)([^$'\e']##)(*) ]]; then
|
|
190
|
+
TTHEME_TYPED+=$match[1] buf=$match[2]
|
|
191
|
+
elif [[ $buf == (#b)($'\e'[]P_^X][^$'\a\e']#($'\a'|$'\e\\'))(*) ]]; then
|
|
192
|
+
REPLY+=$match[1] buf=$match[-1]
|
|
193
|
+
elif [[ $buf == (#b)($'\e['[0-?]#[ -/]#[@-~])(*) ]]; then
|
|
194
|
+
seq=$match[1] buf=$match[-1]
|
|
195
|
+
if [[ $seq == *[nt] || $seq == $'\e['[?\>]*c || $seq == *'$y' ]]; then
|
|
196
|
+
REPLY+=$seq
|
|
197
|
+
else
|
|
198
|
+
TTHEME_TYPED+=$seq
|
|
199
|
+
fi
|
|
200
|
+
elif [[ $buf == (#b)($'\e'(O?|[^][P_^XO$'\e']))(*) ]]; then
|
|
201
|
+
TTHEME_TYPED+=$match[1] buf=$match[-1]
|
|
202
|
+
elif [[ $buf == $'\e\e'* ]]; then
|
|
203
|
+
TTHEME_TYPED+=$'\e' buf=${buf:1}
|
|
204
|
+
else
|
|
205
|
+
break
|
|
206
|
+
fi
|
|
190
207
|
done
|
|
191
|
-
[[ $buf == $'\e'* ]] || TTHEME_TYPED+=$buf
|
|
192
208
|
REPLY=${REPLY%$'\e[0n'}
|
|
193
209
|
}
|
|
194
210
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
source $TTHEME_HOME/adapters/_bg.zsh
|
|
1
|
+
source "$TTHEME_HOME/adapters/_bg.zsh"
|
|
2
2
|
|
|
3
3
|
typeset -g TTHEME_GHOSTTY_TABS=$TTHEME_STATE_DIR/ghostty TTHEME_GHOSTTY_FRONT="" TTHEME_GHOSTTY_BLUR="" TTHEME_GHOSTTY_HEARD="" TTHEME_GHOSTTY_CODE=""
|
|
4
4
|
typeset -gF TTHEME_GHOSTTY_ASKED=0 TTHEME_GHOSTTY_WANT=0 TTHEME_GHOSTTY_HUSH=0 TTHEME_GHOSTTY_TOLD=0 TTHEME_GHOSTTY_NONE_AT=0
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
source $TTHEME_HOME/adapters/_bg.zsh
|
|
1
|
+
source "$TTHEME_HOME/adapters/_bg.zsh"
|
|
2
2
|
|
|
3
3
|
zmodload -F zsh/datetime p:EPOCHREALTIME 2>/dev/null
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
() {
|
|
6
|
+
emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
|
|
7
|
+
(( ${+TTHEME_ITERM_SHOWN} )) && return 0
|
|
6
8
|
typeset -gx TTHEME_ITERM_SHOWN="" TTHEME_ITERM_DYED=0
|
|
7
9
|
[[ $ITERM_PROFILE == 'ttheme · '* ]] && TTHEME_ITERM_SHOWN=${ITERM_PROFILE#ttheme · }
|
|
8
|
-
|
|
10
|
+
return 0
|
|
11
|
+
}
|
|
9
12
|
|
|
10
13
|
__tt_keepable() { return 0 }
|
|
11
14
|
|
package/shell/adapters/kitty.zsh
CHANGED
package/shell/adapters/warp.zsh
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
source $TTHEME_HOME/adapters/_bg.zsh
|
|
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
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=""
|
package/shell/preview.zsh
CHANGED
|
@@ -288,15 +288,16 @@ __tt_pv_row() {
|
|
|
288
288
|
fi
|
|
289
289
|
name=${t##*/}
|
|
290
290
|
[[ -n ${TTHEME_CATALOG[$t]} && ${TTHEME_GROUP[$t]} == *@* ]] && ind=" "
|
|
291
|
+
(( ${TTHEME_TUNED[(Ie)$t]} )) && w=-2
|
|
292
|
+
(( ${(m)#name} > lw - 17 - ${#ind} + w )) && name="${name[1,lw-18-${#ind}+w]}…"
|
|
291
293
|
__tt_pv_hl "$name" "$base"
|
|
292
294
|
hl=$REPLY
|
|
293
|
-
if ((
|
|
295
|
+
if (( w )); then
|
|
294
296
|
(( color )) && hl+=" "$TTHEME_SGR[warn]"●"$TTHEME_SGR[/warn] || hl+=" ●"
|
|
295
|
-
w=-2
|
|
296
297
|
fi
|
|
297
298
|
extra=""
|
|
298
299
|
for part in "${(@s:|:)TTHEME_NATIVE_NAMES[$t]}" "${TTHEME_CHARACTER[$t]}" "${(@s:|:)TTHEME_ALIASES[$t]}"; do
|
|
299
|
-
__tt_pv_alias "$
|
|
300
|
+
__tt_pv_alias "${t##*/}" "$part"
|
|
300
301
|
[[ -n $REPLY ]] && { extra=$REPLY; break }
|
|
301
302
|
done
|
|
302
303
|
if (( color )); then
|
|
@@ -306,7 +307,9 @@ __tt_pv_row() {
|
|
|
306
307
|
(( w < 1 )) && w=1
|
|
307
308
|
REPLY=$gut$on"$ind$mark $base$hl$r$REPLY${(l:w:: :)}${tstrip[$t]} "$z
|
|
308
309
|
else
|
|
309
|
-
|
|
310
|
+
w=$(( w + lw - 4 - ${#ind} - ${#name} ))
|
|
311
|
+
__tt_pv_fit "$extra"
|
|
312
|
+
REPLY="$gut$ind$mark $hl$REPLY"
|
|
310
313
|
fi
|
|
311
314
|
}
|
|
312
315
|
|
|
@@ -350,10 +353,19 @@ __tt_pv_bar() {
|
|
|
350
353
|
}
|
|
351
354
|
|
|
352
355
|
__tt_pv_head() {
|
|
353
|
-
local b=$TTHEME_SGR[bold] d=$TTHEME_SGR[dim] z=$TTHEME_SGR[reset] right=$6
|
|
356
|
+
local b=$TTHEME_SGR[bold] d=$TTHEME_SGR[dim] z=$TTHEME_SGR[reset] title=$4 sub=$5 right=$6
|
|
357
|
+
local -i room=$(( $3 - $2 + 1 )) used
|
|
354
358
|
(( color )) || b= d= z=
|
|
355
|
-
|
|
356
|
-
|
|
359
|
+
if (( ${(m)#title} > room )); then
|
|
360
|
+
while [[ -n $title ]] && (( ${(m)#title} > room - 1 )); do title=${title[1,-2]}; done
|
|
361
|
+
title+=…
|
|
362
|
+
fi
|
|
363
|
+
used=${(m)#title}
|
|
364
|
+
(( used + 2 + ${(m)#sub} <= room )) || sub=""
|
|
365
|
+
[[ -n $sub ]] && (( used += 2 + ${(m)#sub} ))
|
|
366
|
+
(( used + 2 + ${(m)#right} <= room )) || right=""
|
|
367
|
+
out+=$'\e['$1';'$2'H'$b$gc$title$z
|
|
368
|
+
[[ -n $sub ]] && out+=" "$d$sub$z
|
|
357
369
|
[[ -n $right ]] && out+=$'\e['$(( $3 - ${(m)#right} + 1 ))'G'$d$right$z
|
|
358
370
|
return 0
|
|
359
371
|
}
|
|
@@ -498,6 +510,10 @@ __tt_pv_foot() {
|
|
|
498
510
|
break
|
|
499
511
|
fi
|
|
500
512
|
done
|
|
513
|
+
if (( lwid > end )); then
|
|
514
|
+
__tt_clip "$line" $end
|
|
515
|
+
line=$REPLY
|
|
516
|
+
fi
|
|
501
517
|
out+=$line$'\e[K'
|
|
502
518
|
[[ -n $right ]] && out+=$'\e['$(( end - rwid + 1 ))'G'$right
|
|
503
519
|
local -i zc=1 zw
|
|
@@ -599,7 +615,7 @@ __tt_pv_specimen() {
|
|
|
599
615
|
(( ${#sp} >= 20 )) || return 0
|
|
600
616
|
local z=$TTHEME_SGR[reset] d=$TTHEME_SGR[dim] cell hex fore line text piece role tabs="" built="" key="$applied|$painted|$scene|$sw|$sc|$ph"
|
|
601
617
|
local -A rs=(p "" d $TTHEME_SGR[dim] b $TTHEME_SGR[bold])
|
|
602
|
-
local -i i r=6 cw=4 k n=${#TTHEME_SCENES} at
|
|
618
|
+
local -i i r=6 cw=4 k n=${#TTHEME_SCENES} at room
|
|
603
619
|
(( n )) || return 0
|
|
604
620
|
if [[ $key == "$pvscene" ]]; then
|
|
605
621
|
out+=$pvscenes
|
|
@@ -660,11 +676,17 @@ __tt_pv_specimen() {
|
|
|
660
676
|
[[ $line == «n»* ]] && (( sw >= 44 )) && continue
|
|
661
677
|
(( r < ph )) || break
|
|
662
678
|
parts=("${(@s:«:)line}")
|
|
663
|
-
text=$parts[1]
|
|
679
|
+
text=$parts[1] room=$sw
|
|
680
|
+
while (( ${(m)#text} > room )); do text=${text[1,-2]}; done
|
|
681
|
+
(( room -= ${(m)#text} ))
|
|
664
682
|
for piece in "${(@)parts[2,-1]}"; do
|
|
683
|
+
(( room > 0 )) || break
|
|
665
684
|
role=${piece%%»*}
|
|
666
685
|
[[ $role == [wn] ]] && role=p
|
|
667
|
-
|
|
686
|
+
piece=${piece#*»}
|
|
687
|
+
while (( ${(m)#piece} > room )); do piece=${piece[1,-2]}; done
|
|
688
|
+
text+=$z${rs[${role:-p}]}$piece
|
|
689
|
+
(( room -= ${(m)#piece} ))
|
|
668
690
|
done
|
|
669
691
|
built+=$'\e['$r';'$sc'H'$text$z
|
|
670
692
|
(( ++r ))
|
|
@@ -1027,12 +1049,15 @@ __tt_pv_draw() {
|
|
|
1027
1049
|
fi
|
|
1028
1050
|
[[ $1 == hint ]] && (( ! wiped )) || pvz=()
|
|
1029
1051
|
if (( pw < 40 || ph < 12 )); then
|
|
1030
|
-
|
|
1031
|
-
(( color )) &&
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1052
|
+
local -a small=(ttheme "Needs 40×12 — now ${pw}×${ph}" "esc quits") paint=("" "" "")
|
|
1053
|
+
(( color )) && paint=($TTHEME_SGR[bold]$ac "" $TTHEME_SGR[dim])
|
|
1054
|
+
for (( k = 1; k <= 3 && k <= ph; k++ )); do
|
|
1055
|
+
line=${small[k]}
|
|
1056
|
+
while (( ${(m)#line} > pw )); do line=${line[1,-2]}; done
|
|
1057
|
+
(( k > 1 )) && out+=$'\n'
|
|
1058
|
+
out+=${paint[k]}$line${paint[k]:+$TTHEME_SGR[reset]}$'\e[K'
|
|
1059
|
+
done
|
|
1060
|
+
out+=$'\e[J'
|
|
1036
1061
|
__tt_pv_flush
|
|
1037
1062
|
return 0
|
|
1038
1063
|
fi
|
|
@@ -1100,7 +1125,7 @@ __tt_pv_draw() {
|
|
|
1100
1125
|
line=""
|
|
1101
1126
|
if (( k < h )); then
|
|
1102
1127
|
if (( ! N )); then
|
|
1103
|
-
(( k == 0 )) &&
|
|
1128
|
+
(( k == 0 )) && { __tt_clip " ${dd}No palettes match '$flt'$zz" $lw; line=$REPLY }
|
|
1104
1129
|
elif (( i <= N )); then
|
|
1105
1130
|
__tt_pv_row $i
|
|
1106
1131
|
line=$REPLY
|
|
@@ -1265,6 +1290,7 @@ __tt_pv_read() {
|
|
|
1265
1290
|
if [[ $REPLY != '[' && $REPLY != O ]]; then
|
|
1266
1291
|
key=nop
|
|
1267
1292
|
[[ $REPLY == c ]] && key=altc
|
|
1293
|
+
[[ $REPLY == [\]P_^X] ]] && __tt_pv_string
|
|
1268
1294
|
return 0
|
|
1269
1295
|
fi
|
|
1270
1296
|
while __tt_pv_getch 0.05; do
|
|
@@ -1286,10 +1312,33 @@ __tt_pv_read() {
|
|
|
1286
1312
|
Z) key=stab ;;
|
|
1287
1313
|
'<'<->';'<->';'<->[Mm]) __tt_pv_sgr $seq ;;
|
|
1288
1314
|
M) __tt_pv_x10 ;;
|
|
1315
|
+
"200~") __tt_pv_paste ;;
|
|
1289
1316
|
*) key=nop ;;
|
|
1290
1317
|
esac
|
|
1291
1318
|
}
|
|
1292
1319
|
|
|
1320
|
+
__tt_pv_string() {
|
|
1321
|
+
local prev=""
|
|
1322
|
+
while __tt_pv_getch 0.05; do
|
|
1323
|
+
[[ $REPLY == $'\a' || ( $prev == $'\e' && $REPLY == \\ ) ]] && return 0
|
|
1324
|
+
prev=$REPLY
|
|
1325
|
+
done
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
__tt_pv_paste() {
|
|
1329
|
+
setopt localoptions extendedglob
|
|
1330
|
+
local text=""
|
|
1331
|
+
key=nop
|
|
1332
|
+
while __tt_pv_getch 0.5; do
|
|
1333
|
+
text+=$REPLY
|
|
1334
|
+
[[ $REPLY == '~' && $text == *$'\e[201~' ]] && break
|
|
1335
|
+
done
|
|
1336
|
+
text=${${text%$'\e[201~'}//[$'\r\n\t']##/ }
|
|
1337
|
+
pasted=${text//[[:cntrl:]]/}
|
|
1338
|
+
[[ -n $pasted ]] && key=paste
|
|
1339
|
+
return 0
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1293
1342
|
__tt_pv_sgr() {
|
|
1294
1343
|
local -a p=(${(s:;:)${${1#<}%[Mm]}})
|
|
1295
1344
|
local -i b=$p[1]
|
|
@@ -1534,13 +1583,14 @@ __tt_pv_screen() {
|
|
|
1534
1583
|
to=$at
|
|
1535
1584
|
fi
|
|
1536
1585
|
done
|
|
1537
|
-
printf '\e[?2026h\e[?25l%s' "$pvmouse"
|
|
1586
|
+
printf '\e[?2026h\e[?25l\e[?2004h%s' "$pvmouse"
|
|
1538
1587
|
if [[ -n $applied ]]; then
|
|
1539
1588
|
__tt_pv_paint "$applied"
|
|
1540
1589
|
else
|
|
1541
1590
|
__tt_osc_reset
|
|
1542
1591
|
painted=""
|
|
1543
1592
|
fi
|
|
1593
|
+
__tt_pv_size
|
|
1544
1594
|
resized=1 bgname="" bgshown="" bgdim=()
|
|
1545
1595
|
return 0
|
|
1546
1596
|
}
|
|
@@ -1683,7 +1733,8 @@ __tt_te_edit() {
|
|
|
1683
1733
|
__tt_bg_hide $name
|
|
1684
1734
|
err=$(__tt_cli tone $name edit 2>&1 >/dev/tty)
|
|
1685
1735
|
rc=$?
|
|
1686
|
-
printf %s "$pvmouse"
|
|
1736
|
+
printf '\e[?2004h%s' "$pvmouse"
|
|
1737
|
+
__tt_pv_size
|
|
1687
1738
|
err=${${err//$'\n'/ }## #}
|
|
1688
1739
|
resized=1 bgname="" bgshown="" bgdim=()
|
|
1689
1740
|
if (( rc == 0 )); then
|
|
@@ -2052,7 +2103,7 @@ __tt_pv_te_panel() {
|
|
|
2052
2103
|
else
|
|
2053
2104
|
(( color )) && out+=" "$b" Apply "$z || out+=" Apply "
|
|
2054
2105
|
fi
|
|
2055
|
-
out+=" "$d$note$z
|
|
2106
|
+
(( ${#note} <= end - ix - 10 )) && out+=" "$d$note$z
|
|
2056
2107
|
return 0
|
|
2057
2108
|
}
|
|
2058
2109
|
|
|
@@ -2222,6 +2273,15 @@ __tt_pv_handle() {
|
|
|
2222
2273
|
__tt_pv_rows
|
|
2223
2274
|
__tt_pv_first "$name"
|
|
2224
2275
|
;;
|
|
2276
|
+
paste)
|
|
2277
|
+
__tt_pv_lw
|
|
2278
|
+
name=""
|
|
2279
|
+
[[ ${rtype[cur]} == thm ]] && name=${rval[cur]}
|
|
2280
|
+
flt+=${(L)pasted}
|
|
2281
|
+
while [[ -n $flt ]] && (( ${(m)#flt} > reply[1] - 12 )); do flt=${flt[1,-2]}; done
|
|
2282
|
+
__tt_pv_rows
|
|
2283
|
+
__tt_pv_first "$name"
|
|
2284
|
+
;;
|
|
2225
2285
|
esac
|
|
2226
2286
|
return 0
|
|
2227
2287
|
}
|
|
@@ -2248,7 +2308,7 @@ __tt_preview() {
|
|
|
2248
2308
|
local te=0 tfocus=0 tetop=0 tewide=0 tbtn=0 tearm=0 tename=""
|
|
2249
2309
|
local -i pvgone=0 bgprepid=0 mrow=0 mcol=0 mclick=0 mwheel=0 mlwheel=0 mlrow=0 mlcol=0
|
|
2250
2310
|
local -F mlast=0
|
|
2251
|
-
local mact="" mzone="" pvmouse=""
|
|
2311
|
+
local mact="" mzone="" pvmouse="" pasted=""
|
|
2252
2312
|
local -a pvz=()
|
|
2253
2313
|
local -a cvars=(TTHEME_TAB_PALETTE TTHEME_ANNOUNCE TTHEME_FX TTHEME_SORT TTHEME_MOUSE TTHEME_BG_BLUR TTHEME_BG_COLORS) clabel=("New tabs" Announce "Search fx" Sort Mouse Blur Colors)
|
|
2254
2314
|
local -a cchoice=("off seq" "1 0" "typewriter decode glitch" "abc series" "on off" "0 1 2 3 4" "tone original") cshow=("off seq" "on off" "typewriter decode glitch" "abc series" "on off" "off 1px 2px 3px 4px" "tone original")
|
|
@@ -2283,7 +2343,7 @@ __tt_preview() {
|
|
|
2283
2343
|
tty=$(stty -g 2>/dev/null) && stty -echo -icanon -ixon min 1 time 0 2>/dev/null || tty=""
|
|
2284
2344
|
TTHEME_RAW=$(( ${#tty} > 0 ))
|
|
2285
2345
|
__tt_pv_bg_open
|
|
2286
|
-
printf '\e[?2026h\e[?1049h\e[?7l\e[?25l'
|
|
2346
|
+
printf '\e[?2026h\e[?1049h\e[?7l\e[?25l\e[?2004h'
|
|
2287
2347
|
__tt_pv_pointer
|
|
2288
2348
|
while :; do
|
|
2289
2349
|
printf '\e[?2026h'
|
|
@@ -2316,7 +2376,7 @@ __tt_preview() {
|
|
|
2316
2376
|
__tt_pv_unpaint
|
|
2317
2377
|
fi
|
|
2318
2378
|
__tt_pv_pointer off
|
|
2319
|
-
printf '\e[?7h'
|
|
2379
|
+
printf '\e[?2004l\e[?7h'
|
|
2320
2380
|
(( hubleft )) || printf '\e[?1049l'
|
|
2321
2381
|
printf '\e[?25h\e[?2026l'
|
|
2322
2382
|
[[ -n $tty ]] && stty "$tty" 2>/dev/null
|
package/shell/ttheme.zsh
CHANGED
|
@@ -112,7 +112,7 @@ fi
|
|
|
112
112
|
|
|
113
113
|
typeset -g TTHEME_CONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/ttheme/config.zsh
|
|
114
114
|
|
|
115
|
-
[[ -r $TTHEME_CONFIG ]] && source $TTHEME_CONFIG
|
|
115
|
+
[[ -r $TTHEME_CONFIG ]] && source "$TTHEME_CONFIG"
|
|
116
116
|
|
|
117
117
|
typeset -g TTHEME_PINS_FILE=${TTHEME_CONFIG:h}/pins
|
|
118
118
|
typeset -g TTHEME_PINS_RAW="" TTHEME_PINS_AT=""
|
|
@@ -305,10 +305,10 @@ __tt_mend() {
|
|
|
305
305
|
__tt_apply "$TTHEME_SPEC"
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
-
source $TTHEME_HOME/adapters/_osc.zsh
|
|
309
|
-
source $TTHEME_HOME/adapters/_wired.zsh
|
|
308
|
+
source "$TTHEME_HOME/adapters/_osc.zsh"
|
|
309
|
+
source "$TTHEME_HOME/adapters/_wired.zsh"
|
|
310
310
|
[[ -r $TTHEME_HOME/adapters/$TTHEME_ADAPTER.zsh ]] &&
|
|
311
|
-
source $TTHEME_HOME/adapters/$TTHEME_ADAPTER.zsh
|
|
311
|
+
source "$TTHEME_HOME/adapters/$TTHEME_ADAPTER.zsh"
|
|
312
312
|
|
|
313
313
|
__tt_empty() {
|
|
314
314
|
print -u2 'ttheme: no palettes installed yet — run `ttheme` in a terminal to pick some, or `ttheme add <palette>`'
|
|
@@ -729,6 +729,14 @@ __tt_key() {
|
|
|
729
729
|
C) REPLY=right ;;
|
|
730
730
|
D) REPLY=left ;;
|
|
731
731
|
Z) REPLY=stab ;;
|
|
732
|
+
"200~")
|
|
733
|
+
seq=""
|
|
734
|
+
while read -sk 1 -t 0.5 c; do
|
|
735
|
+
seq+=$c
|
|
736
|
+
[[ $c == '~' && $seq == *$'\e[201~' ]] && break
|
|
737
|
+
done
|
|
738
|
+
REPLY=nop
|
|
739
|
+
;;
|
|
732
740
|
*) REPLY=nop ;;
|
|
733
741
|
esac
|
|
734
742
|
else
|
|
@@ -795,7 +803,7 @@ __tt_unpin_choose() {
|
|
|
795
803
|
chosen=0
|
|
796
804
|
{
|
|
797
805
|
tty=$(stty -g 2>/dev/null && stty -echo -icanon -ixon min 1 time 0 2>/dev/null)
|
|
798
|
-
print -rn -- $'\e[?25l'
|
|
806
|
+
print -rn -- $'\e[?25l\e[?2004h'
|
|
799
807
|
while :; do
|
|
800
808
|
__tt_unpin_block $at
|
|
801
809
|
__tt_unpin_paint $n
|
|
@@ -811,7 +819,7 @@ __tt_unpin_choose() {
|
|
|
811
819
|
} always {
|
|
812
820
|
REPLY=$'\r'
|
|
813
821
|
(( n > 1 )) && REPLY+=$'\e['$(( n - 1 ))'A'
|
|
814
|
-
print -rn -- "$REPLY"$'\e[J\e[?25h'
|
|
822
|
+
print -rn -- "$REPLY"$'\e[J\e[?2004l\e[?25h'
|
|
815
823
|
[[ -n $tty ]] && stty "$tty" 2>/dev/null
|
|
816
824
|
}
|
|
817
825
|
(( chosen ))
|
|
@@ -960,14 +968,15 @@ __tt_map_tip() {
|
|
|
960
968
|
|
|
961
969
|
__tt_map_chip() {
|
|
962
970
|
local -a p=(${=TTHEME_PALETTE[$1]})
|
|
963
|
-
local bg=${p[1]#\#} fg=${p[2]#\#}
|
|
971
|
+
local bg=${p[1]#\#} fg=${p[2]#\#} name=$1
|
|
972
|
+
(( ${#name} > $2 )) && name=${name[1,$2-1]}…
|
|
964
973
|
if (( ! color )); then
|
|
965
|
-
printf -v REPLY '%-*s' $2 "$
|
|
974
|
+
printf -v REPLY '%-*s' $2 "$name"
|
|
966
975
|
elif (( ${#p} >= 20 )); then
|
|
967
976
|
printf -v REPLY "\e[48;2;%d;%d;%d;38;2;%d;%d;%dm %-*s ${TTHEME_SGR[/ink]}" $((16#${bg:0:2})) $((16#${bg:2:2})) $((16#${bg:4:2})) \
|
|
968
|
-
$((16#${fg:0:2})) $((16#${fg:2:2})) $((16#${fg:4:2})) $2 "$
|
|
977
|
+
$((16#${fg:0:2})) $((16#${fg:2:2})) $((16#${fg:4:2})) $2 "$name"
|
|
969
978
|
else
|
|
970
|
-
printf -v REPLY "${TTHEME_SGR[dim]} %-*s ${TTHEME_SGR[reset]}" $2 "$
|
|
979
|
+
printf -v REPLY "${TTHEME_SGR[dim]} %-*s ${TTHEME_SGR[reset]}" $2 "$name"
|
|
971
980
|
fi
|
|
972
981
|
}
|
|
973
982
|
|
|
@@ -1110,7 +1119,7 @@ __tt_map_build() {
|
|
|
1110
1119
|
|
|
1111
1120
|
__tt_map_fit() {
|
|
1112
1121
|
local b=$TTHEME_SGR[bold] d=$TTHEME_SGR[dim] y=$TTHEME_SGR[warn] r=$TTHEME_SGR[error] z=$TTHEME_SGR[reset] lab line tag tip note REPLY
|
|
1113
|
-
local -i width=$1 i lvl maxw namew need wr cap
|
|
1122
|
+
local -i width=$1 i lvl maxw namew need wr cap short
|
|
1114
1123
|
local -a lw=() rw=() cut=()
|
|
1115
1124
|
(( color )) || b= d= y= r= z=
|
|
1116
1125
|
reply=()
|
|
@@ -1149,11 +1158,16 @@ __tt_map_fit() {
|
|
|
1149
1158
|
(( lvl > 3 )) && lvl=3
|
|
1150
1159
|
cut=()
|
|
1151
1160
|
if (( need > width )); then
|
|
1152
|
-
cap=0
|
|
1161
|
+
cap=0 short=0
|
|
1153
1162
|
for (( i = 1; i <= ${#ll}; i++ )); do
|
|
1154
1163
|
(( rw[i] > cap )) && cap=$rw[i]
|
|
1164
|
+
(( rw[i] && lw[i] - ${(m)#ll[i]} + 1 > short )) && short=$(( lw[i] - ${(m)#ll[i]} + 1 ))
|
|
1155
1165
|
done
|
|
1156
1166
|
cap=$(( width - cap ))
|
|
1167
|
+
if (( short > cap )); then
|
|
1168
|
+
short=$(( short - cap > namew - 4 ? namew - 4 : short - cap ))
|
|
1169
|
+
(( short > 0 )) && (( namew -= short, cap += short ))
|
|
1170
|
+
fi
|
|
1157
1171
|
maxw=0
|
|
1158
1172
|
for (( i = 1; i <= ${#ll}; i++ )); do
|
|
1159
1173
|
wr=$(( rw[i] ? cap : width ))
|
|
@@ -1202,6 +1216,10 @@ __tt_map_fit() {
|
|
|
1202
1216
|
fi
|
|
1203
1217
|
fi
|
|
1204
1218
|
while [[ $line == *' ' ]]; do line=${line% }; done
|
|
1219
|
+
if (( need > width )); then
|
|
1220
|
+
__tt_clip "$line" $width
|
|
1221
|
+
line=$REPLY
|
|
1222
|
+
fi
|
|
1205
1223
|
reply+=("$line")
|
|
1206
1224
|
done
|
|
1207
1225
|
}
|
|
@@ -1481,7 +1499,7 @@ __tt_next() {
|
|
|
1481
1499
|
REPLY=${TTHEME_PALETTE[$TTHEME_ORDER[idx]]}
|
|
1482
1500
|
}
|
|
1483
1501
|
|
|
1484
|
-
source $TTHEME_HOME/preview.zsh
|
|
1502
|
+
source "$TTHEME_HOME/preview.zsh"
|
|
1485
1503
|
|
|
1486
1504
|
__tt_hook() {
|
|
1487
1505
|
autoload -Uz add-zsh-hook add-zle-hook-widget
|