捕獲 Linux 圖形化登陸界面的截圖
在上一篇博客《重返 Linux 世界》中,我說 Linux Mint 17.2 的登陸界面比之前的要好看不少。作為佐證,我貼了一張 Linux Mint 登陸界面的截圖。
在日常使用中,我們的截圖操作都是在登陸系統之后進行的,比如捕獲一個窗口,捕獲指定區域,或者捕獲整個網頁。要給登陸界面截圖,那是在登陸之前就要做的操作,這可難倒我了。
之前沒有這樣的截圖需求,這次不妨各種手段都拿來嘗試一下。
首先想到的是延時截圖,比如在 kscreenshot 設置 10s 之后截圖,然后在截圖之前完成切換用戶并進入登陸界面的操作。結果是殘酷的,截出來的圖是黑屏。
GUI 的截圖解決方案不可用,我只好求助于 CLI。scrot 是一個大名鼎鼎的命令行截圖工具,支持延時截圖。我將延時截圖故伎重演,結果依然黑屏。
常規武器已然用盡,敵人卻依舊活蹦亂跳,這讓我情何以堪。
一番 Google 之后,發現一些線索,這個問題老早就有人提問了 [1] 。
我參考的是 Parto 的 回答 ,然后他的回答又是參考的別人家的博客 [2] 。
本來應該輕而易舉就搞定的,結果卻因為手殘,腳本中少寫了一些東西而折騰了半天。最終在 root 權限下面用這些命令捕獲了登錄界面的截圖。
chvt 8 sleep 5 DISPLAY=:0.0 XAUTHORITY=/var/lib/mdm/:0.Xauth xwd -root > /tmp/shot.xwd convert /tmp/shot.xwd /tmp/ss.png
這些命令最關鍵的地方,是第三行的 XAUTHORITY=/var/lib/mdm/
。不同的發行版,默認會使用不同的登錄管理器,比如 Ubuntu 用的是 lightdm,Kubuntu 用的是 kdm,Linux Mint 用的是 mdm,以 Gnome 為桌面環境的發行版用的是 gdm。
不同的登錄管理器,對應的 XAUTHORITY 也就不一樣。所以網上找到的資料中,有的是 XAUTHORITY=/var/run/lightdm/root/
,有的是 XAUTHORITY=/var/lib/gdm/
。那么問題來了,我們該如何確定當前的系統用的到底是哪個登錄管理器?
當然不能拍腦袋,要有理有據。一開始的時候我習慣性的以為我在用的 dm 是 kdm,結果就掉到坑里了。
其實很簡單,只需要把名字中包含 dm 的進程撈出來看一眼,就能確定命令該怎么寫了。
最后,美圖共賞~