我知道使用 gtk2 可以使用 gtk2hs 将屏幕捕获到 pixbuf 中。此处给出了解决方案:Haskell 中的屏幕截图?. 问题是 gtk3 中没有 pixbufGetFromDrawable (至少在 gtk2hs 中)。有人可以推荐这个问题的解决方案吗?我需要这个用于linux,而不是windows。为方便起见,此处复制了链接中的解决方案。
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Gdk.Screen
import System.Environment
main = do
[fileName] <- getArgs
initGUI
Just screen <- screenGetDefault
window <- screenGetRootWindow screen
size <- drawableGetSize window
origin <- drawWindowGetOrigin window
Just pxbuf <- pixbufGetFromDrawable window ((uncurry . uncurry Rectangle) origin size)
pixbufSave pxbuf filename "png" []