sistema_progs

Programas para customizar o meu entorno de traballo nos meus equipos persoais
Log | Files | Refs

D2021.winsize.sh (1128B)


      1 #!/bin/bash
      2 
      3 (
      4   winsz1() { local sz; ble/util/assign-words sz 'stty size'; LINES=${sz[0]} COLUMNS=${sz[1]}; }
      5   winsz2() { local sc; ble/util/assign sc 'resize'; builtin eval -- "$sc"; }
      6   winsz3() { local sz; ble/util/assign-words sz 'tput lines cols'; LINES=${sz[0]} COLUMNS=${sz[1]}; }
      7   ble-measure winsz1
      8   ble-measure winsz2
      9   ble-measure winsz3
     10 
     11   # (:) で LINES, COLUMNS が更新されるのは bash >= 4.3 のみ。今回は
     12   # bash-5.2 に対する wa を考えているので気にしなくて良い。
     13   winsz4() { local sz; ble/util/assign-words sz '"$BASH" -O checkwinsize -c "(:);echo \"\$LINES \$COLUMNS\""'; LINES=${sz[0]} COLUMNS=${sz[1]}; }
     14   winsz4b() { local sz; ble/util/assign sz '"$BASH" -O checkwinsize -c "(:);echo \"LINES=\$LINES COLUMNS=\$COLUMNS\""'; builtin eval -- "$sz"; }
     15   ble-measure winsz4
     16   ble-measure winsz4b
     17 
     18   # winsz4b() { local sz; ble/util/assign sz '"$BASH" -O checkwinsize -c "(:);echo \"LINES=\$LINES COLUMNS=\$COLUMNS\""'; builtin eval -- "$sz"; declare -p sz LINES COLUMNS; }
     19   # LINES= COLUMNS= winsz4b
     20 
     21 
     22   # winsz3 > winsz1 > winsz2 > winsz4 > winsz4b の順に速い。
     23 )