Knowledge Base

Preserving for the future: Shell scripts, AoC, and more

Lua script for mpv to keep xscreensaver from running

As noted in the file itself, this is adapted from MPV script that deactivates XScreensaver when video playback is active, and it was officially listed at User Scripts · mpv-player/mpv Wiki#lua-scripts

files/2024/listings/xscreensaver.lua (Source)

-- Ripped from https://gist.github.com/elenril/f8ff9475a7882b7a16cdd723c7dce150 and configured by bgstack15
-- linked at https://github.com/mpv-player/mpv/wiki/User-Scripts
-- this script periodically deactivates xscreensaver
-- when video playback is active
local function heartbeat()
    if mp.get_property_native("pause") or
       mp.get_property_native("idle")  or
       not mp.get_property_native("vo-configured") then
        return
    end
    mp.command_native_async(
        {
          name           = "subprocess",
          args           = { "xscreensaver-command", "-deactivate" },
          capture_stdout = true,
        },
        function () end)
end
mp.add_periodic_timer(10, heartbeat)
for _, prop in ipairs({"pause", "idle", "vo-configured"}) do
    mp.observe_property(prop, nil, heartbeat)
end

Tells mpv to keep running command xscreensaver-command -deactivate which simulates user activity. Ergo, it is designed actually for this use case.

You can place this file as ~/.config/mpv/scripts/xscreensaver.lua.

Comments