mirror of
https://github.com/jellyfin/jellyfin-mpv-shim.git
synced 2024-11-27 00:00:37 +00:00
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
import win32gui
|
|
import logging
|
|
|
|
log = logging.getLogger('win_utils')
|
|
|
|
def windowEnumerationHandler(hwnd, top_windows):
|
|
top_windows.append((hwnd, win32gui.GetWindowText(hwnd)))
|
|
|
|
def raise_mpv():
|
|
# This workaround is madness. Apparently SetForegroundWindow
|
|
# won't work randomly, so I have to call ShowWindow twice.
|
|
# Once to hide the window, and again to successfully raise the window.
|
|
try:
|
|
top_windows = []
|
|
fg_win = win32gui.GetForegroundWindow()
|
|
win32gui.EnumWindows(windowEnumerationHandler, top_windows)
|
|
for i in top_windows:
|
|
if " - mpv" in i[1].lower():
|
|
if i[0] != fg_win:
|
|
win32gui.ShowWindow(i[0], 6) # Minimize
|
|
win32gui.ShowWindow(i[0], 9) # Un-minimize
|
|
break
|
|
|
|
except Exception:
|
|
log.error("Could not raise MPV.", exc_info=True)
|
|
|
|
def mirror_act(state):
|
|
try:
|
|
top_windows = []
|
|
win32gui.EnumWindows(windowEnumerationHandler, top_windows)
|
|
for i in top_windows:
|
|
if "Jellyfin MPV Shim Mirror" in i[1]:
|
|
win32gui.ShowWindow(i[0], 9 if state else 6)
|
|
break
|
|
|
|
except Exception:
|
|
log.error("Could not raise/lower MPV mirror.", exc_info=True)
|