터미널 행 및 열 단위의 크기를 고려하여 해당 픽셀 수를 계산하는 방법

터미널 행 및 열 단위의 크기를 고려하여 해당 픽셀 수를 계산하는 방법

터미널 출력(이 경우 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

관련 정보