commit ddc497f68d18c6cc2ee77c010ecd03a48031bebb Author: Chl Date: Tue Feb 6 01:05:11 2024 +0100 Initial commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9fba562 --- /dev/null +++ b/LICENSE @@ -0,0 +1,5 @@ +Copyright (C) 2024 by Chl + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4995bf3 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +This is a small script for the media player [mpv](https://github.com/mpv-player/mpv). It delays quitting at the end of the current item by pressing `alt+q`. + +## Installation + +``` +git clone https://code.bugness.org/chl/mpv_delayed_quit ~/.config/mpv/scripts/delayed_quit +``` +Or download the Lua file and put it in the directory `~/.config/mpv/scripts/delayed_quit/`. + + +## Usage + +* `alt+q` : make mpv quit at the end of the current file (or the counter-th file) in the playlist, press again to forgo, +* `alt+shift+q` : increment the counter, so mpv will quit one file later, +* `alt+a` : decrement the counter, so mpv will quit one file sooner. diff --git a/main.lua b/main.lua new file mode 100644 index 0000000..0cb32af --- /dev/null +++ b/main.lua @@ -0,0 +1,65 @@ +require "mp" +require "mp.msg" + +local settings = { + delayed_quit_cpt = 0, + delayed_quit_activating_when_modifying = true +} +(require "mp.options").read_options(settings, "delayed_quit") +local delayed_quit = false +local delayed_quit_cpt = settings.delayed_quit_cpt + +-- Functions for the key bindings +function delayed_quit_decrease() + -- Decrease (minimum is 0) + delayed_quit_cpt = math.max(delayed_quit_cpt - 1, 0) + + -- Eventually activate the delayed_quit + delayed_quit = delayed_quit or settings.delayed_quit_activating_when_modifying + + delayed_quit_little_debug() +end + +function delayed_quit_increase() + -- Increment the delayed counter + delayed_quit_cpt = delayed_quit_cpt + 1 + + -- Eventually activate the delayed_quit + delayed_quit = delayed_quit or settings.delayed_quit_activating_when_modifying + + delayed_quit_little_debug() +end + +function delayed_quit_switch() + delayed_quit = not delayed_quit + delayed_quit_little_debug() +end + +-- Little debug +function delayed_quit_little_debug() + mp.osd_message((delayed_quit and "" or "(disabled) ") .. "Quitting after " .. delayed_quit_cpt .. " file(s).") +end + +-- Hooks +function hook_should_we_quit() + if delayed_quit then + if delayed_quit_cpt <= 0 then + mp.command("quit") + + -- Little debug + mp.msg.log("info", "As requested, quitting now.") + else + delayed_quit_cpt = delayed_quit_cpt - 1 + end + end +end + +-- Register our little hook +mp.add_hook("on_after_end_file", 50, hook_should_we_quit) + +-- Add the key binding +-- We add a name so a user can remap it in its input.conf like this : +-- y script-binding delayed_quit_switch +mp.add_key_binding("alt+q", "delayed_quit_switch", delayed_quit_switch) +mp.add_key_binding("alt+shift+q", "delayed_quit_increase", delayed_quit_increase) +mp.add_key_binding("alt+a", "delayed_quit_decrease", delayed_quit_decrease)