mirror of
https://github.com/ksyasuda/rice.git
synced 2024-10-28 09:04:10 -07:00
107 lines
2.7 KiB
Lua
107 lines
2.7 KiB
Lua
|
msg = require("mp.msg")
|
||
|
opts = require("mp.options")
|
||
|
utils = require("mp.utils")
|
||
|
|
||
|
options = {
|
||
|
key = "D",
|
||
|
active = true,
|
||
|
client_id = "737663962677510245",
|
||
|
binary_path = "",
|
||
|
socket_path = "/tmp/mpvsocket",
|
||
|
use_static_socket_path = true,
|
||
|
autohide_threshold = 0
|
||
|
}
|
||
|
opts.read_options(options, "discord")
|
||
|
|
||
|
if options.binary_path == "" then
|
||
|
msg.fatal("Missing binary path in config file.")
|
||
|
os.exit(1)
|
||
|
end
|
||
|
|
||
|
function file_exists(path) -- fix(#23): use this instead of utils.file_info
|
||
|
local f = io.open(path, "r")
|
||
|
if f ~= nil then io.close(f) return true else return false end
|
||
|
end
|
||
|
|
||
|
if not file_exists(options.binary_path) then
|
||
|
msg.fatal("The specified binary path does not exist.")
|
||
|
os.exit(1)
|
||
|
end
|
||
|
|
||
|
version = "1.6.0"
|
||
|
msg.info(("mpv-discord v%s by tnychn"):format(version))
|
||
|
|
||
|
socket_path = options.socket_path
|
||
|
if not options.use_static_socket_path then
|
||
|
pid = utils.getpid()
|
||
|
filename = ("mpv-discord-%s"):format(pid)
|
||
|
if socket_path == "" then
|
||
|
socket_path = "/tmp/" -- default
|
||
|
end
|
||
|
socket_path = utils.join_path(socket_path, filename)
|
||
|
elseif socket_path == "" then
|
||
|
msg.fatal("Missing socket path in config file.")
|
||
|
os.exit(1)
|
||
|
end
|
||
|
msg.info(("(mpv-ipc): %s"):format(socket_path))
|
||
|
mp.set_property("input-ipc-server", socket_path)
|
||
|
|
||
|
cmd = nil
|
||
|
|
||
|
function start()
|
||
|
if cmd == nil then
|
||
|
cmd = mp.command_native_async({
|
||
|
name = "subprocess",
|
||
|
playback_only = false,
|
||
|
args = {
|
||
|
options.binary_path,
|
||
|
socket_path,
|
||
|
options.client_id
|
||
|
}
|
||
|
}, function() end)
|
||
|
msg.info("launched subprocess")
|
||
|
mp.osd_message("Discord Rich Presence: Started")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function stop()
|
||
|
mp.abort_async_command(cmd)
|
||
|
cmd = nil
|
||
|
msg.info("aborted subprocess")
|
||
|
mp.osd_message("Discord Rich Presence: Stopped")
|
||
|
end
|
||
|
|
||
|
if options.active then
|
||
|
mp.register_event("file-loaded", start)
|
||
|
end
|
||
|
|
||
|
mp.add_key_binding(options.key, "toggle-discord", function()
|
||
|
if cmd ~= nil then stop()
|
||
|
else start() end
|
||
|
end)
|
||
|
|
||
|
mp.register_event("shutdown", function()
|
||
|
if cmd ~= nil then stop() end
|
||
|
if not options.use_static_socket_path then
|
||
|
os.remove(socket_path)
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
if options.autohide_threshold > 0 then
|
||
|
local timer = nil
|
||
|
local t = options.autohide_threshold
|
||
|
mp.observe_property("pause", "bool", function(_, value)
|
||
|
if value == true then
|
||
|
timer = mp.add_timeout(t, function()
|
||
|
if cmd ~= nil then stop() end
|
||
|
end)
|
||
|
else
|
||
|
if timer ~= nil then
|
||
|
timer:kill()
|
||
|
timer = nil
|
||
|
end
|
||
|
if options.active and cmd == nil then start() end
|
||
|
end
|
||
|
end)
|
||
|
end
|