36 lines
1.2 KiB
Lua
36 lines
1.2 KiB
Lua
--[[
|
|
mpv_geometry_freezer.lua
|
|
Sets the geometry property when window size changes,
|
|
avoiding Windows' maximized windows detaching.
|
|
- AMM
|
|
]]--
|
|
local msg = require 'mp.msg'
|
|
|
|
local UPDATE_INTERVAL = 0.5
|
|
local screen_w, screen_h = mp.get_osd_size()
|
|
|
|
mp.add_periodic_timer(UPDATE_INTERVAL, function()
|
|
local new_screen_w, new_screen_h = mp.get_osd_size()
|
|
if new_screen_w ~= screen_w or new_screen_h ~= screen_h then
|
|
screen_w = new_screen_w
|
|
screen_h = new_screen_h
|
|
|
|
local geom_string = ("%dx%d"):format(screen_w, screen_h)
|
|
msg.debug("OSD resized: " .. geom_string .. ", setting geometry property")
|
|
mp.set_property_native("geometry", geom_string)
|
|
end
|
|
end)
|
|
#
|
|
local size_changed = false
|
|
|
|
mp.register_idle(function()
|
|
if not size_changed then return end
|
|
local ww, wh = mp.get_osd_size()
|
|
if not ww or ww <= 0 or not wh or wh <= 0 then return end
|
|
mp.set_property("geometry", string.format("%dx%d", ww, wh))
|
|
size_changed = false
|
|
end)
|
|
|
|
mp.observe_property("osd-width", "native", function() size_changed = true end)
|
|
mp.observe_property("osd-height", "native", function() size_changed = true end)
|