File: D2021.winsize.sh

package info (click to toggle)
ble.sh 0.4.0~git20250321.d4c812b-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,516 kB
  • sloc: sh: 71,367; awk: 1,316; cpp: 750; ansic: 186; javascript: 43; makefile: 35
file content (23 lines) | stat: -rw-r--r-- 1,128 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

(
  winsz1() { local sz; ble/util/assign-words sz 'stty size'; LINES=${sz[0]} COLUMNS=${sz[1]}; }
  winsz2() { local sc; ble/util/assign sc 'resize'; builtin eval -- "$sc"; }
  winsz3() { local sz; ble/util/assign-words sz 'tput lines cols'; LINES=${sz[0]} COLUMNS=${sz[1]}; }
  ble-measure winsz1
  ble-measure winsz2
  ble-measure winsz3

  # (:) で LINES, COLUMNS が更新されるのは bash >= 4.3 のみ。今回は
  # bash-5.2 に対する wa を考えているので気にしなくて良い。
  winsz4() { local sz; ble/util/assign-words sz '"$BASH" -O checkwinsize -c "(:);echo \"\$LINES \$COLUMNS\""'; LINES=${sz[0]} COLUMNS=${sz[1]}; }
  winsz4b() { local sz; ble/util/assign sz '"$BASH" -O checkwinsize -c "(:);echo \"LINES=\$LINES COLUMNS=\$COLUMNS\""'; builtin eval -- "$sz"; }
  ble-measure winsz4
  ble-measure winsz4b

  # winsz4b() { local sz; ble/util/assign sz '"$BASH" -O checkwinsize -c "(:);echo \"LINES=\$LINES COLUMNS=\$COLUMNS\""'; builtin eval -- "$sz"; declare -p sz LINES COLUMNS; }
  # LINES= COLUMNS= winsz4b


  # winsz3 > winsz1 > winsz2 > winsz4 > winsz4b の順に速い。
)