Skip to content

Commit

Permalink
osc.lua: add idlescreen and osc-idlescreen
Browse files Browse the repository at this point in the history
This is mainly for other user scripts that may conflict with the osc
logo in some way. Although it is possible to listen for
shared-script-properties, this has many edge cases that could easily pop
up. A user could want other OSC things to happen at the same time (say
osc-message). They just don't want the logo. The idlescreen option
disables all idlescreen related things (including the santa hat) if it
is set to "no". A new script message (osc-idlescreen) is also added so
users can easily toggle the value (passing "cycle" or just explictly
setting "yes" or "no"). Some more discussion on this is found in the
below github issues.
mpv-player#10201
CogentRedTester/mpv-file-browser#55
  • Loading branch information
Dudemanguy authored and dyphire committed Feb 22, 2023
1 parent 3aa0404 commit 6a256e5
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 8 deletions.
9 changes: 9 additions & 0 deletions DOCS/man/osc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,11 @@ Configurable Options

Enable the OSC when fullscreen

``showidlescreen``
Default: yes

Show the mpv logo and message when idle

``scalewindowed``
Default: 1.0

Expand Down Expand Up @@ -418,6 +423,10 @@ to set auto mode (the default) with ``b``::
a script-message osc-visibility never
b script-message osc-visibility auto

``osc-idlescreen``
Controls the visibility of the mpv logo on idle. Valid arguments are ``yes``,
``no``, and ``cycle`` to toggle between yes and no.

``osc-playlist``, ``osc-chapterlist``, ``osc-tracklist``
Shows a limited view of the respective type of list using the OSC. First
argument is duration in seconds.
Expand Down
47 changes: 39 additions & 8 deletions player/lua/osc.lua
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ local utils = require 'mp.utils'
local user_opts = {
showwindowed = true, -- show OSC when windowed?
showfullscreen = true, -- show OSC when fullscreen?
idlescreen = true, -- show mpv logo on idle
scalewindowed = 1, -- scaling of the controller when windowed
scalefullscreen = 1, -- scaling of the controller when fullscreen
scaleforcedwindow = 2, -- scaling when rendered on a forced window
Expand Down Expand Up @@ -2579,23 +2580,27 @@ function tick()

local ass = assdraw.ass_new()
-- mpv logo
for i, line in ipairs(logo_lines) do
ass:new_event()
ass:append(line_prefix .. line)
if user_opts.idlescreen then
for i, line in ipairs(logo_lines) do
ass:new_event()
ass:append(line_prefix .. line)
end
end

-- Santa hat
if is_december and not user_opts.greenandgrumpy then
if is_december and user_opts.idlescreen and not user_opts.greenandgrumpy then
for i, line in ipairs(santa_hat_lines) do
ass:new_event()
ass:append(line_prefix .. line)
end
end

ass:new_event()
ass:pos(320, icon_y+65)
ass:an(8)
ass:append("Drop files or URLs to play here.")
if user_opts.idlescreen then
ass:new_event()
ass:pos(320, icon_y+65)
ass:an(8)
ass:append("Drop files or URLs to play here.")
end
set_osd(640, 360, ass.text)

if state.showhide_enabled then
Expand Down Expand Up @@ -2844,9 +2849,35 @@ function visibility_mode(mode, no_osd)
request_tick()
end

function idlescreen_visibility(mode, no_osd)
if mode == "cycle" then
if user_opts.idlescreen then
mode = "no"
else
mode = "yes"
end
end

if mode == "yes" then
user_opts.idlescreen = true
else
user_opts.idlescreen = false
end

utils.shared_script_property_set("osc-idlescreen", mode)

if not no_osd and tonumber(mp.get_property("osd-level")) >= 1 then
mp.osd_message("OSC logo visibility: " .. tostring(mode))
end

request_tick()
end

visibility_mode(user_opts.visibility, true)
mp.register_script_message("osc-visibility", visibility_mode)
mp.add_key_binding(nil, "visibility", function() visibility_mode("cycle") end)

mp.register_script_message("osc-idlescreen", idlescreen_visibility)

set_virt_mouse_area(0, 0, 0, 0, "input")
set_virt_mouse_area(0, 0, 0, 0, "window-controls")

0 comments on commit 6a256e5

Please sign in to comment.