Initial Version
This commit is contained in:
commit
bdf4330738
5 changed files with 383 additions and 0 deletions
62
overlay.py
Normal file
62
overlay.py
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
#!/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_())
|
||||
Loading…
Add table
Add a link
Reference in a new issue