açık terminalin boyutunu öğren


13

DE'de terminali (örneğin gnome-terminali) rahatlığımız için yeniden boyutlandırabiliriz, terminalin boyutunu piksel veya sütun ve satır sayısı olarak nasıl bilebilirim?

Yanıtlar:


20

Komutu verirseniz

stty size

geçerli terminalin boyutunu satır ve sütun olarak döndürür. Misal:

$ stty size
24 80

Satırları ve sütunları aşağıdaki gibi değişkenlere okuyabilirsiniz ( Janis'in yorumu sayesinde ):

$ read myrows mycols < <(stty size)

Boyutu piksel olarak elde etmek için ekranınızın çözünürlüğü hakkında bilgi gerektirir ve bence sttybu tür bilgilere doğrudan erişimi vardır.


efendim piksel cinsinden çıktı almak mümkün değil mi?
— Edward Torvalds

İçinde olduğunu unutmayın beri bu cevap komutu değişkenleri görmez boru hattı bir kabuktaki çalıştırılacaktır. (Yine de çalışır .) Kullanmak isteyebilirsiniz, örneğin . bashechoreadkshbashread myrows mycols < <( stty size )
— Janis

1

Bir de masaüstü ortamında , sen X kullanıyorsanız ve xwininfoyarar piksel cinsinden penceresinin boyutunu gösterebilir. Masaüstü çalışan (ve, örneğin, uzaktan bağlı değil) olan, ayrıca, terminal emülatörü bir değişken içerir $WINDOWIDEğer bir parametre olarak kullanarak xwininfo, örneğin,

xwininfo -id $WINDOWID

ve bir liste listesi alın:

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

Bu örnekte, olan hatlar Widthve Heightboyut olan piksel . Son satır, karakterlerin-geometry boyutunu verir (ayrıca sol üst köşenin konumunu - piksel olarak).

Konuşurken boyutlandırma pencere, resizeprogram, satır ve sütun göstermektedir. Bu örnek için şunu gösterir:

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

Soru, bilginin nasıl kullanılabileceğini göstermedi, ancak çıktı metin olduğu için tahmin edilebilir bir formatta kolayca yazılır. İşte awk kullanarak basit bir örnek:

#!/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

hangi baskılar

577x624 pixels, 103x42 chars
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.