Wie mache ich einen Screenshot eines nicht aktiven Fensters? Wenn ich zwei Fenster habe, möchte ich den Screenshot des Fensters aufnehmen, das im Hintergrund ausgeführt wird.
Wie mache ich einen Screenshot eines nicht aktiven Fensters? Wenn ich zwei Fenster habe, möchte ich den Screenshot des Fensters aufnehmen, das im Hintergrund ausgeführt wird.
Antworten:
Um ein wenig auf frühere Antworten und Kommentare einzugehen, scheint die Fähigkeit, einen Screenshot eines nicht aktiven Fensters (wie vollständig oder teilweise ausgeblendet) aufzunehmen, vom Fenstermanager abzuhängen.
Verwenden Sie den folgenden (bereits angegebenen) Befehl:
import -window <windowid> image.png
oder
xwd -id <windowid> | convert xwd:- image.png
(Das -
of convert
ist für die Verwendung von Standardeingaben aus der Pipe vorgesehen und gibt xwd:
das Format der Eingabe an.) Unter Aufklärung (e17, getestet mit Fedora 19) scheint es möglich zu sein, einen Screenshot von:
Ich habe mit Openbox (gleiche Konfiguration) und KDE (mit einem alten Scientific Linux 4.8 und der neuesten Version von ImageMagick
(ja, unglaublich kompiliert…)) nachgefragt und in beiden Fällen zeigen Screenshots nur, was sich über den Anzeigeebenen befindet - das heißt nur was ist schon auf dem Bildschirm sichtbar.
Der Punkt ist, dass der import
Befehl prüft , ob das von zurückgegebene map_state
Feld XGetWindowAttributes
ist IsViewable
, und wenn nicht, einen Fehler zurückgibt. Man kann map_state
zB überprüfen mit:
xwininfo -id <windowid> | grep 'Map State'
Es scheint immer IsViewable
unter e17 zu sein, während es IsUnMapped
unter Openbox und KDE ist, sobald das Fenster minimiert ist oder was auch immer.
Ich bin mir zwar nicht sicher, warum der Screenshot mit e17 immer sauber ist, während er mit anderen Fenstern gemischt wird, wenn das Fenster teilweise mit anderen WMs wiederhergestellt wird, aber es hat natürlich auch mit der Art und Weise zu tun, wie das WM mit der Anzeige umgeht.
Wie auch immer, es ist eindeutig eine Frage von WM. Es wäre schön, eine Liste von WMs zu haben, die Screenshots von versteckten Fenstern machen können oder nicht - ich mache das nicht.
xwininfo | grep -i 'window id'
und auf das betreffende Fenster klicken.
Was meinst du mit "nicht aktiv"? "Den Fokus nicht haben" oder "von einem anderen Fenster versteckt"? Im ersten Fall macht Gimp dies ohne Probleme (Datei -> Erstellen -> Screenshot). Im zweiten Fall ist es schwieriger (wenn es überhaupt möglich ist).
import
(aus der ImageMagick-Suite) eine -window id
Option vorhanden ist. Wenn Sie die Fensterkennung kennen, die auch in der Befehlszeile funktionieren soll. Sie können die Fensterkennung mit abrufen xwininfo
, müssen dafür jedoch mindestens einmal die Maus verwenden.
für i in `xprop -root | grep" _NET_CLIENT_LIST_STACKING (WINDOW): Fenster-ID "| tr '#' ',' | tr ',' '\ n' | grep 0x`; do xwininfo -id $ i | grep "Window id"; done
Mit den oben genannten konnte ich die Windows-ID erhalten. und mit
xwininfoin der Lage, die Beschriftung oder den Namen oder Titel des Fensters zu finden.
import -window <window_ID> screenshot.png
Obwohl diese Antwort in einigen Situationen möglicherweise nicht wünschenswert ist, öffnet dieses Skript jedes Fenster auf dem aktuellen Desktop nacheinander, damit sie mit Ihrem Screenshot-Tool du jour als Screenshot angezeigt werden können.
#!/bin/bash
# raiseAll - Mark Belanger - raise all windows
# get the ID of the current desktop
thisDT=`wmctrl -d |grep ' \* ' | awk '{print $1}'`
echo Raising windows for desktop $thisDT
for window in `wmctrl -l |grep " $thisDT " | awk '{print $1}'`
do
echo Raising $window - put your screenshot command here
wmctrl -i -a $window
sleep 1
done