Özelleştirilebilir marjlarla bir pencereden ekran görüntüsünü nasıl alabilirim

17

Aşağıdakileri yapacak bir araca ihtiyacım var: bir pencere seçerek, aşağıdaki pencerede olduğu gibi bir x dolgu ile o pencerenin ekran görüntüsünü oluşturacaktır:

Dolayısıyla, çoğu durumda x , y ile eşit olacak, ancak bazen farklı mesafelere ihtiyacım var.

Otomatik olarak böyle bir ekran görüntüsü nasıl yapılır? Shutter ile denedim, ama orada böyle bir ayar bulamadım. Bununla birlikte, eklentileri destekler. Bu yüzden pencereyi bu şekilde kesmek için bir eklenti olabilir.

    
sordu Ionică Bizău 28.01.2015 09:03

3 cevap

19

Komut Dosyası, Deklanşör Kullanılıyor

Var olduğunu sanmıyorum, ama her şey gibi yapılabilir.

Aşağıdaki komut dosyasını bir tuş kombinasyonu altında kullanıma sunarsanız (aşağıdaki açıklama), ekranınızın kenar boşluklarını sol, sağ, üst ve Bir boşlukla ayrılan alt :

sonucu:

veya

sonucu:

vb.

Varsayılanı 30 px olarak ayarlıyorum, ancak herhangi bir varsayılan değeri ayarlayabilirsiniz (aşağıya bakın).

Nasıl kullanılır?

  • Komut Shutter ve wmctrl kullanır. Sisteminizde Shutter değeri varsayarak (bundan bahsettiğinizden), wmctrl yükleyin:

    sudo apt-get install wmctrl
    

    N.B. Kubuntu kullanırsanız, Zenity varsayılan olarak yüklenmez:

    sudo apt-get install zenity
    
  • Aşağıdaki komut dosyasını boş bir dosyaya kopyalayın. İsterseniz, komut dosyasının satırındaki "varsayılan" marjı değiştirebilirsiniz:

    'arg ='
    
  • custom_screenshot.py olarak kaydedin.

  • Komut dosyasını bir temel kısayol kombinasyonuna ekleyin: seçim yapın: Sistem Ayarları & gt; "Klavye" & gt; "Kısayollar" & gt; "Özel Kısayollar". "+" İşaretini tıklayın ve komutu ekleyin:

    python3 /path/to/custom_screenshot.py
    

Not

Komut, pencerenin konumunu belirlemek için wmctrl değerini kullanır. Ancak farklı pencere yöneticilerinde, wmctrl -lG komutunun çıktısı, pencerenin y-konumunda küçük farklılıklar gösterir. Bu farklılıklar, komut dosyasının deviation= dizisinde belirlenen değerle yok edilir. Mevcut ayar değeri (0) Birlik ve KDE için uygundur.

Komut dosyası ayrıca test edilir ve Xfce ve Gnome öğesinde iyi çalışır, ancak kodun baş bölümünde açıklandığı gibi değerin değiştirilmesi gerekir.

Komut dosyası

#!/usr/bin/env python3
import subprocess
import time

"""
On different window managers, the window geometry as output of wmctrl differs slightly.
The "deviation" should compensate these differences. Most likely appropriate (tested) settings:
Unity: 0, Gnome: -36, Xfce (Xubuntu): -26, KDE (Kubuntu): 0
"""
#---
deviation = 0
#---
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
try:
    arg = get('zenity --entry --entry-text "30 30 30 30" --text "border left, right, top, bottom" --title "Screenshot margins"').strip().split()
except:
    pass
else:
    time.sleep(0.5)
    # frontmost window pos
    frontmost = [l.split()[4] for l in get("xprop -root").splitlines() if "ACTIVE_WINDOW(WINDOW)" in l][0].replace(",", "")
    frontmost = frontmost[:2]+"0"+frontmost[2:]
    f_data = [l.split() for l in get("wmctrl -lG").splitlines() if frontmost in l][0][2:6]
    # extent
    xt_data = get("xprop -id "+frontmost).split()
    xt_i = xt_data.index("_NET_FRAME_EXTENTS(CARDINAL)")
    xt = [int(n.replace(",", "")) for n in xt_data[xt_i+2:xt_i+6]]
    # set data for screenshot command
    x = str(int(f_data[0])-int(arg[0])-xt[0])
    y = str(int(f_data[1])-int(arg[2])-xt[2]+deviation)
    w = str(int(f_data[2])+int(arg[0])+int(arg[1])+xt[0]+xt[1])
    h = str(int(f_data[3])+int(arg[3])+int(arg[2])+xt[2]+xt[3])

    command = "shutter -s="+(",").join([x,y,w,h])+" -e"
    subprocess.call(["/bin/bash", "-c", command])
    
verilen cevap Jacob Vlijm 28.01.2015 11:43
2

Belirli bir alanın ekran görüntüsünü almak için ÜstKrkt ve PrtScr düğmelerinin kombinasyonunu da kullanabilirsiniz. kullanıcı tanımlı boyutları ile.

Kompozisyona basın ve ekran görüntüsü için alan seçmek için değiştirilmiş imleci kullanın (artı işaretine benzer).

    
verilen cevap manishraj2011 03.02.2015 15:35
2

scrot komut satırı ekran yakalama yardımcı programıyla ekran görüntülerini alabilirsiniz:

scrot -s  

veya

scrot -ub -d 5  

İkinci komut, seçilen pencerenin etrafına, pencerenin boyutuna göre güzel bir genişliğe sahip bir kenarlık koyar. % Co_de% seçeneği gecikmeyi temsil eder ve ekran görüntüsünde olması gereken pencereyi seçmek için 5 saniye gecikme verir.

Şununla yükleyin:

sudo apt-get install scrot

Referans: Ubuntu El Kitabı - scrot

    
verilen cevap urosjarc 31.01.2015 14:54

Etiketlerdeki diğer soruları oku