找出开放端子的尺寸

找出开放端子的尺寸

在桌面环境中,我们可以调整终端的大小(GNOME 终端例如)为了我们的方便。

我如何知道终端的像素大小或列数和行数?

答案1

如果您发出命令

stty size

它返回当前终端的行和列大小。例子:

$ stty size
24 80

您可以将行和列读入这样的变量中(感谢贾尼斯的评论):

$ read myrows mycols < <(stty size)

获取像素大小需要了解屏幕的分辨率,我认为无法stty直接访问此类信息。

答案2

tput cols; tput lines

这将显示列和行。

答案3

在一个桌面环境,您正在使用 X,并且该xwininfo实用程序可以以像素为单位显示窗口的大小。此外,如果您在桌面上运行(例如,不是远程连接),终端仿真器会提供一个变量$WINDOWID,您可以将其用作 的参数xwininfo,例如,

xwininfo -id $WINDOWID

并获取列表:

xwininfo: Window id: 0xc00025 "uxterm"

  Absolute upper-left X:  65
  Absolute upper-left Y:  167
  Relative upper-left X:  0
  Relative upper-left Y:  22
  Width: 624
  Height: 577
  Depth: 24
  Visual: 0x22
  Visual Class: TrueColor
  Border width: 1
  Class: InputOutput
  Colormap: 0x21 (installed)
  Bit Gravity State: NorthWestGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +65+167  -589+167  -589-256  +65-256
  -geometry 103x42+65+145

Width在此示例中,带有和 的行Height大小为像素。最后一行,与-geometry给出了尺寸人物(以及左上角的位置 - 以像素为单位)。

谈起调整大小窗口中,resize程序显示行数和列数。对于这个例子,它显示

$ resize
set noglob;
setenv COLUMNS '103';
setenv LINES '42';
unset noglob;

该问题没有表明如何使用信息,但由于输出是文本,采用可预测的格式,因此很容易编写脚本。这是一个使用 awk 的简单示例:

#!/bin/sh
if [ -n "$WINDOWID" ]
then
    xwininfo -id $WINDOWID | awk '
    BEGIN { px = 0; py = 0; chars = "?x?"; }
    /Height:/ { py = $2; }
    /Width:/ { px = $2; }
    /-geometry/ { chars = $2; sub("+.*","",chars); }
    END { printf "%dx%d pixels, %s chars\n", py, px, chars; }'
else
    printf '? no WINDOWID found\n'
fi

打印

577x624 pixels, 103x42 chars

相关内容