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?
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:
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.
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 ),.
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