Stage new submodule locations

This commit is contained in:
2025-08-17 16:59:41 -07:00
parent e4afe79832
commit cfc6ac22e5
48 changed files with 12753 additions and 0 deletions

View File

@@ -0,0 +1,130 @@
# ModernZ Controls Guide
![modernz_osc_controls](https://github.com/user-attachments/assets/deb52cf2-8288-4f40-9993-9b7cb3e863e0)
## Button Interactions
Below is a list that explains the OSC buttons function depending on how you interact with them.
> [!NOTE]
> Middle clicking performs the same function as `Shift+left mouse button`, allowing for one handed use
### Title
| Action | Function |
| ----------------- | ------------------------- |
| Left mouse click | Show `media-title` in OSD |
| Right mouse click | Show `filename` in OSD |
### Seekbar
| Action | Function |
| ---------------------- | ---------------------------------- |
| Left mouse click | Seek to position (using keyframes) |
| Shift+left mouse click | Seek to the exact position |
| Right mouse click | Seek to the head of chosen chapter |
| Scroll wheel | Seek forward/backwards |
### Play Time Codes
| Action | Function |
| ----------------- | -------------------------------------------- |
| Left mouse click | Display remaining time instead of total time |
| Right mouse click | Display time in milliseconds |
### Play/Pause
| Action | Function |
| ----------------- | -------------------------- |
| Left mouse click | Toggle play/pause |
| Right mouse click | Toggle enable/disable loop |
### Playlist Track Back/Forward
| Action | Function |
| ---------------------- | ----------------------- |
| Left mouse click | Play previous/next file |
| Right mouse click | Show a simple playlist |
| Shift+left mouse click | Show a simple playlist |
### Skip Chapter Back/Forward
| Action | Function |
| ----------------------- | ------------------------------------- |
| Left mouse click | Go to previous/next chapter |
| Right mouse click | Show an interactive chapters list |
| Shift+left mouse click | Jump forwards/backwards by 60 seconds |
| Shift+right mouse click | Show a simple chapters list |
### Jump Back/Forward
| Action | Function |
| ---------------------- | ----------------------------------------------------------------------- |
| Left mouse click | Jumps forwards/backwards by 10 seconds (or by `user_opts` `jumpamount`) |
| Right mouse click | Jumps forwards/backwards by 1 minute |
| Shift+left mouse click | Skips to the previous/next frame (and pauses) |
### Audio/Subtitle
| Action | Function |
| ---------------------- | ----------------------------------- |
| Left mouse click | Show an interactive tracks list |
| Right mouse click | Cycle audio/subtitle track |
| Shift+left mouse click | Show a simple tracks list |
| Scroll wheel | Cycle audio/subtitle tracks up/down |
### Playlist
| Action | Function |
| ----------------- | ---------------------------- |
| Left mouse click | Show an interactive playlist |
| Right mouse click | Show a simple playlist |
### Volume
| Action | Function |
| ---------------- | --------------------- |
| Left mouse click | Toggle mute on/off |
| Scroll wheel | Change volume up/down |
### Screenshot
| Action | Function |
| ---------------- | ----------------- |
| Left mouse click | Take a screenshot |
### Pin
| Action | Function |
| ----------------- | -------------------------------------- |
| Left mouse click | Toggle pin and toggle window border |
| Right mouse click | Toggle pin without changing the border |
### Loop
| Action | Function |
| ----------------- | -------------------- |
| Left mouse click | Toggle loop on/off |
### Speed Control
| Action | Function |
| ---------------------- | ----------------------------------------- |
| Left mouse click | Increase playing speed by increments of 1 |
| Right mouse click | Reset playing speed to normal |
| Scroll wheel | Inc/decrease playing speed by 0.25 |
### Download
| Action | Function |
| ----------------- | ------------------------------------ |
| Left mouse click | Download the current video/image URL |
## Keybinds
| Function | Input Command | Description |
| ------------------- | -------------------------------------------------- | ------------------------------------------------------------------------ |
| Persistent Progress | `w script-binding modernz/progress-toggle` | Toggle persistent progress bar |
| Show OSC | `x script-message-to modernz osc-show` | Show OSC on command without needing to move mouse |
| OSC Visibility | `y script-message-to modernz osc-visibility cycle` | OSC visibility mode. Accepts `never`, `auto`, `always` and `cycle` |
| Logo on Idle | `z script-message-to modernz osc-idlescreen cycle` | The visibility of the mpv logo on idle. Accepts `yes`, `no`, and `cycle` |

View File

@@ -0,0 +1,37 @@
# ModernZ FAQ
Answers for frequently asked questions and helpful guidelines that might be useful to you. If you can't find your answer here, don't heistate to [open an issue](https://github.com/Samillion/ModernZ/issues/new/choose).
## Personalized requests
You can most likely achieve this by implementing an auto profile in your `mpv.conf` that applies specific ModernZ user options in certain or specific scenarios.
**Auto-profile examples:**
- [Custom fullscreen](https://github.com/Samillion/ModernZ/issues/206#issuecomment-2470315786)
- [PIP mode](https://github.com/Samillion/ModernZ/issues/91#issuecomment-2442569584)
- [Image viewer mode](https://github.com/Samillion/ModernZ/blob/main/docs/IMAGE_VIEWER.md#recommended)
- [Custom mode](https://github.com/Samillion/ModernZ/blob/main/docs/USER_OPTS.md#auto-profile)
## Issues or bug reports
- ModernZ is compatible with the latest mpv builds, please make sure to update your mpv to see if the issue persists
- Search open and closed issues to see if it has been posted before and resolved or not
- Make sure that the issue cannot be reproduced on mpv's stock OSC
- When posting a bug report, please include a log file with the issue reproduced so we can track the issue the best we can.
- Log file: `mpv sample.mp4 --log-file=output.txt` [[details](https://mpv.io/manual/master/#options-log-file)]
- Attach the log file, do not paste the text within the issue
- Describe the issue in detail as much as you can, preferably with exact steps on how to re-produce the issue.
## Feature requests
Many features and options were added compared to the `modern` origin osc, as shown in [features](/#features) and [user options](/docs/USER_OPTS.md) page.
We have reached a point that we've become very picky on adding new options, features or adjusting osc behavior, as it can be overwhelming for both users and maintainers if too many were added or adjusted.
That doesn't mean we won't add anything new, it just means that we're trying to be practical and realistic. Whether the change will benefit all, or a very specific use case.
## Useful links
- [ModernZ controls manual ](/docs/CONTROLS.md)
- [ModernZ user options manual](/docs/USER_OPTS.md)
- [ModernZ translations and locales](/docs/TRANSLATIONS.md)
- [ModernZ extra scripts](/#extras)
- [ModernZ history](/#history)
- [mpv manual](https://mpv.io/manual/master/)
Thank you.

View File

@@ -0,0 +1,56 @@
# ModernZ Image Viewer
A minimal layout is automatically applied when viewing images while using ModernZ osc, which also features zoom controls.
![image_mode_modernz](https://github.com/user-attachments/assets/49a860e9-298d-4af3-9303-6747e0fccc26)
## Zoom Controls
Below is a list that explains the zoom control functions depending on how you interact with them.
| Action | Function |
| ----------------- | -------------------------- |
| Left mouse click | Zoom in/out of image |
| Right mouse click | Reset zoom level to normal |
| Mouse Wheel | Zoom in/out of image |
## Recommended
The following options will help you enhance and automate your image viewing experience with mpv. Feel free to adjust them to your liking or use case.
Reset values per viewed file, should be added in top level within `mpv.conf`:
```EditorConfig
reset-on-next-file=video-zoom,panscan,video-unscaled,video-rotate,video-align-x,video-align-y
```
[Auto profiles](https://mpv.io/manual/master/#conditional-auto-profiles) that apply useful [mpv options](https://mpv.io/manual/master/#options) and [ModernZ options](/docs/USER_OPTS.md) when viewing images:
```EditorConfig
[video]
profile-cond=p["current-tracks/video"] and not p["current-tracks/video"].image
profile-restore=copy-equal
taskbar-progress=yes
[image]
profile-desc=ModernZ osc Image Viewer mode
profile-cond=p["current-tracks/video"] and p["current-tracks/video"].image and not p["current-tracks/video"].albumart
profile-restore=copy-equal
video-recenter=yes
taskbar-progress=no
stop-screensaver=no
prefetch-playlist=yes
video-aspect-override=no
image-display-duration=inf
title=${media-title} [${?width:${width}x${height}}]
script-opts-append=modernz-fade_alpha=50
script-opts-append=modernz-window_title=yes
script-opts-append=modernz-bottomhover_zone=50
script-opts-append=modernz-windowcontrols_title=${media-title} [${?width:${width}x${height}}]
```
## Useful
If you want to extend functionality even further to turn mpv into a full fledged image viewer, we recommend the following Github repository:
- https://github.com/guidocella/mpv-image-config
It allows you to have options such as:
- Cursor centeric zoom with scroll wheel
- Pan image, drag to pan and use gestures
- Double page mode (ie: manga)

View File

@@ -0,0 +1,38 @@
## Interactive Menus
ModernZ integrates mpv's [console.lua](https://github.com/mpv-player/mpv/blob/master/player/lua/console.lua) and [select.lua](https://github.com/mpv-player/mpv/blob/master/player/lua/select.lua), which have been built in mpv starting v0.39+. Can be used in:
- Playlist button
- Subtitles button
- Audio track button
- Chapter title (chapters list)
- Volume control button (audio device selector) [right mouse button]
For details on how to interact with these buttons, view the [controls manual](/docs/CONTROLS.md).
https://github.com/user-attachments/assets/a7330f29-c26d-4f5a-8797-d20f97211fdc
## Notes
> [!IMPORTANT]
> If the menus are not functioning as shown in the video, it is most likely because you're using an outdated version of mpv
- Check [mpv installation sources](https://mpv.io/installation/) on the official website for up-to-date packages
- Use [mpv-build](https://github.com/mpv-player/mpv-build) to get the latest release
- Use a simplified alternative function as shown below until you're able to update mpv
#### Alternative function: (for outdated mpv)
You can add the following to `modernz.conf` in your `script-opts` folder to at least get some functionality until you update mpv
```EditorConfig
title_mbtn_left_command=show-text ${filename}
playlist_mbtn_left_command=show-text ${playlist} 3000
audio_track_mbtn_left_command=cycle audio
sub_track_mbtn_left_command=cycle sub
chapter_title_mbtn_left_command=show-text ${chapter-list} 3000
```
> [!TIP]
> If the font size for the interactive playlist is too small, you can add the following in your `mpv.conf`
>
> ```ini
> # change font size for console and select
> script-opts-append=console-font_size=25
> ```

View File

@@ -0,0 +1,141 @@
# ModernZ Translations Guide
This guide provides everything you need to use, modify, and add translations for the ModernZ OSC interface.
## Table of Contents
- [Quick Start](#quick-start)
- [Available Languages](#available-languages)
- [Adding a New Language](#adding-a-new-language)
- [Updating Existing Translations](#updating-existing-translations)
- [Translation Keys Reference](#translation-keys-reference)
- [Contributing Translations](#contributing)
## Quick Start
To get started with translations:
1. **Locate the translation file:** Open the `modernz-locale.json` file from the repository (typically found at [modernz-locale.json](/extras/locale/modernz-locale.json)).
2. **Edit Translations:** Use the following format to add or modify translations:
```json
{
"language-code": {
"idle": "Your translation",
"na": "Your translation",
},
}
```
Replace `"language-code"` with your language code (e.g. `"es"` for Spanish).
## Available Languages
ModernZ currently has translations for the following languages:
- French (fr)
- German (de)
- Spanish (es)
- Polish (pl)
- Japanese (jp)
- Simplified Chinese (zh)
- Arabic (ar)
- Russian (ru)
## Adding a New Language
1. **Get the translation file**: If you haven't already, download the `modernz-locale.json` file.
2. **Open the file**: Open `modernz-locale.json` in a text editor.
3. **Choose a language code**: Pick a unique code representing your language (e.g. `"it"` for Italian).
4. **Copy an existing template**: Use an existing language section as a base. For example, use the English template:
```json
{
"en": {
"idle": "Drop files or URLs here to play",
"na": "Not available",
"video": "Video",
"audio": "Audio",
"subtitle": "Subtitle",
"no_subs": "No subtitles available",
"no_audio": "No audio tracks available",
"playlist": "Playlist",
"no_playlist": "Playlist is empty",
"chapter": "Chapter",
"ontop": "Pin Window",
"ontop_disable": "Unpin Window",
"loop_enable": "Loop",
"loop_disable": "Disable Loop",
"speed_control": "Speed Control",
"screenshot": "Screenshot",
"stats_info": "Information",
"cache": "Cache",
"buffering": "Buffering",
"zoom_in": "Zoom In",
"zoom_out": "Zoom Out",
"download": "Download",
"download_in_progress": "Download in progress",
"downloading": "Downloading",
"downloaded": "Already downloaded",
"menu": "Menu",
},
}
```
5. **Translate the strings**: Replace the English text with your translations, keeping the same keys.
```json
{
"es": {
"idle": "Suelta archivos o URLs aquí para reproducirlos",
"na": "No disponible",
"video": "Video",
},
}
```
## Updating existing translations
1. **Find your language**: Locate the section for your language in `modernz-locale.json`.
2. **Update the strings**
3. **Test your changes**: Play a video to verify the translations work correctly.
## Translation Keys Reference
| Key | Description | Format Notes |
| ------------------------ | ----------------------- | --------------------------- |
| idle | Idle state message | Be brief |
| na | Not available | Menu label |
| video | Video label | Menu label |
| audio | Audio label | Menu label |
| subtitle | Subtitle label | Menu label |
| no_subs | No subtitles label | Menu label |
| no_audio | No audio label | Menu label |
| playlist | Playlist label | Menu label |
| no_playlist | No playlist label | Menu label |
| chapter | Chapter label | Menu label |
| ontop/ontop_disable | Window pin states | Action labels |
| loop_enable/loop_disable | Loop states | Action labels |
| screenshot | Screenshot label | Action label |
| stats_info | Information label | Menu label |
| cache | Information label | Text label |
| buffering | Information label | Text label |
| zoom_in | Information label | Menu label |
| zoom_out | Information label | Menu label |
| download | Information label | Menu label |
| download_in_progress | Information label | Menu label |
| downloading | Information label | Menu label |
| downloaded | Information label | Menu label |
| menu | Information label | Menu label |
## Contributing
If you'd like to share your translations with the community:
1. **Fork the repository**: Visit the ModernZ GitHub page (https://github.com/Samillion/ModernZ) and click "Fork" to create your own copy of the project.
2. **Edit the** `modernz-locale.json` **file** Add your translations to the file in your forked repository.
3. **Submit a Pull Request** Create a pull request on GitHub to propose your changes for review and integration.
Thank you for contributing ❤️ Every translation helps make the project better!

View File

@@ -0,0 +1,276 @@
# ModernZ User Options Guide
### Configuration File Location
Create `modernz.conf` in your mpv script-opts directory:
- Linux: `~/.config/mpv/script-opts/`
- Windows: `%APPDATA%/mpv/script-opts/`
- macOS: `~/Library/Application Support/mpv/script-opts/`
## Available Options
### Language and display
| Option | Value | Description |
| -------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| language | en | set language (for available options, see: [Translations](https://github.com/Samillion/ModernZ/blob/main/docs/TRANSLATIONS.md)) |
| icon_theme | fluent | set icon theme. accepts `fluent` or `material` |
| font | mpv-osd-symbols | font for the OSC (default: mpv-osd-symbols or the one set in mpv.conf) |
| idlescreen | yes | show mpv logo when idle |
| window_top_bar | auto | show OSC window top bar: `"auto"`, `"yes"`, or `"no"` (borderless/fullscreen) |
| showwindowed | yes | show OSC when windowed |
| showfullscreen | yes | show OSC when fullscreen |
| showonpause | yes | show OSC when paused |
| keeponpause | yes | disable OSC hide timeout when paused |
| greenandgrumpy | no | disable Santa hat in December |
### OSC behaviour and scaling
| Option | Value | Description |
| ----------------------- | ----- | ---------------------------------------------------------------------- |
| hidetimeout | 2000 | time (in ms) before OSC hides if no mouse movement |
| seek_resets_hidetimeout | yes | if seeking should reset the hidetimeout |
| fadeduration | 200 | fade-out duration (in ms), set to `"0"` for no fade |
| fadein | no | whether to enable fade-in effect |
| minmousemove | 0 | minimum mouse movement (in pixels) required to show OSC |
| bottomhover | yes | show OSC only when hovering at the bottom |
| bottomhover_zone | 130 | height of hover zone for bottomhover (in pixels) |
| osc_on_seek | no | show OSC when seeking |
| osc_on_start | no | show OSC on start of every file |
| mouse_seek_pause | yes | pause video while seeking with mouse move (on button hold) |
| force_seek_tooltip | no | force show seekbar tooltip on mouse drag, even if not hovering seekbar |
| vidscale | auto | scale osc with the video. (set to `"no"` to disable) |
| scalewindowed | 1.0 | osc scale factor when windowed |
| scalefullscreen | 1.0 | osc scale factor when fullscreen |
### Elements display
| Option | Value | Description |
| ----------------------- | ---------------- | -------------------------------------------------------------------------------- |
| show_title | yes | show title in the OSC (above seekbar) |
| title | `${media-title}` | title above seekbar format: `"${media-title}"` or `"${filename}"` |
| title_font_size | 24 | font size of the title text (above seekbar) |
| chapter_title_font_size | 14 | chapter title font size |
| show_chapter_title | yes | show chapter title (above seekbar) |
| chapter_fmt | %s | format for chapter display on seekbar hover (set to `"no"` to disable) |
| timetotal | yes | show total time instead of remaining time |
| timems | no | show timecodes with milliseconds |
| unicodeminus | no | use the Unicode minus sign in remaining time |
| time_format | dynamic | `"dynamic"` or `"fixed"`. shows MM:SS when possible, fixed always shows HH:MM:SS |
| time_font_size | 16 | font size of the time display |
| cache_info | no | show cached time information |
| cache_info_speed | no | show current cache speed per second |
| cache_info_font_size | 12 | font size of the time display |
| tooltip_font_size | 14 | tooltips font size |
### Title bar settings
| Option | Value | Description |
| -------------------- | ---------------- | ------------------------------------------------------------------------- |
| window_title | no | show window title in borderless/fullscreen mode |
| window_controls | yes | show window controls (close, minimize, maximize) in borderless/fullscreen |
| windowcontrols_title | `${media-title}` | same as title but for window_top_bar |
### Subtitle display settings
| Option | Value | Description |
| --------------------- | ----- | ---------------------------------------------------------------------- |
| raise_subtitles | yes | raise subtitles above the OSC when shown |
| raise_subtitle_amount | 125 | amount by which subtitles are raised when the OSC is shown (in pixels) |
### Buttons display and functionality
| Option | Value | Description |
| -------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| jump_buttons | yes | show "jump forward/backward 10 seconds" buttons |
| jump_amount | 10 | change the jump amount in seconds |
| jump_more_amount | 60 | change the jump amount in seconds when right-clicking jump buttons and shift-clicking chapter skip buttons |
| jump_icon_number | yes | show different icon for `5`, `10`, or `30` second jumps |
| jump_mode | relative | seek mode for jump buttons |
| jump_softrepeat | yes | enable continuous jumping when holding down seek buttons |
| chapter_skip_buttons | no | show the skip back and forward (chapter) buttons |
| chapter_softrepeat | yes | enable continuous skipping when holding down chapter skip buttons |
| track_nextprev_buttons | yes | show next/previous playlist track buttons |
| volume_control | yes | show mute button and volume slider |
| volume_control_type | linear | volume scale type: `"linear"` or `"logarithmic"` |
| playlist_button | yes | show playlist button: Left-click for simple playlist, Right-click for interactive playlist |
| hide_empty_playlist_button | yes | hide playlist button when no playlist exists |
| gray_empty_playlist_button | yes | gray out the playlist button when no playlist exists |
| download_button | yes | show download button on web videos (requires yt-dlp and ffmpeg) |
| download_path | ~~desktop/mpv | default download directory for videos. [Learn more about setting paths here](https://mpv.io/manual/master/#paths). |
| screenshot_button | no | show screenshot button |
| screenshot_flag | subtitles | Flag options for the screenshot button: `"subtitles"`, `"video"`, `"window"`, `"each-frame"`. [Find out more about these options](https://mpv.io/manual/master/#command-interface-screenshot-<flags>). |
| ontop_button | yes | show `window on top (pin)` button |
| loop_button | no | show `loop` button |
| speed_button | no | show speed control button |
| speed_button_click | 1 | speed change amount per click |
| speed_button_scroll | 0.25 | speed change amount on scroll |
| loop_in_pause | yes | enable looping by right-clicking pause |
| buttons_always_active | none | force buttons to always be active. can add: `playlist_prev`, `playlist_next` |
| info_button | yes | show `info (stats)` button |
| fullscreen_button | yes | show `fullscreen toggle` button |
| playpause_size | 28 | icon size for the play/pause button |
| midbuttons_size | 24 | icon size for the middle buttons |
| sidebuttons_size | 24 | icon size for the side buttons |
| zoom_control | yes | show zoom controls in image viewer mode |
| zoom_in_max | 4 | icon size for the side buttons |
| zoom_out_min | -1 | icon size for the side buttons |
### Colors and style
| Option | Value | Description |
| --------------------------------- | --------- | ------------------------------------------------------------------------------------------------- |
| osc_color | `#000000` | accent color of the OSC and title bar |
| window_title_color | `#FFFFFF` | color of the title in borderless/fullscreen mode |
| window_controls_color | `#FFFFFF` | color of the window controls (close, minimize, maximize) in borderless/fullscreen mode |
| windowcontrols_close_hover | `#E81123` | color of close window control on hover |
| windowcontrols_max_hover | `#F8BC3A` | color of maximize window controls on hover |
| windowcontrols_min_hover | `#43CB44` | color of minimize window controls on hover |
| title_color | `#FFFFFF` | color of the title (above seekbar) |
| seekbarfg_color | `#FB8C00` | color of the seekbar progress and handle |
| seekbarbg_color | `#94754F` | color of the remaining seekbar |
| seekbar_cache_color | `#918F8E` | color of the cache ranges on the seekbar |
| volumebar_match_seek_color | no | match volume bar color with seekbar color (ignores `side_buttons_color`) |
| time_color | `#FFFFFF` | color of the timestamps (below seekbar) |
| chapter_title_color | `#FFFFFF` | color of the chapter title (above seekbar) |
| cache_info_color | `#FFFFFF` | color of the cache information |
| side_buttons_color | `#FFFFFF` | color of the side buttons (audio, subtitles, playlist, etc.) |
| middle_buttons_color | `#FFFFFF` | color of the middle buttons (skip, jump, chapter, etc.) |
| playpause_color | `#FFFFFF` | color of the play/pause button |
| held_element_color | `#999999` | color of the element when held down (pressed) |
| hover_effect_color | `#FB8C00` | color of a hovered button when `hover_effect` includes `"color"` |
| thumbnail_border_color | `#111111` | color of the border for thumbnails (with thumbfast) |
| thumbnail_border_outline | `#404040` | color of the border outline for thumbnails |
| fade_alpha | 130 | alpha of the OSC background box (0 to disable) |
| fade_blur_strength | 100 | blur strength for the OSC alpha fade. caution: high values can take a lot of CPU time to render |
| fade_transparency_strength | 0 | use with "fade_blur_strength=0" to create a transparency box |
| window_fade_alpha | 100 | alpha of the window title bar (0 to disable) |
| window_fade_blur_strength | 100 | blur strength for the window title bar. caution: high values can take a lot of CPU time to render |
| window_fade_transparency_strength | 0 | use with "window_fade_blur_strength=0" to create a transparency box |
| thumbnail_border | 3 | width of the thumbnail border (for thumbfast) |
| thumbnail_border_radius | 3 | rounded corner radius for thumbnail border (0 to disable) |
### Button hover effects
| Option | Value | Description |
| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------ |
| hover_effect | size,glow,color | active button hover effects: `"glow"`, `"size"`, `"color"`; can use multiple separated by commas |
| hover_button_size | 115 | relative size of a hovered button if "size" effect is active |
| button_glow_amount | 5 | glow intensity when `"glow"` hover effect is active |
| hover_effect_for_sliders | yes | apply hover size effect to slider handle |
### Tooltips and hints
| Option | Value | Description |
| ------------------------------ | ----- | --------------------------------------------------------------- |
| tooltips_for_disabled_elements | yes | enable tooltips for disabled buttons and elements |
| tooltip_hints | yes | enable text hints for info, loop, ontop, and screenshot buttons |
### Progress bar settings
| Option | Value | Description |
| ------------------------ | -------- | -------------------------------------------------------------------------- |
| seek_handle_size | 0.8 | size ratio of the seekbar handle (range: 0 ~ 1) |
| seekrange | yes | show seek range overlay |
| seekrangealpha | 150 | transparency of the seek range |
| livemarkers | yes | update chapter markers on the seekbar when duration changes |
| seekbarkeyframes | no | use keyframes when dragging the seekbar |
| nibbles_top | yes | top chapter nibbles above seekbar |
| nibbles_bottom | yes | bottom chapter nibbles below seekbar |
| nibbles_style | triangle | chapter nibble style. `triangle`, `bar` or `single-bar` |
| automatickeyframemode | yes | automatically set keyframes for the seekbar based on video length |
| automatickeyframelimit | 600 | videos longer than this (in seconds) will have keyframes on the seekbar |
| persistentprogress | no | always show a small progress line at the bottom of the screen |
| persistentprogressheight | 17 | height of the persistent progress bar |
| persistentbuffer | no | show buffer status on web videos in the persistent progress line |
### Miscellaneous settings
| Option | Value | Description |
| ----------------------------- | ----------------- | ------------------------------------------------------------- |
| visibility | auto | only used at init to set visibility_mode(...) |
| visibility_modes | never_auto_always | visibility modes to cycle through, modes are separated by `_` |
| tick_delay | 0.03 | minimum interval between OSC redraws (in seconds) |
| tick_delay_follow_display_fps | no | use display FPS as the minimum redraw interval |
### Elements Position
Useful when adjusting font size or type, this will help you change the affected elements position
| Option | Value | Description |
| ----------------------------- | ------ | ---------------------------------------------------------------------- |
| title_height | 96 | title height position above seekbar |
| title_with_chapter_height | 108 | title height position if a chapter title is below it |
| chapter_title_height | 91 | chapter title height position above seekbar |
| time_codes_height | 35 | time codes height position |
| time_codes_centered_height | 57 | time codes height position with portrait window |
| tooltip_height_offset | 2 | tooltip height position offset |
| tooltip_left_offset | 5 | if tooltip contains many characters, it is moved to the left by offset |
| portrait_window_trigger | 1000 | portrait window width trigger to move some elements |
| hide_volume_bar_trigger | 1150 | hide volume bar trigger window width |
| notitle_osc_h_offset | 25 | osc height offset if title above seekbar is disabled |
| nochapter_osc_h_offset | 10 | osc height offset if chapter title is disabled or doesn't exist |
| seek_hover_tooltip_h_offset | 0 | seek hover timecodes tooltip height position offset |
| osc_height | 132 | osc height without offsets |
### Mouse Commands (User Options)
Customize the button function based on mouse actions.
| Type | Option | Function |
| ----------------------------- | -------------------------------- | ------------------------------------------------------------------------------- |
| Title (above seekbar) | title_mbtn_left_command | `script-binding stats/display-page-5` |
| | title_mbtn_mid_command | `show-text ${path}` |
| | title_mbtn_right_command | `script-binding select/select-watch-history; script-message-to modernz osc-hide`|
| Playlist Button | playlist_mbtn_left_command | `script-binding select/select-playlist; script-message-to modernz osc-hide` |
| | playlist_mbtn_right_command | `show-text ${playlist} 3000` |
| Volume Control | vol_ctrl_mbtn_left_command | `no-osd cycle mute` |
| | vol_ctrl_mbtn_right_command | `script-binding select/select-audio-device; script-message-to modernz osc-hide` |
| | vol_ctrl_wheel_down_command | `no-osd add volume -5` |
| | vol_ctrl_wheel_up_command | `no-osd add volume 5` |
| Audio Button | audio_track_mbtn_left_command | `script-binding select/select-aid; script-message-to modernz osc-hide` |
| | audio_track_mbtn_mid_command | `cycle audio down` |
| | audio_track_mbtn_right_command | `cycle audio` |
| | audio_track_wheel_down_command | `cycle audio` |
| | audio_track_wheel_up_command | `cycle audio down` |
| Subtitle Button | sub_track_mbtn_left_command | `script-binding select/select-sid; script-message-to modernz osc-hide` |
| | sub_track_mbtn_mid_command | `cycle sub down` |
| | sub_track_mbtn_right_command | `cycle sub` |
| | sub_track_wheel_down_command | `cycle sub` |
| | sub_track_wheel_up_command | `cycle sub down` |
| Chapter Skip Buttons | chapter_prev_mbtn_left_command | `add chapter -1` |
| | chapter_prev_mbtn_mid_command | `show-text ${chapter-list} 3000` |
| | chapter_prev_mbtn_right_command | `script-binding select/select-chapter; script-message-to modernz osc-hide` |
| | chapter_next_mbtn_left_command | `add chapter 1` |
| | chapter_next_mbtn_mid_command | `show-text ${chapter-list} 3000` |
| | chapter_next_mbtn_right_command | `script-binding select/select-chapter; script-message-to modernz osc-hide` |
| Chapter Title (below seekbar) | chapter_title_mbtn_left_command | `script-binding select/select-chapter; script-message-to modernz osc-hide` |
| | chapter_title_mbtn_right_command | `show-text ${chapter-list} 3000` |
| Playlist Skip Buttons | playlist_prev_mbtn_left_command | `playlist-prev` |
| | playlist_prev_mbtn_mid_command | `show-text ${playlist} 3000` |
| | playlist_prev_mbtn_right_command | `script-binding select/select-playlist; script-message-to modernz osc-hide` |
| | playlist_next_mbtn_left_command | `playlist-next` |
| | playlist_next_mbtn_mid_command | `show-text ${playlist} 3000` |
| | playlist_next_mbtn_right_command | `script-binding select/select-playlist; script-message-to modernz osc-hide` |
| Fullscreen Button | fullscreen_mbtn_left_command | `cycle fullscreen` |
| | fullscreen_mbtn_right_command | `cycle window-maximized` |
| Info Button | info_mbtn_left_command | `script-binding stats/display-page-1-toggle` |
### Auto Profile
Below is an example of an auto-profile in `mpv.conf` you can use to set any of ModernZ options based on certain conditions, in this case `when window is pinned or fullscreen`.
```ini
[ModernZ-Custom]
profile-desc=Apply ModernZ options on pin or fullscreen
profile-cond=ontop and ontop == true or fullscreen
profile-restore=copy-equal
script-opts-append=modernz-persistentprogress=yes
script-opts-append=modernz-seekbarfg_color=#FF0000
script-opts-append=modernz-bottomhover=no
#...etc
```
More information about auto profiles available on [mpv's manual](https://mpv.io/manual/master/#conditional-auto-profiles).