開いているターミナルのサイズを調べる


13

DEでは、便宜上ターミナル(gnome-terminalなど)のサイズを変更できますが、ピクセルまたは列と行の数でターミナルのサイズを知るにはどうすればよいですか?

回答:


20

コマンドを発行する場合

stty size

現在の端末のサイズを行と列で返します。例:

$ stty size
24 80

行と列をこのような変数に読み込むことができます(Janisのコメントのおかげです)):

$ read myrows mycols < <(stty size)

サイズをピクセル単位で取得するには、画面の解像度に関する知識が必要であり、sttyそのような情報に直接アクセスできるとは思わない。


ピクセル単位で出力を取得することはできませんか?
エドワードトーバルズ

パイプラインのサブシェルで実行されるため、この回答bashechoコマンドでは変数が表示されないことに注意してくださいread。(kshただし、で動作します。)たとえばbash、を使用する場合がありますread myrows mycols < <( stty size )
ジャニス

1

デスクトップ環境には、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

この例では、ある行WidthHeightで大きさの画素。最後の行は、文字-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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.