GNU/Linux >> Belajar Linux >  >> Linux

Menangkap Screenshot aplikasi terminal melalui skrip shell?

Saya rasa Anda tidak akan dapat melakukan ini dengan screen kecuali output benar-benar dirender di jendela, yang mungkin mengalahkan tujuan penggunaan layar. Namun, jendela tidak harus berada di latar depan.

ImageMagick suite berisi utilitas yang disebut import dapat Anda gunakan untuk ini. Jika import --help memberi Anda "perintah tidak ditemukan", instal paket imagemagick, ini akan tersedia di distro linux mana pun.

import membutuhkan nama jendela. iftop adalah antarmuka terminal, jadi untuk memastikan Anda menggunakan nama yang benar, Anda harus mengatur judul terminal GUI yang dijalankannya. Cara melakukannya bergantung pada terminal GUI mana yang Anda gunakan. Misalnya, saya lebih suka Terminal XFCE, yaitu:

Terminal -T Iftop -e iftop

Membuka terminal baru yang menjalankan iftop dengan judul "Iftop". Tangkapan layarnya dapat diambil:

import -window Iftop ss.jpg

Jika Anda akan melakukan ini setiap lima detik, Anda mungkin ingin membuka jendela dengan menjalankan skrip sehingga Anda dapat menggunakan kembali terminal yang sama:

count=0;
while ((1)); do
    iftop &
    pid=$!
    sleep 1  # make sure iftop is up
    count=$(($count+1))
    import -window Iftop iftop_sshot$count.jpg
    kill $pid
    sleep 5
done

Jika skripnya adalah "iftopSShot.sh" maka Anda akan memulai Terminal -T Iftop -e iftopSShot.sh ini -- kecuali Anda mungkin tidak menggunakan Terminal . Sebagian besar terminal GUI linux terkait dengan DE tertentu, meskipun mereka adalah aplikasi yang berdiri sendiri yang dapat digunakan secara mandiri. Saya yakin nama terminal default di KDE adalah Konsole dan mengikuti -T dan -e konvensi; untuk GNOME mungkin gnome-terminal (ini mungkin telah berubah) dan tampaknya menggunakan -t dan bukan -T .

Hati-hati import secara default membunyikan bel, yang akan mengganggu, tetapi ada -silent opsi.


Di X lingkungan:

Setel judul terminal secara dinamis:

Dari skrip kami, cara mengubah judul terminal menggunakan urutan ansi:

echo -e "\033]0;Term | myApp\007";

Tangkap png dengan judul jendela:

Sekarang kita dapat mencari id jendela dengan judul yang tepat menggunakan wmctrl dan teruskan id ke import utilitas:

import -window $(wmctrl -l | grep -i 'Term | myApp' | awk '{print $1}') ~/Pictures/capture.png

Buat gif:

Contoh untuk men-tweak, ambil 5 tangkapan setiap detik lalu ubah menjadi gif menggunakan convert , dalam putaran 2 detik tanpa batas.

rm -f /tmp/*png && for i in {1..5}; do import -window $(wmctrl -l | grep -i 'Term | myApp' | awk '{print $1}') /tmp/$i.png && sleep 1; done && convert -delay 200 -loop 0 /tmp/*.png animation.gif

Linux
  1. Tentukan Shell In Script Selama Runtime?

  2. Waktu Habis Dalam Skrip Shell?

  3. Apakah Terminal Gnome Merupakan Jenis Shell Non-login?

  1. Arti dari $? Dalam Skrip Shell?

  2. Menjalankan skrip shell secara paralel

  3. Jalankan skrip Python melalui crontab

  1. Menentukan Jalur Ke Skrip Shell Bersumber?

  2. Direktori skrip Shell saat ini?

  3. Jalankan skrip shell di terminal baru dari terminal saat ini