我有一个程序,它提供 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