hudfx_lnx/overlay.py
2026-04-25 13:09:44 +03:00

62 lines
1.9 KiB
Python

#!/usr/bin/env python3
import sys
import signal
from PyQt5.QtCore import Qt, QUrl, QTimer
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile, QWebEnginePage, QWebEngineSettings
from PyQt5.QtGui import QColor
def find_screen(app, width=2560, height=1440):
for screen in app.screens():
s = screen.size()
if s.width() == width and s.height() == height:
return screen
print(f"Warning: no {width}x{height} screen found, falling back to primary")
return app.primaryScreen()
class Overlay(QMainWindow):
def __init__(self, url, screen):
super().__init__()
self.setWindowFlags(
Qt.FramelessWindowHint |
Qt.WindowStaysOnTopHint |
Qt.Tool |
Qt.WindowTransparentForInput
)
self.setAttribute(Qt.WA_TranslucentBackground)
view = QWebEngineView()
profile = QWebEngineProfile(view) # off-the-record, no disk storage
page = QWebEnginePage(profile, view)
view.setPage(page)
view.page().setBackgroundColor(QColor(0, 0, 0, 0))
view.page().setAudioMuted(False)
settings = view.page().settings()
settings.setAttribute(QWebEngineSettings.PlaybackRequiresUserGesture, False)
settings.setAttribute(QWebEngineSettings.JavascriptEnabled, True)
view.load(QUrl(url))
self.setCentralWidget(view)
self.setGeometry(screen.geometry())
self.show()
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python3 overlay.py <url>")
sys.exit(1)
app = QApplication(sys.argv)
signal.signal(signal.SIGINT, signal.SIG_DFL)
timer = QTimer()
timer.start(200)
timer.timeout.connect(lambda: None)
screen = find_screen(app)
window = Overlay(sys.argv[1], screen)
sys.exit(app.exec_())