Paepoi » PyGObject Tips » PyGObject Tips | スクリーンショットを保存
PyGObject Tips | スクリーンショットを保存
# 最終更新日 2019.09.14
単独ページに整理、Wayland 関連の追記。
下記は X.org でないと動作しません。
Wayland では Gnome Shell の機能を呼び出し、X.org でも動く。
GNOME 以外で使えるかどうかは試していません。
単独ページに整理、Wayland 関連の追記。
下記は X.org でないと動作しません。
#!/usr/bin/env python3
# Wayland では動作しません
import gi
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk
rootwin = Gdk.get_default_root_window()
x, y, w, h = rootwin.get_geometry()
pixbuf = Gdk.pixbuf_get_from_window(rootwin, x, y, w, h)
pixbuf.savev('screenshot.png', 'png', ['compression'], ['9'])
Wayland では Gnome Shell の機能を呼び出し、X.org でも動く。
GNOME 以外で使えるかどうかは試していません。
#!/usr/bin/env python3
from gi.repository import GLib, Gio
HOME = GLib.get_home_dir()
class App(Gio.Application):
'''
use mainloop
Since there is no window, it ends as it is.
'''
def __init__(self):
Gio.Application.__init__(self)
def do_startup(self):
Gio.Application.do_startup(self)
connection = self.get_dbus_connection()
'''
# 全画面 (カーソルを含める, フラッシュ, ファイル名)
connection.call_sync(
'org.gnome.Shell.Screenshot',
'/org/gnome/Shell/Screenshot',
'org.gnome.Shell.Screenshot',
'Screenshot',
GLib.Variant('(bbs)', (False, True, f'{HOME}/全画面.png')),
None, 0, -1)
'''
#'''
# ウインドウ (ボーダー, カーソルを含める, フラッシュ, ファイル名)
connection.call_sync(
'org.gnome.Shell.Screenshot',
'/org/gnome/Shell/Screenshot',
'org.gnome.Shell.Screenshot',
'ScreenshotWindow',
GLib.Variant('(bbbs)', (True, True, True, f'{HOME}/ウインドウ.png')),
None, 0, -1)
#'''
'''
# 範囲 (x, y, width, height, フラッシュ, ファイル名)
connection.call_sync(
'org.gnome.Shell.Screenshot',
'/org/gnome/Shell/Screenshot',
'org.gnome.Shell.Screenshot',
'ScreenshotArea',
GLib.Variant('(iiiibs)', (0, 0, 500, 100, True, f'{HOME}/範囲.png')),
None, 0, -1)
'''
def do_activate(self):
pass
app = App()
app.run()
Copyright(C) sasakima-nao All rights reserved 2002 --- 2025.