ターミナル出力(この場合は6ピクセルの画像)の「行」と「列」に、希望の幅と高さの2つのシェル変数とを$width
提供するプログラムがあります。$height
$heightと$widthの値を行/列単位からピクセル単位に変換するにはどうすればよいですか?
#!/bin/bash
pixelsperrow=# How
pixelspercolumn=# How
heightpixels=$(($height*$pixelsperrow))
widthpixels=$(($width*$pixelspercolumn))
foot
また、私の端末エミュレータ()が端末ウィンドウで現在利用可能な列数である$ COLUMNS環境変数を提供していることも確認しました。river
関連がある場合(Waylandタイリングウィンドウマネージャ)をWMとして使用しています。
答え1
おそらく、ioctl
端末のサイズをピクセル単位で取得することができます。
$ cat termsize.c
#include <sys/ioctl.h>
#include <stdio.h>
#include <unistd.h>
int main(void) {
struct winsize w;
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
printf("%d,%d %d,%d\n", w.ws_row, w.ws_col, w.ws_ypixel, w.ws_xpixel);
return 0;
}
$ make termsize
cc termsize.c -o termsize
$ ./termsize
24,80 388,644