Skip to content

stax76/mpv-scripts

Repository files navigation

Collection of mpv user scripts.

command_palette and search_menu are documented here, all other scripts are documented directly in the script via code comment at the beginning of the script.

  • powershell-completion - PowerShell command line completion.
  • command_palette - Searchable menu for bindings, playlist, chapters, profiles, audio/subtitle/video tracks, commands, properties, options, audio devices.
  • search_menu - Searchable menu for bindings, commands, properties, playlist entries and audio/subtitle tracks.
  • auto_mode.lua - Use mpv as video player, music player and image viewer.
  • delete_current_file.lua - Moves the currently playing file instantly to the recycle bin.
  • file_rating.lua - Writes a star rating to the filename of the currently playing file.
  • history.lua - Writes date, time, playtime and filename to a log file.
  • osm.lua - Shows a customizable on screen menu.
  • misc.lua
    • Show detailed media info on screen (Screenshot).
    • Cycle audio and subtitle tracks, include only languages you know.
    • Paste/Load/Append files/URLs from clipboard.
    • Jump to a random position in the playlist.
    • Navigate in playlist to next/previous/first/last file.
    • Restart mpv restoring the properties path, time-pos, pause and volume.
    • Execute Lua code from input.conf.
    • When seeking display position and duration like so: 70:00 / 80:00.
  • average_volume.lua - Records and restores the relative volume for music.

command_palette

command_palette

command_palette is a searchable menu for bindings, playlist, chapters, profiles, audio/subtitle/video tracks, commands, properties, options, audio devices.

Installation

  1. Save the script at: <mpv conf folder>/scripts/command_palette.lua
  2. Download extended-menu and save it at: <mpv conf folder>/script-modules/extended-menu.lua

Usage

Add bindings to input.conf:

Ctrl+p script-message-to command_palette show-command-palette "Command Palette"
F1     script-message-to command_palette show-command-palette "Bindings"
F2     script-message-to command_palette show-command-palette "Commands"
F3     script-message-to command_palette show-command-palette "Properties"
F4     script-message-to command_palette show-command-palette "Options"
F8     script-message-to command_palette show-command-palette "Playlist"
Alt+c  script-message-to command_palette show-command-palette "Chapters"
Alt+a  script-message-to command_palette show-command-palette "Audio Tracks"
Alt+s  script-message-to command_palette show-command-palette "Subtitle Tracks"
Alt+v  script-message-to command_palette show-command-palette "Video Tracks"
Alt+p  script-message-to command_palette show-command-palette "Profiles"
Alt+d  script-message-to command_palette show-command-palette "Audio Devices"

Dependencies

Showing audio and subtitle tracks requires the installation of the CLI tool mediainfo.

Credits

Related Projects

search_menu

About

search_menu is very similar to command_palette, it's based on the external tools Rofi (Linux) or terminal based on fzf (cross-platform).

It provides a searchable menu for bindings, commands, properties, playlist entries and audio/subtitle tracks.

Terminal search menu

Rofi search menu

Installation

See Dependencies section to install dependencies.

Save the search menu folder at <mpv conf folder>/scripts/search_menu/, it contains main.lua and a Python script.

Configuration

mpv.conf

Windows: input-ipc-server = \\.\pipe\mpvsocket

Linux: input-ipc-server = /tmp/mpvsocket

Conf file at <mpv conf folder>/scripts-opts/search_menu.conf:

#mode=gnome-terminal+sh    # Requires Linux and Gnome Terminal, default on Linux
#mode=alacritty+sh         # Requires Linux and Alacritty
#mode=rofi                 # Requires Linux and Rofi
#mode=alacritty+ns         # Requires Windows, Alacritty and Nushell
#mode=windows-terminal+ps  # Requires Windows and Windows Terminal, default on Windows
#mode=windows-terminal+ns  # Requires Windows, Windows Terminal and Nushell

On Windows Alacritty and Nushell have the advantage of a faster startup.

On Linux Alacritty has the advantage of not having any UI apart from the terminal.

Rofi has like mpv a steep learning curve.

input.conf:

F1 script-message-to search_menu show-search-menu binding        # Search Binding
F2 script-message-to search_menu show-search-menu binding-full   # Search Binding Full
F3 script-message-to search_menu show-search-menu command        # Search Command
F4 script-message-to search_menu show-search-menu property       # Search Property
F8 script-message-to search_menu show-search-menu playlist       # Search Playlist
Alt+a script-message-to search_menu show-search-menu audio-track # Search Audio Track
Alt+s script-message-to search_menu show-search-menu sub-track   # Search Subtitle Track

Dependencies

Which dependencies are required depend on which mode and feature is used.

  • Python - Always required.
  • Rofi - Required launcher app for rofi mode, depends on Linux and X11.
  • fzf - Required CLI tool for modes other than rofi (terminal modes).
  • MediaInfo - Required CLI tool to search audio or subtitle tacks.
  • Alacritty - Modern, simple and fast terminal emulator.
  • Nushell - Modern shell that starts 200 ms faster than PowerShell.

Usage

Invoke a menu via shortcut key, type a search keyword, use up/down key to select, enter key to confirm, escape key to close.

Screenshot misc.lua

misc.lua has various features, among them is printing media info on the screen.

media-info