给定终端行和列单位的大小,如何计算等效数量的像素

给定终端行和列单位的大小,如何计算等效数量的像素

我有一个程序,它提供 2 个 shell 变量$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

相关内容