- Experimental gamescope support

This commit is contained in:
Trigg 2021-10-11 16:32:23 +00:00
parent e3a4a97f0d
commit 67bc4a1098
2 changed files with 25 additions and 1 deletions

View file

@ -36,6 +36,9 @@ class Discover:
def __init__(self, rpc_file, args):
self.ind = None
self.tray = None
self.steamos = False
self.do_args(args)
self.create_gui()
@ -53,7 +56,6 @@ class Discover:
rpc_file = Gio.File.new_for_path(rpc_file)
monitor = rpc_file.monitor_file(0, None)
monitor.connect("changed", self.rpc_changed)
self.do_args(args)
Gtk.main()
@ -69,6 +71,8 @@ class Discover:
self.show_settings()
elif "--close" in data:
sys.exit(0)
elif "--steamos" in data:
self.steamos=True
def rpc_changed(self, _a=None, _b=None, _c=None, _d=None):
"""

View file

@ -18,6 +18,9 @@ import sys
import logging
import gi
import cairo
import Xlib
from Xlib.display import Display
from Xlib import X, Xatom
gi.require_version("Gtk", "3.0")
# pylint: disable=wrong-import-position,wrong-import-order
from gi.repository import Gtk, Gdk
@ -84,6 +87,22 @@ class OverlayWindow(Gtk.Window):
self.set_wayland_state()
self.show_all()
if discover.steamos:
display = Display()
atom = display.intern_atom("STEAM_EXTERNAL_OVERLAY")
opaq = display.intern_atom("_NET_WM_WINDOW_OPACITY")
topw = display.create_resource_object("window", self.get_toplevel().get_window().get_xid())
topw.change_property(atom,
Xatom.CARDINAL,8,
[1], X.PropModeReplace)
topw.change_property(opaq,
Xatom.CARDINAL,32,
[0xffffffff], X.PropModeReplace)
print("Setting STEAM_EXTERNAL_OVERLAY")
display.sync()
self.monitor = 0
self.align_right = True
self.align_vert = 1
@ -137,6 +156,7 @@ class OverlayWindow(Gtk.Window):
Create a custom input shape and tell it that all of the window is a cut-out
This allows us to have a window above everything but that never gets clicked on
"""
return
(width, height) = self.get_size()
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
surface_ctx = cairo.Context(surface)