DISPLAY=:0 import -window root "$HOME/Pictures/screenshot.png"
(import
ImageMagickスイートの一部です)を使用してみましたが、黒い画面が表示されるだけです。
アプリを開いてさまざまな言語でそのスクリーンショットを自動化し、言語を変更するには、lightdmを再起動する必要があるため、これを行いたいと思います。したがって、ttyで実行して、スクリプトの実行を続けます...
DISPLAY=:0 import -window root "$HOME/Pictures/screenshot.png"
(import
ImageMagickスイートの一部です)を使用してみましたが、黒い画面が表示されるだけです。
アプリを開いてさまざまな言語でそのスクリーンショットを自動化し、言語を変更するには、lightdmを再起動する必要があるため、これを行いたいと思います。したがって、ttyで実行して、スクリプトの実行を続けます...
回答:
既存の回答に加えて、端末でスクリーンショットをASCIIで表示するには:
xwd -root -display :0 | convert - jpg:- | jp2a - --colors
(x11-apps
for xwd
、imagemagick
for convert
およびが必要ですjp2a
。)
xwd -root -display :0 | convert - jpg:- > screenshot.jpg
xwd
ことが明示的に入力フォーマットを指定した方が良いですので、マジックナンバーからフォーマットを: xwd -root -display :0 | convert xwd:- jpg:- | jp2a - --colors
xwd -name "$win_name" | convert xwd:- /tmp/"$win_name".png
、どこwin_name=$(xwininfo -tree -root | grep 'The Window Name Im Looking For' | awk -F\" '{print $2}')
これが私のために働いたものです。
chvt 7
DISPLAY=:0 import -window root "$HOME/Pictures/screenshot.png
chvt 1
シャッターを使ってみてください
DISPLAY=:0 shutter -f -e -n -o "$HOME/Pictures/screenshot.png"
ルートウィンドウが使用されていないため、インポートは機能しません。合成すると「バイパス」されます(各ウィンドウは独自のバッファでレンダリングされ、その後、「ルート」ウィンドウでレンダリングされた古い方法ではなく、ディスプレイに多重化されます)。
さらに、スクリーンショットを撮る前にVTYがアクティブであることを確認する必要があります。たとえば、
#!/bin/bash
X :1 &
export DISPLAY=:1
sleep 10 # give time for X to start
gedit &
sleep 10 # give time for app to do something
chvt 8 # ensure the X display is active
shutter -f -e -n -o "$HOME/Pictures/screenshot.png" # screenshot
killall xorg # terminate X
X :0 & sleep 50 && sudo chvt 6 && program & sleep 5 && screenshot
(完全に偽のスクリプトに注意してください)。
同じコンピューターに座って、Xサーバーが実行されているのとは異なる仮想端末から実行することはできません。
それはそこに説明されている:http://www.karlrunge.com/x11vnc/faq.html#faq-linuxvc。見積もり:
Q-108: Linux Virtual Terminals(VT's)を使用して、ユーザーセッション間の 'Fast User Switching'を実装します(たとえば、BettyはCtrl-Alt-F7、BobbyはCtrl-Alt-F8、SidはCtrl-Altです-F1:これらのキーストロークを使用してセッションを切り替えます。)x11vncに接続しているVNCビューアーのビューが完全に黒であるか、更新されないか、Xセッションx11vncが接続されていない限りピクセルがめちゃくちゃになるのはなぜですか?アクティブVT?
これは、アプリケーション(この場合はXサーバープロセス)がアクティブなVT(仮想コンソールの場合はVCと呼ばれることもあります)にない場合に「うまく再生する」方法と関係があるようです。つまり、キーボードから読み取るべきではありませんまたは、アクティブなVTがない限り、マウスまたはビデオディスプレイを管理します。XGetImage()呼び出しは最終的にビデオハードウェア自体からフレームバッファデータを取得する必要があるように見えるため、XセッションがVTをアクティブに制御していない限り、x11vncのポーリングは機能しません。
これを回避する簡単な方法はないようです。この場合、xwd(1)でも動作しません(試してみてください)。XFree86/ Xorg Xサーバーなどでは、より低いレベルで何かを行う必要があります。また、シャドウフレームバッファー(ビデオフレームバッファーのコピーがメインメモリに保持されている)を使用しても、問題は修正されないようです(最終確認2007)。
ワークステーションに誰も座っていなくて、VTをXセッションに関連付けられたものにリモートで切り替えたい場合(x11vncが正しくポーリングできるように)、chvt(1)コマンド、たとえば「chvt 7」を使用できます。 VT#7の場合。