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.