diff options
| author | A Farzat <a@farzat.xyz> | 2024-10-15 09:52:49 +0900 | 
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2024-10-21 15:54:01 +0900 | 
| commit | 70658a514603212514e6a3c2d73b54e761ee89a5 (patch) | |
| tree | dbd30b9b2bef6bb1c6cc450bcf92bea92ec27e2f /.config/mpv/scripts | |
| parent | debdff7e043ce2f9ef4da4809e6782ad7dc0bda2 (diff) | |
| download | dotfiles-70658a514603212514e6a3c2d73b54e761ee89a5.tar.gz dotfiles-70658a514603212514e6a3c2d73b54e761ee89a5.zip | |
Add mpv scripts
Diffstat (limited to '.config/mpv/scripts')
| -rw-r--r-- | .config/mpv/scripts/mpv_socket.lua | 58 | ||||
| -rw-r--r-- | .config/mpv/scripts/print_filenames.lua | 5 | 
2 files changed, 63 insertions, 0 deletions
| diff --git a/.config/mpv/scripts/mpv_socket.lua b/.config/mpv/scripts/mpv_socket.lua new file mode 100644 index 0000000..57c3705 --- /dev/null +++ b/.config/mpv/scripts/mpv_socket.lua @@ -0,0 +1,58 @@ +-- mpvSockets, one socket per instance, removes socket on exit + +package.path = mp.command_native({"expand-path", "~~/script-modules/?.lua;"})..package.path +local input = require "user-input-module" +local utils = require 'mp.utils' + +local sock_dir = os.getenv("MPV_SOCKET_DIR") or +  utils.join_path(os.getenv("XDG_CACHE_HOME") or +  utils.join_path(os.getenv("HOME"), ".cache"), +  "mpv_sockets") +mp.command_native({capture_stdout = true, capture_stderr = true, +args = {"mkdir", "-p", sock_dir}, name = "subprocess", playback_only = false}) + +local sock_file = utils.join_path(sock_dir, +mp.get_opt("mpv_socket") or utils.getpid()) + +mp.set_property("options/input-ipc-server", sock_file) + +local function check_active_socket(file_name) +  return mp.command_native({ +    name = "subprocess", +    capture_stdout = true, +    capture_stderr = true, +    args = {"nc", "-NU", file_name}, +    playback_only = false, +    stdin_data = '{ "command": ["get_property", "path"] }\n', +  }).status == 0 +end + +local function change_sockname() +  input.get_user_input(function(line, _) +    if line then +      local new_sock_file = utils.join_path(sock_dir, line) +      if check_active_socket(new_sock_file) then +        change_sockname() +      else +        mp.set_property("options/input-ipc-server", new_sock_file) +      end +    end +  end, { request_text = "set socket name:" }) +end + +mp.add_key_binding("alt+s", "NameIPCSocket", change_sockname) + +local function update_socket_name() +  local new_name = mp.get_property("options/input-ipc-server") +  if sock_file ~= new_name then +    os.remove(sock_file) +  end +  sock_file = new_name +end + +mp.observe_property("options/input-ipc-server", nil, update_socket_name) + +local function shutdown_handler() +  os.remove(mp.get_property("options/input-ipc-server")) +end +mp.register_event("shutdown", shutdown_handler) diff --git a/.config/mpv/scripts/print_filenames.lua b/.config/mpv/scripts/print_filenames.lua new file mode 100644 index 0000000..ba43d6b --- /dev/null +++ b/.config/mpv/scripts/print_filenames.lua @@ -0,0 +1,5 @@ +if mp.get_opt("print_filenames") == "yes" then +  for i = 0,mp.get_property("playlist-count")-1,1 +  do print("STARTFILE:= " .. mp.get_property("playlist/" .. i .. "/filename")) +  end +end | 
