一般在 Ubuntu Linux 中若要擷取螢幕的畫面,可以直接使用 Gimp 這個繪圖軟體的擷取螢幕功能即可,但是若是要抓取登入畫面就沒辦法使用一般的繪圖軟體來抓取,這時候可以使用 xwd 透過指令來抓取畫面,然後再使用 imagemagick 的 convert 指令轉換圖檔。
這裡我們就要介紹如何使用這兩個指令工具,在命令列中擷取 Linux 的登入畫面。
首先安裝 imagemagick:
sudo apt-get install imagemagick
接著建立一個簡單的 script 檔,他的功用就是抓取螢幕的畫面
echo 'chvt 7; sleep 5; DISPLAY=:0 XAUTHORITY=/run/lightdm/root/:0 xwd -root; chvt 1' > /tmp/shot.sh
這裡的 XAUTHORITY 所指定的檔案有時後會因為不同的環境而不同,可能要自己注意。而 chvt 7 與 chvt 1 則是切換 virtual terminal 的指令,上面這個指令會先切換至 virtual terminal 7,也就是視窗環境的登入畫面,等待 5 秒後擷取畫面,再切換回 virtual terminal 1。
接下來就是要開始抓去畫面了,這時候你必須把桌面登出,讓畫面呈現準備登入的狀態(因為就是要抓取登入畫面啊)。
接著,按下 Ctrl + Alt + F1,這時候就會切換到文字模式(console),在文字模式下輸入帳號密碼登入。
如果不想在同一台電腦使用文字模式,也可以使用 SSH 從別台電腦遠端連線進來。
接著開始擷取畫面,執行:
sudo bash /tmp/shot.sh > /tmp/shot.xwd
這樣登入畫面就會被擷取出來,並儲存在 shot.xwd 這個檔案中,這時候就可以離開文字模式了,登出之後,再按 Ctrl + Alt + F7 就可以回到 XWindow 的視窗環境。
接著要把 xwd 圖檔轉換為一般常用的 JPG 檔:
convert -quality 50 /tmp/shot.xwd /tmp/shot.jpg
也可以轉換為 PNG 檔:
convert /tmp/shot.xwd /tmp/shot.png
這樣就大公告成了!