1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.2 KiB

import math
import sys
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk # noqa
import cairo # noqa
class TestWin(Gtk.Window):
WINDOW_POPUP = 1
def __init__(self):
Gtk.Window.__init__(self, type=self.WINDOW_POPUP)
self._default_monitor = 0
self.make_fullscreen()
self.label = Gtk.Label(label="Hallo! :)")
self.label.show()
self.add(self.label)
self.make_rgba()
self.set_app_paintable(True)
self.connect("draw", self.on_draw)
self.show()
self.make_untouchable()
def make_rgba(self):
self.screen = self.get_screen()
self.visual = self.screen.get_rgba_visual()
if self.visual is None or not self.screen.is_composited():
print(
"WARNING: You do not appear to be running a composite manager"
", transparency not available"
)
else:
self.set_visual(self.visual)
def make_fullscreen(self):
geo = self.get_screen_size(self._default_monitor)
scale = (1.05, 6)
x, y, w, h = (
geo.x + geo.width / 2 - geo.width / scale[0] / 2,
geo.y,
geo.width / scale[0],
geo.height / scale[1],
)
self.move(x, y)
self.resize(w, h)
print(f"geometry: @{x:.0f},{y:.0f} {w:.0f}x{h:.0f}")
def get_screen_size(self, monitor):
return self.get_screen().get_monitor_geometry(monitor)
def on_draw(self, widget, cr):
# make everything transparent
cr.set_source_rgba(1.0, 1.0, 1.0, 0.1)
cr.set_operator(cairo.OPERATOR_SOURCE)
cr.paint()
cr.set_operator(cairo.OPERATOR_OVER)
# draw the circle
w, h = self.get_size()
cr.translate(w / 2, h / 2)
cr.set_source_rgba(0.7, 0.3, 0.0, 0.6)
cr.arc(0, 0, 10, 0, 2 * math.pi)
cr.stroke_preserve()
cr.fill()
def make_untouchable(self):
self.input_shape_combine_region(cairo.Region(cairo.RectangleInt(0, 0, 0, 0)))
def run(self):
Gtk.main()
return 0
if __name__ == "__main__":
app = TestWin()
sys.exit(app.run())