![터미널 행 및 열 단위의 크기를 고려하여 해당 픽셀 수를 계산하는 방법](https://linux55.com/image/208596/%ED%84%B0%EB%AF%B8%EB%84%90%20%ED%96%89%20%EB%B0%8F%20%EC%97%B4%20%EB%8B%A8%EC%9C%84%EC%9D%98%20%ED%81%AC%EA%B8%B0%EB%A5%BC%20%EA%B3%A0%EB%A0%A4%ED%95%98%EC%97%AC%20%ED%95%B4%EB%8B%B9%20%ED%94%BD%EC%85%80%20%EC%88%98%EB%A5%BC%20%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
터미널 출력(이 경우 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