cari tahu ukuran terminal terbuka


13

Pada DE kita dapat mengubah ukuran terminal (gnome-terminal misalnya) untuk kenyamanan kita, bagaimana saya bisa mengetahui ukuran terminal dalam hal piksel atau jumlah kolom dan baris?

Jawaban:


20

Jika Anda mengeluarkan perintah

stty size

mengembalikan ukuran terminal saat ini dalam baris dan kolom. Contoh:

$ stty size
24 80

Anda dapat membaca baris dan kolom menjadi variabel seperti ini (terima kasih atas komentar Janis ):

$ read myrows mycols < <(stty size)

Untuk mendapatkan ukuran dalam piksel memerlukan pengetahuan tentang resolusi layar Anda dan saya pikir tidak sttymemiliki akses langsung ke informasi tersebut.


Pak, apakah tidak mungkin untuk mendapatkan output dalam hal piksel?
Edward Torvalds

Perhatikan bahwa dalam bashsatu echoperintah dalam jawaban ini tidak akan melihat variabel, karena readdi dalam pipa akan dieksekusi dalam subkulit. (Ini berfungsi ksh, meskipun.) Untuk bashAnda mungkin ingin menggunakan, misalnya read myrows mycols < <( stty size ),.
Janis

1

Di lingkungan desktop , Anda menggunakan X, dan xwininfoutilitas dapat menunjukkan ukuran jendela dalam piksel. Juga, jika Anda menjalankan pada desktop (dan tidak, misalnya, terhubung dari jarak jauh), terminal emulator menyediakan variabel $WINDOWIDyang dapat Anda gunakan sebagai parameter untuk xwininfo, misalnya,

xwininfo -id $WINDOWID

dan dapatkan daftar listing ini:

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

Dalam contoh ini, garis dengan Widthdan Heightmerupakan ukuran dalam piksel . Baris terakhir, dengan -geometrymemberikan ukuran dalam karakter (serta posisi sudut kiri atas - dalam piksel).

Berbicara tentang mengubah ukuran jendela, resizeprogram menunjukkan jumlah garis dan kolom. Untuk contoh ini, ini menunjukkan

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

Pertanyaan itu tidak menunjukkan bagaimana informasi dapat digunakan, tetapi karena outputnya berupa teks, dalam format yang dapat diprediksi, maka informasi tersebut dapat ditulis dengan mudah. Berikut adalah contoh sederhana menggunakan 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

yang mencetak

577x624 pixels, 103x42 chars
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.