- Experimental gamescope support
This commit is contained in:
parent
e3a4a97f0d
commit
67bc4a1098
2 changed files with 25 additions and 1 deletions
|
|
@ -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):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue