Repository files navigation

ModernZ - A Sleek Alternative OSC for mpv

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

modernz_preview

Installation »
Configuration · Controls · OSC Language · Extra Scripts

Features

  • 🎨 Modern, customizable interface with multiple layouts, themes, and icon styles [options]
  • 🖱️ Independent hover zone for top bar (window controls bar) and bottom bar (OSC)
  • 📷 Image Viewer mode with zoom controls [details]
  • 🎛️ Buttons: download, playlist, speed control, screenshot, pin, loop, shuffle, and more. [details]
  • 📄 Interactive menus for playlist, subtitles, chapters, audio tracks, and audio devices
  • 🌐 Multi-language support with JSON locale integration
  • ⌨️ Configurable controls [details]
  • 🖼️ Video thumbnail previews with thumbfast
preview_features_button_md

Customization

ModernZ provides a wide range of customization options, including multiple layouts, themes, icon styles, color adjustments, and much more.

Layouts

Choose the layout that suits your preference using the layout option in your modernz.conf, which accepts: default, compact, mini, and seekbar

default
layout_default
compact
layout_compact
mini
layout_mini
seekbar
layout_seekbar

Themes

You can also change the icon theme to fluent or material to match your preferred style by using the icon_theme option in your modernz.conf.

fluent
theme_fluent
material
theme_material

Icon Styles

Both fluent and material themes have different icon styles as well. By using the icon_style option, you can choose mixed, filled, or outline.

fluent
StylePreview
mixedicon_style_fluent_mixed
filledicon_style_fluent_filled
outlineicon_style_fluent_outline
material
StylePreview
mixedicon_style_material_mixed
filledicon_style_material_filled
outlineicon_style_material_outline

Seek Bar

If you find the seek bar too thin or too thick, you can easily adjust its size using the seekbar_height option. Available values include small, medium, large, and xlarge.

smallmedium (Default)
seekbar_height_smallseekbar_height_medium
largexlarge
seekbar_height_largeseekbar_height_xlarge

Chapter Markers

You can change the chapter markers style by using the nibbles_style option, which accepts: gap, triangle, bar, and single-bar

gap (Default)triangle
chapter_marker_gapchapter_marker_triangle
barsingle-bar
chapter_marker_barchapter_marker_singlebar

Colors

Not a fan of white buttons and text? You have complete control to customize colors to perfectly reflect your style.

Colors
modernz_colors_top
modernz_colors_bottom

See the Color Customization section in the configuration guide for details on how to customize colors and buttons.

Installation

  1. Disable Stock OSC

    • Add osc=no in your mpv.conf
    • (OPTIONAL) Add title-bar=no in your mpv.conf for a clean look without the native window top bar
  2. Copy Files

    • Place modernz.lua in your mpv scripts directory
    • Place modernz-icons.ttf in your mpv fonts directory
    • (OPTIONAL) Place modernz-locale.json in your mpv script-opts directory
    • (OPTIONAL) Place thumbfast.lua in your mpv scripts directory
  3. Locations

Linux: ~/.config/mpv/
Windows: C:/Users/%username%/AppData/Roaming/mpv/
macOS: ~/Library/Application Support/mpv/
  1. Folder Structure [mpv manual]
📁 mpv/
├── 📁 fonts/
│ └── 📄 modernz-icons.ttf
├── 📁 script-opts/
│ ├── 📄 modernz.conf
│ └── 📄 modernz-locale.json (optional)
└── 📁 scripts/
├── 📄 modernz.lua
└── 📄 thumbfast.lua (optional)

Configuration

  • Place modernz.conf in the /script-opts folder to customize settings

    • You could download modernz.conf with all the default options
  • Alternatively, you can create a short configuration of the options you want changed only:

# Short configuration example# Seekbar color (hex format)seekbarfg_color=#B7410E# Interface optionsspeed_button=yestitle=${media-title}icon_theme=fluenticon_style=outline

For a full list of options, check out the detailed list here.

Controls

Button Interactions

  • Left click: Primary action
  • Right click: Secondary action
  • Middle click/Shift+Left click: Alternative action

Note

Middle clicking performs the same function as Shift+left mouse button, allowing for one-handed use

For a full list of interactions, check out the Button Interactions Guide.

Keybinds

ModernZ doesn't set keybinds by default to avoid interfering with your current setup. You can add keybinds in input.conf if you prefer:

v script-binding modernz/visibility # Cycle visibility modes
V script-message-to modernz osc-visibility cycle # Set a visibility mode: cycle, auto, always, never
w script-binding modernz/progress-toggle # Toggle persistent progress
x script-message-to modernz osc-show # Show OSC
y script-message-to modernz osc-hide # Hide OSC
z script-message-to modernz osc-idlescreen # Toggle idle screen

Translations

ModernZ is currently available in English, but you can easily switch it to your preferred language! Here's how:

  1. Download the locale pack

Grab the modernz-locale.json file from this repository. This file holds translations for various languages.

  1. Add the locales to mpv

Copy the downloaded modernz-locale.json file to your mpv /script-opts folder.

  1. Choose your language

Adjust or add the language option in your modernz.conf to your preferred language.

# Example configuration in modernz.conf# Set language to Simplified Chineselanguage=zh

Need More Info?

For a complete list of available languages, contribution guidelines, and in-depth translation documentation, head over to the TRANSLATIONS.md.

Extras

The following scripts are maintained by me. Feel free to use them if they're useful to you.

  • Open-File - Open files, add subtitles, or add audio tracks directly from mpv via the Windows file dialog
  • Pause-Indicator-Lite - A simple script that displays an indicator on pause
  • PiP-Lite - Add a PiP mode (Picture-in-Picture) via the ModernZ pin button or when ontop is enabled
  • ytdlAutoFormat - A simple mpv script to automatically change ytdl-format (yt-dlp) for specified domains
  • BoxtoWide - A simple mpv script to change the aspect-ratio of video files/streams to a specific target ratio automatically

For even more useful scripts, check out the mpv User Scripts Wiki. It offers a wide range of community-contributed scripts to enhance your mpv experience.

History

Why fork yet again?

  • Add extensive feature support, including color customization, advanced options, and locale integration
  • Integrate mpv's console and select functionality to OSC
    • An approach that later inspired adoption in mpv’s stock OSC (#1, #2)
  • Introduce a dedicated layout optimized for image viewing. details
  • Add modern and modern-compact layouts and icon themes support
  • Refactor the project to align with mpv’s stock OSC standards, ensuring long-term compatibility
  • Remove legacy bugs and redundant code to improve maintainability and stability

In essence, to maintain and revive the modern-osc origin.

Having said that, ModernZ still uses parts of the old code, and every previous and current fork author and contributor deserves credit (including mpv's stock osc), which is why they are mentioned in detail.

Credits:

  • Material Symbols by Google — Apache 2.0
  • Fluent System Icons by Microsoft — MIT(some icons modified or created to suit the OSC's needs)
  • mpv and their osc.lua, as ModernZ osc was re-based on the stock osc standards and applies updates from it
  • All modern osc origin and their forks as mentioned in history
  • All contributors, testers and users that helped directly or indirectly with ModernZ osc ❤️

HH-AA

- In quiet memory, always.
- Somewhere beyond time, we'll meet again.
c7dbd158

About

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

Topics

Resources

Code of conduct

Contributing

Stars

1.2k stars

Watchers

10 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

ModernZ - A Sleek Alternative OSC for mpv

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

modernz_preview

Installation »
Configuration · Controls · OSC Language · Extra Scripts

Features

  • 🎨 Modern, customizable interface with multiple layouts, themes, and icon styles [options]
  • 🖱️ Independent hover zone for top bar (window controls bar) and bottom bar (OSC)
  • 📷 Image Viewer mode with zoom controls [details]
  • 🎛️ Buttons: download, playlist, speed control, screenshot, pin, loop, shuffle, and more. [details]
  • 📄 Interactive menus for playlist, subtitles, chapters, audio tracks, and audio devices
  • 🌐 Multi-language support with JSON locale integration
  • ⌨️ Configurable controls [details]
  • 🖼️ Video thumbnail previews with thumbfast
preview_features_button_md

Customization

ModernZ provides a wide range of customization options, including multiple layouts, themes, icon styles, color adjustments, and much more.

Layouts

Choose the layout that suits your preference using the layout option in your modernz.conf, which accepts: default, compact, mini, and seekbar

default
layout_default
compact
layout_compact
mini
layout_mini
seekbar
layout_seekbar

Themes

You can also change the icon theme to fluent or material to match your preferred style by using the icon_theme option in your modernz.conf.

fluent
theme_fluent
material
theme_material

Icon Styles

Both fluent and material themes have different icon styles as well. By using the icon_style option, you can choose mixed, filled, or outline.

fluent
StylePreview
mixedicon_style_fluent_mixed
filledicon_style_fluent_filled
outlineicon_style_fluent_outline
material
StylePreview
mixedicon_style_material_mixed
filledicon_style_material_filled
outlineicon_style_material_outline

Seek Bar

If you find the seek bar too thin or too thick, you can easily adjust its size using the seekbar_height option. Available values include small, medium, large, and xlarge.

smallmedium (Default)
seekbar_height_smallseekbar_height_medium
largexlarge
seekbar_height_largeseekbar_height_xlarge

Chapter Markers

You can change the chapter markers style by using the nibbles_style option, which accepts: gap, triangle, bar, and single-bar

gap (Default)triangle
chapter_marker_gapchapter_marker_triangle
barsingle-bar
chapter_marker_barchapter_marker_singlebar

Colors

Not a fan of white buttons and text? You have complete control to customize colors to perfectly reflect your style.

Colors
modernz_colors_top
modernz_colors_bottom

See the Color Customization section in the configuration guide for details on how to customize colors and buttons.

Installation

  1. Disable Stock OSC

    • Add osc=no in your mpv.conf
    • (OPTIONAL) Add title-bar=no in your mpv.conf for a clean look without the native window top bar
  2. Copy Files

    • Place modernz.lua in your mpv scripts directory
    • Place modernz-icons.ttf in your mpv fonts directory
    • (OPTIONAL) Place modernz-locale.json in your mpv script-opts directory
    • (OPTIONAL) Place thumbfast.lua in your mpv scripts directory
  3. Locations

Linux: ~/.config/mpv/
Windows: C:/Users/%username%/AppData/Roaming/mpv/
macOS: ~/Library/Application Support/mpv/
  1. Folder Structure [mpv manual]
📁 mpv/
├── 📁 fonts/
│ └── 📄 modernz-icons.ttf
├── 📁 script-opts/
│ ├── 📄 modernz.conf
│ └── 📄 modernz-locale.json (optional)
└── 📁 scripts/
├── 📄 modernz.lua
└── 📄 thumbfast.lua (optional)

Configuration

  • Place modernz.conf in the /script-opts folder to customize settings

    • You could download modernz.conf with all the default options
  • Alternatively, you can create a short configuration of the options you want changed only:

# Short configuration example# Seekbar color (hex format)seekbarfg_color=#B7410E# Interface optionsspeed_button=yestitle=${media-title}icon_theme=fluenticon_style=outline

For a full list of options, check out the detailed list here.

Controls

Button Interactions

  • Left click: Primary action
  • Right click: Secondary action
  • Middle click/Shift+Left click: Alternative action

Note

Middle clicking performs the same function as Shift+left mouse button, allowing for one-handed use

For a full list of interactions, check out the Button Interactions Guide.

Keybinds

ModernZ doesn't set keybinds by default to avoid interfering with your current setup. You can add keybinds in input.conf if you prefer:

v script-binding modernz/visibility # Cycle visibility modes
V script-message-to modernz osc-visibility cycle # Set a visibility mode: cycle, auto, always, never
w script-binding modernz/progress-toggle # Toggle persistent progress
x script-message-to modernz osc-show # Show OSC
y script-message-to modernz osc-hide # Hide OSC
z script-message-to modernz osc-idlescreen # Toggle idle screen

Translations

ModernZ is currently available in English, but you can easily switch it to your preferred language! Here's how:

  1. Download the locale pack

Grab the modernz-locale.json file from this repository. This file holds translations for various languages.

  1. Add the locales to mpv

Copy the downloaded modernz-locale.json file to your mpv /script-opts folder.

  1. Choose your language

Adjust or add the language option in your modernz.conf to your preferred language.

# Example configuration in modernz.conf# Set language to Simplified Chineselanguage=zh

Need More Info?

For a complete list of available languages, contribution guidelines, and in-depth translation documentation, head over to the TRANSLATIONS.md.

Extras

The following scripts are maintained by me. Feel free to use them if they're useful to you.

  • Open-File - Open files, add subtitles, or add audio tracks directly from mpv via the Windows file dialog
  • Pause-Indicator-Lite - A simple script that displays an indicator on pause
  • PiP-Lite - Add a PiP mode (Picture-in-Picture) via the ModernZ pin button or when ontop is enabled
  • ytdlAutoFormat - A simple mpv script to automatically change ytdl-format (yt-dlp) for specified domains
  • BoxtoWide - A simple mpv script to change the aspect-ratio of video files/streams to a specific target ratio automatically

For even more useful scripts, check out the mpv User Scripts Wiki. It offers a wide range of community-contributed scripts to enhance your mpv experience.

History

Why fork yet again?

  • Add extensive feature support, including color customization, advanced options, and locale integration
  • Integrate mpv's console and select functionality to OSC
    • An approach that later inspired adoption in mpv’s stock OSC (#1, #2)
  • Introduce a dedicated layout optimized for image viewing. details
  • Add modern and modern-compact layouts and icon themes support
  • Refactor the project to align with mpv’s stock OSC standards, ensuring long-term compatibility
  • Remove legacy bugs and redundant code to improve maintainability and stability

In essence, to maintain and revive the modern-osc origin.

Having said that, ModernZ still uses parts of the old code, and every previous and current fork author and contributor deserves credit (including mpv's stock osc), which is why they are mentioned in detail.

Credits:

  • Material Symbols by Google — Apache 2.0
  • Fluent System Icons by Microsoft — MIT(some icons modified or created to suit the OSC's needs)
  • mpv and their osc.lua, as ModernZ osc was re-based on the stock osc standards and applies updates from it
  • All modern osc origin and their forks as mentioned in history
  • All contributors, testers and users that helped directly or indirectly with ModernZ osc ❤️

HH-AA

- In quiet memory, always.
- Somewhere beyond time, we'll meet again.
c7dbd158

About

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

Topics

Resources

Code of conduct

Contributing

Stars

1.2k stars

Watchers

10 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ModernZ - A Sleek Alternative OSC for mpv

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

modernz_preview

Installation »
Configuration · Controls · OSC Language · Extra Scripts

Features

  • 🎨 Modern, customizable interface with multiple layouts, themes, and icon styles [options]
  • 🖱️ Independent hover zone for top bar (window controls bar) and bottom bar (OSC)
  • 📷 Image Viewer mode with zoom controls [details]
  • 🎛️ Buttons: download, playlist, speed control, screenshot, pin, loop, shuffle, and more. [details]
  • 📄 Interactive menus for playlist, subtitles, chapters, audio tracks, and audio devices
  • 🌐 Multi-language support with JSON locale integration
  • ⌨️ Configurable controls [details]
  • 🖼️ Video thumbnail previews with thumbfast
preview_features_button_md

Customization

ModernZ provides a wide range of customization options, including multiple layouts, themes, icon styles, color adjustments, and much more.

Layouts

Choose the layout that suits your preference using the layout option in your modernz.conf, which accepts: default, compact, mini, and seekbar

default
layout_default
compact
layout_compact
mini
layout_mini
seekbar
layout_seekbar

Themes

You can also change the icon theme to fluent or material to match your preferred style by using the icon_theme option in your modernz.conf.

fluent
theme_fluent
material
theme_material

Icon Styles

Both fluent and material themes have different icon styles as well. By using the icon_style option, you can choose mixed, filled, or outline.

fluent
StylePreview
mixedicon_style_fluent_mixed
filledicon_style_fluent_filled
outlineicon_style_fluent_outline
material
StylePreview
mixedicon_style_material_mixed
filledicon_style_material_filled
outlineicon_style_material_outline

Seek Bar

If you find the seek bar too thin or too thick, you can easily adjust its size using the seekbar_height option. Available values include small, medium, large, and xlarge.

smallmedium (Default)
seekbar_height_smallseekbar_height_medium
largexlarge
seekbar_height_largeseekbar_height_xlarge

Chapter Markers

You can change the chapter markers style by using the nibbles_style option, which accepts: gap, triangle, bar, and single-bar

gap (Default)triangle
chapter_marker_gapchapter_marker_triangle
barsingle-bar
chapter_marker_barchapter_marker_singlebar

Colors

Not a fan of white buttons and text? You have complete control to customize colors to perfectly reflect your style.

Colors
modernz_colors_top
modernz_colors_bottom

See the Color Customization section in the configuration guide for details on how to customize colors and buttons.

Installation

  1. Disable Stock OSC

    • Add osc=no in your mpv.conf
    • (OPTIONAL) Add title-bar=no in your mpv.conf for a clean look without the native window top bar
  2. Copy Files

    • Place modernz.lua in your mpv scripts directory
    • Place modernz-icons.ttf in your mpv fonts directory
    • (OPTIONAL) Place modernz-locale.json in your mpv script-opts directory
    • (OPTIONAL) Place thumbfast.lua in your mpv scripts directory
  3. Locations

Linux: ~/.config/mpv/
Windows: C:/Users/%username%/AppData/Roaming/mpv/
macOS: ~/Library/Application Support/mpv/
  1. Folder Structure [mpv manual]
📁 mpv/
├── 📁 fonts/
│ └── 📄 modernz-icons.ttf
├── 📁 script-opts/
│ ├── 📄 modernz.conf
│ └── 📄 modernz-locale.json (optional)
└── 📁 scripts/
├── 📄 modernz.lua
└── 📄 thumbfast.lua (optional)

Configuration

  • Place modernz.conf in the /script-opts folder to customize settings

    • You could download modernz.conf with all the default options
  • Alternatively, you can create a short configuration of the options you want changed only:

# Short configuration example# Seekbar color (hex format)seekbarfg_color=#B7410E# Interface optionsspeed_button=yestitle=${media-title}icon_theme=fluenticon_style=outline

For a full list of options, check out the detailed list here.

Controls

Button Interactions

  • Left click: Primary action
  • Right click: Secondary action
  • Middle click/Shift+Left click: Alternative action

Note

Middle clicking performs the same function as Shift+left mouse button, allowing for one-handed use

For a full list of interactions, check out the Button Interactions Guide.

Keybinds

ModernZ doesn't set keybinds by default to avoid interfering with your current setup. You can add keybinds in input.conf if you prefer:

v script-binding modernz/visibility # Cycle visibility modes
V script-message-to modernz osc-visibility cycle # Set a visibility mode: cycle, auto, always, never
w script-binding modernz/progress-toggle # Toggle persistent progress
x script-message-to modernz osc-show # Show OSC
y script-message-to modernz osc-hide # Hide OSC
z script-message-to modernz osc-idlescreen # Toggle idle screen

Translations

ModernZ is currently available in English, but you can easily switch it to your preferred language! Here's how:

  1. Download the locale pack

Grab the modernz-locale.json file from this repository. This file holds translations for various languages.

  1. Add the locales to mpv

Copy the downloaded modernz-locale.json file to your mpv /script-opts folder.

  1. Choose your language

Adjust or add the language option in your modernz.conf to your preferred language.

# Example configuration in modernz.conf# Set language to Simplified Chineselanguage=zh

Need More Info?

For a complete list of available languages, contribution guidelines, and in-depth translation documentation, head over to the TRANSLATIONS.md.

Extras

The following scripts are maintained by me. Feel free to use them if they're useful to you.

  • Open-File - Open files, add subtitles, or add audio tracks directly from mpv via the Windows file dialog
  • Pause-Indicator-Lite - A simple script that displays an indicator on pause
  • PiP-Lite - Add a PiP mode (Picture-in-Picture) via the ModernZ pin button or when ontop is enabled
  • ytdlAutoFormat - A simple mpv script to automatically change ytdl-format (yt-dlp) for specified domains
  • BoxtoWide - A simple mpv script to change the aspect-ratio of video files/streams to a specific target ratio automatically

For even more useful scripts, check out the mpv User Scripts Wiki. It offers a wide range of community-contributed scripts to enhance your mpv experience.

History

Why fork yet again?

  • Add extensive feature support, including color customization, advanced options, and locale integration
  • Integrate mpv's console and select functionality to OSC
    • An approach that later inspired adoption in mpv’s stock OSC (#1, #2)
  • Introduce a dedicated layout optimized for image viewing. details
  • Add modern and modern-compact layouts and icon themes support
  • Refactor the project to align with mpv’s stock OSC standards, ensuring long-term compatibility
  • Remove legacy bugs and redundant code to improve maintainability and stability

In essence, to maintain and revive the modern-osc origin.

Having said that, ModernZ still uses parts of the old code, and every previous and current fork author and contributor deserves credit (including mpv's stock osc), which is why they are mentioned in detail.

Credits:

  • Material Symbols by Google — Apache 2.0
  • Fluent System Icons by Microsoft — MIT(some icons modified or created to suit the OSC's needs)
  • mpv and their osc.lua, as ModernZ osc was re-based on the stock osc standards and applies updates from it
  • All modern osc origin and their forks as mentioned in history
  • All contributors, testers and users that helped directly or indirectly with ModernZ osc ❤️

HH-AA

- In quiet memory, always.
- Somewhere beyond time, we'll meet again.
c7dbd158

About

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

Topics

Resources

Code of conduct

Contributing

Stars

1.2k stars

Watchers

10 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ModernZ - A Sleek Alternative OSC for mpv

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

modernz_preview

Installation »
Configuration · Controls · OSC Language · Extra Scripts

Features

  • 🎨 Modern, customizable interface with multiple layouts, themes, and icon styles [options]
  • 🖱️ Independent hover zone for top bar (window controls bar) and bottom bar (OSC)
  • 📷 Image Viewer mode with zoom controls [details]
  • 🎛️ Buttons: download, playlist, speed control, screenshot, pin, loop, shuffle, and more. [details]
  • 📄 Interactive menus for playlist, subtitles, chapters, audio tracks, and audio devices
  • 🌐 Multi-language support with JSON locale integration
  • ⌨️ Configurable controls [details]
  • 🖼️ Video thumbnail previews with thumbfast
preview_features_button_md

Customization

ModernZ provides a wide range of customization options, including multiple layouts, themes, icon styles, color adjustments, and much more.

Layouts

Choose the layout that suits your preference using the layout option in your modernz.conf, which accepts: default, compact, mini, and seekbar

default
layout_default
compact
layout_compact
mini
layout_mini
seekbar
layout_seekbar

Themes

You can also change the icon theme to fluent or material to match your preferred style by using the icon_theme option in your modernz.conf.

fluent
theme_fluent
material
theme_material

Icon Styles

Both fluent and material themes have different icon styles as well. By using the icon_style option, you can choose mixed, filled, or outline.

fluent
StylePreview
mixedicon_style_fluent_mixed
filledicon_style_fluent_filled
outlineicon_style_fluent_outline
material
StylePreview
mixedicon_style_material_mixed
filledicon_style_material_filled
outlineicon_style_material_outline

Seek Bar

If you find the seek bar too thin or too thick, you can easily adjust its size using the seekbar_height option. Available values include small, medium, large, and xlarge.

smallmedium (Default)
seekbar_height_smallseekbar_height_medium
largexlarge
seekbar_height_largeseekbar_height_xlarge

Chapter Markers

You can change the chapter markers style by using the nibbles_style option, which accepts: gap, triangle, bar, and single-bar

gap (Default)triangle
chapter_marker_gapchapter_marker_triangle
barsingle-bar
chapter_marker_barchapter_marker_singlebar

Colors

Not a fan of white buttons and text? You have complete control to customize colors to perfectly reflect your style.

Colors
modernz_colors_top
modernz_colors_bottom

See the Color Customization section in the configuration guide for details on how to customize colors and buttons.

Installation

  1. Disable Stock OSC

    • Add osc=no in your mpv.conf
    • (OPTIONAL) Add title-bar=no in your mpv.conf for a clean look without the native window top bar
  2. Copy Files

    • Place modernz.lua in your mpv scripts directory
    • Place modernz-icons.ttf in your mpv fonts directory
    • (OPTIONAL) Place modernz-locale.json in your mpv script-opts directory
    • (OPTIONAL) Place thumbfast.lua in your mpv scripts directory
  3. Locations

Linux: ~/.config/mpv/
Windows: C:/Users/%username%/AppData/Roaming/mpv/
macOS: ~/Library/Application Support/mpv/
  1. Folder Structure [mpv manual]
📁 mpv/
├── 📁 fonts/
│ └── 📄 modernz-icons.ttf
├── 📁 script-opts/
│ ├── 📄 modernz.conf
│ └── 📄 modernz-locale.json (optional)
└── 📁 scripts/
├── 📄 modernz.lua
└── 📄 thumbfast.lua (optional)

Configuration

  • Place modernz.conf in the /script-opts folder to customize settings

    • You could download modernz.conf with all the default options
  • Alternatively, you can create a short configuration of the options you want changed only:

# Short configuration example# Seekbar color (hex format)seekbarfg_color=#B7410E# Interface optionsspeed_button=yestitle=${media-title}icon_theme=fluenticon_style=outline

For a full list of options, check out the detailed list here.

Controls

Button Interactions

  • Left click: Primary action
  • Right click: Secondary action
  • Middle click/Shift+Left click: Alternative action

Note

Middle clicking performs the same function as Shift+left mouse button, allowing for one-handed use

For a full list of interactions, check out the Button Interactions Guide.

Keybinds

ModernZ doesn't set keybinds by default to avoid interfering with your current setup. You can add keybinds in input.conf if you prefer:

v script-binding modernz/visibility # Cycle visibility modes
V script-message-to modernz osc-visibility cycle # Set a visibility mode: cycle, auto, always, never
w script-binding modernz/progress-toggle # Toggle persistent progress
x script-message-to modernz osc-show # Show OSC
y script-message-to modernz osc-hide # Hide OSC
z script-message-to modernz osc-idlescreen # Toggle idle screen

Translations

ModernZ is currently available in English, but you can easily switch it to your preferred language! Here's how:

  1. Download the locale pack

Grab the modernz-locale.json file from this repository. This file holds translations for various languages.

  1. Add the locales to mpv

Copy the downloaded modernz-locale.json file to your mpv /script-opts folder.

  1. Choose your language

Adjust or add the language option in your modernz.conf to your preferred language.

# Example configuration in modernz.conf# Set language to Simplified Chineselanguage=zh

Need More Info?

For a complete list of available languages, contribution guidelines, and in-depth translation documentation, head over to the TRANSLATIONS.md.

Extras

The following scripts are maintained by me. Feel free to use them if they're useful to you.

  • Open-File - Open files, add subtitles, or add audio tracks directly from mpv via the Windows file dialog
  • Pause-Indicator-Lite - A simple script that displays an indicator on pause
  • PiP-Lite - Add a PiP mode (Picture-in-Picture) via the ModernZ pin button or when ontop is enabled
  • ytdlAutoFormat - A simple mpv script to automatically change ytdl-format (yt-dlp) for specified domains
  • BoxtoWide - A simple mpv script to change the aspect-ratio of video files/streams to a specific target ratio automatically

For even more useful scripts, check out the mpv User Scripts Wiki. It offers a wide range of community-contributed scripts to enhance your mpv experience.

History

Why fork yet again?

  • Add extensive feature support, including color customization, advanced options, and locale integration
  • Integrate mpv's console and select functionality to OSC
    • An approach that later inspired adoption in mpv’s stock OSC (#1, #2)
  • Introduce a dedicated layout optimized for image viewing. details
  • Add modern and modern-compact layouts and icon themes support
  • Refactor the project to align with mpv’s stock OSC standards, ensuring long-term compatibility
  • Remove legacy bugs and redundant code to improve maintainability and stability

In essence, to maintain and revive the modern-osc origin.

Having said that, ModernZ still uses parts of the old code, and every previous and current fork author and contributor deserves credit (including mpv's stock osc), which is why they are mentioned in detail.

Credits:

  • Material Symbols by Google — Apache 2.0
  • Fluent System Icons by Microsoft — MIT(some icons modified or created to suit the OSC's needs)
  • mpv and their osc.lua, as ModernZ osc was re-based on the stock osc standards and applies updates from it
  • All modern osc origin and their forks as mentioned in history
  • All contributors, testers and users that helped directly or indirectly with ModernZ osc ❤️

HH-AA

- In quiet memory, always.
- Somewhere beyond time, we'll meet again.
c7dbd158

About

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

Topics

Resources

Code of conduct

Contributing

Stars

1.2k stars

Watchers

10 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

ModernZ - A Sleek Alternative OSC for mpv

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

modernz_preview

Installation »
Configuration · Controls · OSC Language · Extra Scripts

Features

  • 🎨 Modern, customizable interface with multiple layouts, themes, and icon styles [options]
  • 🖱️ Independent hover zone for top bar (window controls bar) and bottom bar (OSC)
  • 📷 Image Viewer mode with zoom controls [details]
  • 🎛️ Buttons: download, playlist, speed control, screenshot, pin, loop, shuffle, and more. [details]
  • 📄 Interactive menus for playlist, subtitles, chapters, audio tracks, and audio devices
  • 🌐 Multi-language support with JSON locale integration
  • ⌨️ Configurable controls [details]
  • 🖼️ Video thumbnail previews with thumbfast
preview_features_button_md

Customization

ModernZ provides a wide range of customization options, including multiple layouts, themes, icon styles, color adjustments, and much more.

Layouts

Choose the layout that suits your preference using the layout option in your modernz.conf, which accepts: default, compact, mini, and seekbar

default
layout_default
compact
layout_compact
mini
layout_mini
seekbar
layout_seekbar

Themes

You can also change the icon theme to fluent or material to match your preferred style by using the icon_theme option in your modernz.conf.

fluent
theme_fluent
material
theme_material

Icon Styles

Both fluent and material themes have different icon styles as well. By using the icon_style option, you can choose mixed, filled, or outline.

fluent
StylePreview
mixedicon_style_fluent_mixed
filledicon_style_fluent_filled
outlineicon_style_fluent_outline
material
StylePreview
mixedicon_style_material_mixed
filledicon_style_material_filled
outlineicon_style_material_outline

Seek Bar

If you find the seek bar too thin or too thick, you can easily adjust its size using the seekbar_height option. Available values include small, medium, large, and xlarge.

smallmedium (Default)
seekbar_height_smallseekbar_height_medium
largexlarge
seekbar_height_largeseekbar_height_xlarge

Chapter Markers

You can change the chapter markers style by using the nibbles_style option, which accepts: gap, triangle, bar, and single-bar

gap (Default)triangle
chapter_marker_gapchapter_marker_triangle
barsingle-bar
chapter_marker_barchapter_marker_singlebar

Colors

Not a fan of white buttons and text? You have complete control to customize colors to perfectly reflect your style.

Colors
modernz_colors_top
modernz_colors_bottom

See the Color Customization section in the configuration guide for details on how to customize colors and buttons.

Installation

  1. Disable Stock OSC

    • Add osc=no in your mpv.conf
    • (OPTIONAL) Add title-bar=no in your mpv.conf for a clean look without the native window top bar
  2. Copy Files

    • Place modernz.lua in your mpv scripts directory
    • Place modernz-icons.ttf in your mpv fonts directory
    • (OPTIONAL) Place modernz-locale.json in your mpv script-opts directory
    • (OPTIONAL) Place thumbfast.lua in your mpv scripts directory
  3. Locations

Linux: ~/.config/mpv/
Windows: C:/Users/%username%/AppData/Roaming/mpv/
macOS: ~/Library/Application Support/mpv/
  1. Folder Structure [mpv manual]
📁 mpv/
├── 📁 fonts/
│ └── 📄 modernz-icons.ttf
├── 📁 script-opts/
│ ├── 📄 modernz.conf
│ └── 📄 modernz-locale.json (optional)
└── 📁 scripts/
├── 📄 modernz.lua
└── 📄 thumbfast.lua (optional)

Configuration

  • Place modernz.conf in the /script-opts folder to customize settings

    • You could download modernz.conf with all the default options
  • Alternatively, you can create a short configuration of the options you want changed only:

# Short configuration example# Seekbar color (hex format)seekbarfg_color=#B7410E# Interface optionsspeed_button=yestitle=${media-title}icon_theme=fluenticon_style=outline

For a full list of options, check out the detailed list here.

Controls

Button Interactions

  • Left click: Primary action
  • Right click: Secondary action
  • Middle click/Shift+Left click: Alternative action

Note

Middle clicking performs the same function as Shift+left mouse button, allowing for one-handed use

For a full list of interactions, check out the Button Interactions Guide.

Keybinds

ModernZ doesn't set keybinds by default to avoid interfering with your current setup. You can add keybinds in input.conf if you prefer:

v script-binding modernz/visibility # Cycle visibility modes
V script-message-to modernz osc-visibility cycle # Set a visibility mode: cycle, auto, always, never
w script-binding modernz/progress-toggle # Toggle persistent progress
x script-message-to modernz osc-show # Show OSC
y script-message-to modernz osc-hide # Hide OSC
z script-message-to modernz osc-idlescreen # Toggle idle screen

Translations

ModernZ is currently available in English, but you can easily switch it to your preferred language! Here's how:

  1. Download the locale pack

Grab the modernz-locale.json file from this repository. This file holds translations for various languages.

  1. Add the locales to mpv

Copy the downloaded modernz-locale.json file to your mpv /script-opts folder.

  1. Choose your language

Adjust or add the language option in your modernz.conf to your preferred language.

# Example configuration in modernz.conf# Set language to Simplified Chineselanguage=zh

Need More Info?

For a complete list of available languages, contribution guidelines, and in-depth translation documentation, head over to the TRANSLATIONS.md.

Extras

The following scripts are maintained by me. Feel free to use them if they're useful to you.

  • Open-File - Open files, add subtitles, or add audio tracks directly from mpv via the Windows file dialog
  • Pause-Indicator-Lite - A simple script that displays an indicator on pause
  • PiP-Lite - Add a PiP mode (Picture-in-Picture) via the ModernZ pin button or when ontop is enabled
  • ytdlAutoFormat - A simple mpv script to automatically change ytdl-format (yt-dlp) for specified domains
  • BoxtoWide - A simple mpv script to change the aspect-ratio of video files/streams to a specific target ratio automatically

For even more useful scripts, check out the mpv User Scripts Wiki. It offers a wide range of community-contributed scripts to enhance your mpv experience.

History

Why fork yet again?

  • Add extensive feature support, including color customization, advanced options, and locale integration
  • Integrate mpv's console and select functionality to OSC
    • An approach that later inspired adoption in mpv’s stock OSC (#1, #2)
  • Introduce a dedicated layout optimized for image viewing. details
  • Add modern and modern-compact layouts and icon themes support
  • Refactor the project to align with mpv’s stock OSC standards, ensuring long-term compatibility
  • Remove legacy bugs and redundant code to improve maintainability and stability

In essence, to maintain and revive the modern-osc origin.

Having said that, ModernZ still uses parts of the old code, and every previous and current fork author and contributor deserves credit (including mpv's stock osc), which is why they are mentioned in detail.

Credits:

  • Material Symbols by Google — Apache 2.0
  • Fluent System Icons by Microsoft — MIT(some icons modified or created to suit the OSC's needs)
  • mpv and their osc.lua, as ModernZ osc was re-based on the stock osc standards and applies updates from it
  • All modern osc origin and their forks as mentioned in history
  • All contributors, testers and users that helped directly or indirectly with ModernZ osc ❤️

HH-AA

- In quiet memory, always.
- Somewhere beyond time, we'll meet again.
c7dbd158

About

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

Topics

Resources

Code of conduct

Contributing

Stars

1.2k stars

Watchers

10 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ModernZ - A Sleek Alternative OSC for mpv

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

modernz_preview

Installation »
Configuration · Controls · OSC Language · Extra Scripts

Features

  • 🎨 Modern, customizable interface with multiple layouts, themes, and icon styles [options]
  • 🖱️ Independent hover zone for top bar (window controls bar) and bottom bar (OSC)
  • 📷 Image Viewer mode with zoom controls [details]
  • 🎛️ Buttons: download, playlist, speed control, screenshot, pin, loop, shuffle, and more. [details]
  • 📄 Interactive menus for playlist, subtitles, chapters, audio tracks, and audio devices
  • 🌐 Multi-language support with JSON locale integration
  • ⌨️ Configurable controls [details]
  • 🖼️ Video thumbnail previews with thumbfast
preview_features_button_md

Customization

ModernZ provides a wide range of customization options, including multiple layouts, themes, icon styles, color adjustments, and much more.

Layouts

Choose the layout that suits your preference using the layout option in your modernz.conf, which accepts: default, compact, mini, and seekbar

default
layout_default
compact
layout_compact
mini
layout_mini
seekbar
layout_seekbar

Themes

You can also change the icon theme to fluent or material to match your preferred style by using the icon_theme option in your modernz.conf.

fluent
theme_fluent
material
theme_material

Icon Styles

Both fluent and material themes have different icon styles as well. By using the icon_style option, you can choose mixed, filled, or outline.

fluent
StylePreview
mixedicon_style_fluent_mixed
filledicon_style_fluent_filled
outlineicon_style_fluent_outline
material
StylePreview
mixedicon_style_material_mixed
filledicon_style_material_filled
outlineicon_style_material_outline

Seek Bar

If you find the seek bar too thin or too thick, you can easily adjust its size using the seekbar_height option. Available values include small, medium, large, and xlarge.

smallmedium (Default)
seekbar_height_smallseekbar_height_medium
largexlarge
seekbar_height_largeseekbar_height_xlarge

Chapter Markers

You can change the chapter markers style by using the nibbles_style option, which accepts: gap, triangle, bar, and single-bar

gap (Default)triangle
chapter_marker_gapchapter_marker_triangle
barsingle-bar
chapter_marker_barchapter_marker_singlebar

Colors

Not a fan of white buttons and text? You have complete control to customize colors to perfectly reflect your style.

Colors
modernz_colors_top
modernz_colors_bottom

See the Color Customization section in the configuration guide for details on how to customize colors and buttons.

Installation

  1. Disable Stock OSC

    • Add osc=no in your mpv.conf
    • (OPTIONAL) Add title-bar=no in your mpv.conf for a clean look without the native window top bar
  2. Copy Files

    • Place modernz.lua in your mpv scripts directory
    • Place modernz-icons.ttf in your mpv fonts directory
    • (OPTIONAL) Place modernz-locale.json in your mpv script-opts directory
    • (OPTIONAL) Place thumbfast.lua in your mpv scripts directory
  3. Locations

Linux: ~/.config/mpv/
Windows: C:/Users/%username%/AppData/Roaming/mpv/
macOS: ~/Library/Application Support/mpv/
  1. Folder Structure [mpv manual]
📁 mpv/
├── 📁 fonts/
│ └── 📄 modernz-icons.ttf
├── 📁 script-opts/
│ ├── 📄 modernz.conf
│ └── 📄 modernz-locale.json (optional)
└── 📁 scripts/
├── 📄 modernz.lua
└── 📄 thumbfast.lua (optional)

Configuration

  • Place modernz.conf in the /script-opts folder to customize settings

    • You could download modernz.conf with all the default options
  • Alternatively, you can create a short configuration of the options you want changed only:

# Short configuration example# Seekbar color (hex format)seekbarfg_color=#B7410E# Interface optionsspeed_button=yestitle=${media-title}icon_theme=fluenticon_style=outline

For a full list of options, check out the detailed list here.

Controls

Button Interactions

  • Left click: Primary action
  • Right click: Secondary action
  • Middle click/Shift+Left click: Alternative action

Note

Middle clicking performs the same function as Shift+left mouse button, allowing for one-handed use

For a full list of interactions, check out the Button Interactions Guide.

Keybinds

ModernZ doesn't set keybinds by default to avoid interfering with your current setup. You can add keybinds in input.conf if you prefer:

v script-binding modernz/visibility # Cycle visibility modes
V script-message-to modernz osc-visibility cycle # Set a visibility mode: cycle, auto, always, never
w script-binding modernz/progress-toggle # Toggle persistent progress
x script-message-to modernz osc-show # Show OSC
y script-message-to modernz osc-hide # Hide OSC
z script-message-to modernz osc-idlescreen # Toggle idle screen

Translations

ModernZ is currently available in English, but you can easily switch it to your preferred language! Here's how:

  1. Download the locale pack

Grab the modernz-locale.json file from this repository. This file holds translations for various languages.

  1. Add the locales to mpv

Copy the downloaded modernz-locale.json file to your mpv /script-opts folder.

  1. Choose your language

Adjust or add the language option in your modernz.conf to your preferred language.

# Example configuration in modernz.conf# Set language to Simplified Chineselanguage=zh

Need More Info?

For a complete list of available languages, contribution guidelines, and in-depth translation documentation, head over to the TRANSLATIONS.md.

Extras

The following scripts are maintained by me. Feel free to use them if they're useful to you.

  • Open-File - Open files, add subtitles, or add audio tracks directly from mpv via the Windows file dialog
  • Pause-Indicator-Lite - A simple script that displays an indicator on pause
  • PiP-Lite - Add a PiP mode (Picture-in-Picture) via the ModernZ pin button or when ontop is enabled
  • ytdlAutoFormat - A simple mpv script to automatically change ytdl-format (yt-dlp) for specified domains
  • BoxtoWide - A simple mpv script to change the aspect-ratio of video files/streams to a specific target ratio automatically

For even more useful scripts, check out the mpv User Scripts Wiki. It offers a wide range of community-contributed scripts to enhance your mpv experience.

History

Why fork yet again?

  • Add extensive feature support, including color customization, advanced options, and locale integration
  • Integrate mpv's console and select functionality to OSC
    • An approach that later inspired adoption in mpv’s stock OSC (#1, #2)
  • Introduce a dedicated layout optimized for image viewing. details
  • Add modern and modern-compact layouts and icon themes support
  • Refactor the project to align with mpv’s stock OSC standards, ensuring long-term compatibility
  • Remove legacy bugs and redundant code to improve maintainability and stability

In essence, to maintain and revive the modern-osc origin.

Having said that, ModernZ still uses parts of the old code, and every previous and current fork author and contributor deserves credit (including mpv's stock osc), which is why they are mentioned in detail.

Credits:

  • Material Symbols by Google — Apache 2.0
  • Fluent System Icons by Microsoft — MIT(some icons modified or created to suit the OSC's needs)
  • mpv and their osc.lua, as ModernZ osc was re-based on the stock osc standards and applies updates from it
  • All modern osc origin and their forks as mentioned in history
  • All contributors, testers and users that helped directly or indirectly with ModernZ osc ❤️

HH-AA

- In quiet memory, always.
- Somewhere beyond time, we'll meet again.
c7dbd158

About

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

Topics

Resources

Code of conduct

Contributing

Stars

1.2k stars

Watchers

10 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ModernZ - A Sleek Alternative OSC for mpv

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

modernz_preview

Installation »
Configuration · Controls · OSC Language · Extra Scripts

Features

  • 🎨 Modern, customizable interface with multiple layouts, themes, and icon styles [options]
  • 🖱️ Independent hover zone for top bar (window controls bar) and bottom bar (OSC)
  • 📷 Image Viewer mode with zoom controls [details]
  • 🎛️ Buttons: download, playlist, speed control, screenshot, pin, loop, shuffle, and more. [details]
  • 📄 Interactive menus for playlist, subtitles, chapters, audio tracks, and audio devices
  • 🌐 Multi-language support with JSON locale integration
  • ⌨️ Configurable controls [details]
  • 🖼️ Video thumbnail previews with thumbfast
preview_features_button_md

Customization

ModernZ provides a wide range of customization options, including multiple layouts, themes, icon styles, color adjustments, and much more.

Layouts

Choose the layout that suits your preference using the layout option in your modernz.conf, which accepts: default, compact, mini, and seekbar

default
layout_default
compact
layout_compact
mini
layout_mini
seekbar
layout_seekbar

Themes

You can also change the icon theme to fluent or material to match your preferred style by using the icon_theme option in your modernz.conf.

fluent
theme_fluent
material
theme_material

Icon Styles

Both fluent and material themes have different icon styles as well. By using the icon_style option, you can choose mixed, filled, or outline.

fluent
StylePreview
mixedicon_style_fluent_mixed
filledicon_style_fluent_filled
outlineicon_style_fluent_outline
material
StylePreview
mixedicon_style_material_mixed
filledicon_style_material_filled
outlineicon_style_material_outline

Seek Bar

If you find the seek bar too thin or too thick, you can easily adjust its size using the seekbar_height option. Available values include small, medium, large, and xlarge.

smallmedium (Default)
seekbar_height_smallseekbar_height_medium
largexlarge
seekbar_height_largeseekbar_height_xlarge

Chapter Markers

You can change the chapter markers style by using the nibbles_style option, which accepts: gap, triangle, bar, and single-bar

gap (Default)triangle
chapter_marker_gapchapter_marker_triangle
barsingle-bar
chapter_marker_barchapter_marker_singlebar

Colors

Not a fan of white buttons and text? You have complete control to customize colors to perfectly reflect your style.

Colors
modernz_colors_top
modernz_colors_bottom

See the Color Customization section in the configuration guide for details on how to customize colors and buttons.

Installation

  1. Disable Stock OSC

    • Add osc=no in your mpv.conf
    • (OPTIONAL) Add title-bar=no in your mpv.conf for a clean look without the native window top bar
  2. Copy Files

    • Place modernz.lua in your mpv scripts directory
    • Place modernz-icons.ttf in your mpv fonts directory
    • (OPTIONAL) Place modernz-locale.json in your mpv script-opts directory
    • (OPTIONAL) Place thumbfast.lua in your mpv scripts directory
  3. Locations

Linux: ~/.config/mpv/
Windows: C:/Users/%username%/AppData/Roaming/mpv/
macOS: ~/Library/Application Support/mpv/
  1. Folder Structure [mpv manual]
📁 mpv/
├── 📁 fonts/
│ └── 📄 modernz-icons.ttf
├── 📁 script-opts/
│ ├── 📄 modernz.conf
│ └── 📄 modernz-locale.json (optional)
└── 📁 scripts/
├── 📄 modernz.lua
└── 📄 thumbfast.lua (optional)

Configuration

  • Place modernz.conf in the /script-opts folder to customize settings

    • You could download modernz.conf with all the default options
  • Alternatively, you can create a short configuration of the options you want changed only:

# Short configuration example# Seekbar color (hex format)seekbarfg_color=#B7410E# Interface optionsspeed_button=yestitle=${media-title}icon_theme=fluenticon_style=outline

For a full list of options, check out the detailed list here.

Controls

Button Interactions

  • Left click: Primary action
  • Right click: Secondary action
  • Middle click/Shift+Left click: Alternative action

Note

Middle clicking performs the same function as Shift+left mouse button, allowing for one-handed use

For a full list of interactions, check out the Button Interactions Guide.

Keybinds

ModernZ doesn't set keybinds by default to avoid interfering with your current setup. You can add keybinds in input.conf if you prefer:

v script-binding modernz/visibility # Cycle visibility modes
V script-message-to modernz osc-visibility cycle # Set a visibility mode: cycle, auto, always, never
w script-binding modernz/progress-toggle # Toggle persistent progress
x script-message-to modernz osc-show # Show OSC
y script-message-to modernz osc-hide # Hide OSC
z script-message-to modernz osc-idlescreen # Toggle idle screen

Translations

ModernZ is currently available in English, but you can easily switch it to your preferred language! Here's how:

  1. Download the locale pack

Grab the modernz-locale.json file from this repository. This file holds translations for various languages.

  1. Add the locales to mpv

Copy the downloaded modernz-locale.json file to your mpv /script-opts folder.

  1. Choose your language

Adjust or add the language option in your modernz.conf to your preferred language.

# Example configuration in modernz.conf# Set language to Simplified Chineselanguage=zh

Need More Info?

For a complete list of available languages, contribution guidelines, and in-depth translation documentation, head over to the TRANSLATIONS.md.

Extras

The following scripts are maintained by me. Feel free to use them if they're useful to you.

  • Open-File - Open files, add subtitles, or add audio tracks directly from mpv via the Windows file dialog
  • Pause-Indicator-Lite - A simple script that displays an indicator on pause
  • PiP-Lite - Add a PiP mode (Picture-in-Picture) via the ModernZ pin button or when ontop is enabled
  • ytdlAutoFormat - A simple mpv script to automatically change ytdl-format (yt-dlp) for specified domains
  • BoxtoWide - A simple mpv script to change the aspect-ratio of video files/streams to a specific target ratio automatically

For even more useful scripts, check out the mpv User Scripts Wiki. It offers a wide range of community-contributed scripts to enhance your mpv experience.

History

Why fork yet again?

  • Add extensive feature support, including color customization, advanced options, and locale integration
  • Integrate mpv's console and select functionality to OSC
    • An approach that later inspired adoption in mpv’s stock OSC (#1, #2)
  • Introduce a dedicated layout optimized for image viewing. details
  • Add modern and modern-compact layouts and icon themes support
  • Refactor the project to align with mpv’s stock OSC standards, ensuring long-term compatibility
  • Remove legacy bugs and redundant code to improve maintainability and stability

In essence, to maintain and revive the modern-osc origin.

Having said that, ModernZ still uses parts of the old code, and every previous and current fork author and contributor deserves credit (including mpv's stock osc), which is why they are mentioned in detail.

Credits:

  • Material Symbols by Google — Apache 2.0
  • Fluent System Icons by Microsoft — MIT(some icons modified or created to suit the OSC's needs)
  • mpv and their osc.lua, as ModernZ osc was re-based on the stock osc standards and applies updates from it
  • All modern osc origin and their forks as mentioned in history
  • All contributors, testers and users that helped directly or indirectly with ModernZ osc ❤️

HH-AA

- In quiet memory, always.
- Somewhere beyond time, we'll meet again.
c7dbd158

About

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

Topics

Resources

Code of conduct

Contributing

Stars

1.2k stars

Watchers

10 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

ModernZ - A Sleek Alternative OSC for mpv

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

modernz_preview

Installation »
Configuration · Controls · OSC Language · Extra Scripts

Features

  • 🎨 Modern, customizable interface with multiple layouts, themes, and icon styles [options]
  • 🖱️ Independent hover zone for top bar (window controls bar) and bottom bar (OSC)
  • 📷 Image Viewer mode with zoom controls [details]
  • 🎛️ Buttons: download, playlist, speed control, screenshot, pin, loop, shuffle, and more. [details]
  • 📄 Interactive menus for playlist, subtitles, chapters, audio tracks, and audio devices
  • 🌐 Multi-language support with JSON locale integration
  • ⌨️ Configurable controls [details]
  • 🖼️ Video thumbnail previews with thumbfast
preview_features_button_md

Customization

ModernZ provides a wide range of customization options, including multiple layouts, themes, icon styles, color adjustments, and much more.

Layouts

Choose the layout that suits your preference using the layout option in your modernz.conf, which accepts: default, compact, mini, and seekbar

default
layout_default
compact
layout_compact
mini
layout_mini
seekbar
layout_seekbar

Themes

You can also change the icon theme to fluent or material to match your preferred style by using the icon_theme option in your modernz.conf.

fluent
theme_fluent
material
theme_material

Icon Styles

Both fluent and material themes have different icon styles as well. By using the icon_style option, you can choose mixed, filled, or outline.

fluent
StylePreview
mixedicon_style_fluent_mixed
filledicon_style_fluent_filled
outlineicon_style_fluent_outline
material
StylePreview
mixedicon_style_material_mixed
filledicon_style_material_filled
outlineicon_style_material_outline

Seek Bar

If you find the seek bar too thin or too thick, you can easily adjust its size using the seekbar_height option. Available values include small, medium, large, and xlarge.

smallmedium (Default)
seekbar_height_smallseekbar_height_medium
largexlarge
seekbar_height_largeseekbar_height_xlarge

Chapter Markers

You can change the chapter markers style by using the nibbles_style option, which accepts: gap, triangle, bar, and single-bar

gap (Default)triangle
chapter_marker_gapchapter_marker_triangle
barsingle-bar
chapter_marker_barchapter_marker_singlebar

Colors

Not a fan of white buttons and text? You have complete control to customize colors to perfectly reflect your style.

Colors
modernz_colors_top
modernz_colors_bottom

See the Color Customization section in the configuration guide for details on how to customize colors and buttons.

Installation

  1. Disable Stock OSC

    • Add osc=no in your mpv.conf
    • (OPTIONAL) Add title-bar=no in your mpv.conf for a clean look without the native window top bar
  2. Copy Files

    • Place modernz.lua in your mpv scripts directory
    • Place modernz-icons.ttf in your mpv fonts directory
    • (OPTIONAL) Place modernz-locale.json in your mpv script-opts directory
    • (OPTIONAL) Place thumbfast.lua in your mpv scripts directory
  3. Locations

Linux: ~/.config/mpv/
Windows: C:/Users/%username%/AppData/Roaming/mpv/
macOS: ~/Library/Application Support/mpv/
  1. Folder Structure [mpv manual]
📁 mpv/
├── 📁 fonts/
│ └── 📄 modernz-icons.ttf
├── 📁 script-opts/
│ ├── 📄 modernz.conf
│ └── 📄 modernz-locale.json (optional)
└── 📁 scripts/
├── 📄 modernz.lua
└── 📄 thumbfast.lua (optional)

Configuration

  • Place modernz.conf in the /script-opts folder to customize settings

    • You could download modernz.conf with all the default options
  • Alternatively, you can create a short configuration of the options you want changed only:

# Short configuration example# Seekbar color (hex format)seekbarfg_color=#B7410E# Interface optionsspeed_button=yestitle=${media-title}icon_theme=fluenticon_style=outline

For a full list of options, check out the detailed list here.

Controls

Button Interactions

  • Left click: Primary action
  • Right click: Secondary action
  • Middle click/Shift+Left click: Alternative action

Note

Middle clicking performs the same function as Shift+left mouse button, allowing for one-handed use

For a full list of interactions, check out the Button Interactions Guide.

Keybinds

ModernZ doesn't set keybinds by default to avoid interfering with your current setup. You can add keybinds in input.conf if you prefer:

v script-binding modernz/visibility # Cycle visibility modes
V script-message-to modernz osc-visibility cycle # Set a visibility mode: cycle, auto, always, never
w script-binding modernz/progress-toggle # Toggle persistent progress
x script-message-to modernz osc-show # Show OSC
y script-message-to modernz osc-hide # Hide OSC
z script-message-to modernz osc-idlescreen # Toggle idle screen

Translations

ModernZ is currently available in English, but you can easily switch it to your preferred language! Here's how:

  1. Download the locale pack

Grab the modernz-locale.json file from this repository. This file holds translations for various languages.

  1. Add the locales to mpv

Copy the downloaded modernz-locale.json file to your mpv /script-opts folder.

  1. Choose your language

Adjust or add the language option in your modernz.conf to your preferred language.

# Example configuration in modernz.conf# Set language to Simplified Chineselanguage=zh

Need More Info?

For a complete list of available languages, contribution guidelines, and in-depth translation documentation, head over to the TRANSLATIONS.md.

Extras

The following scripts are maintained by me. Feel free to use them if they're useful to you.

  • Open-File - Open files, add subtitles, or add audio tracks directly from mpv via the Windows file dialog
  • Pause-Indicator-Lite - A simple script that displays an indicator on pause
  • PiP-Lite - Add a PiP mode (Picture-in-Picture) via the ModernZ pin button or when ontop is enabled
  • ytdlAutoFormat - A simple mpv script to automatically change ytdl-format (yt-dlp) for specified domains
  • BoxtoWide - A simple mpv script to change the aspect-ratio of video files/streams to a specific target ratio automatically

For even more useful scripts, check out the mpv User Scripts Wiki. It offers a wide range of community-contributed scripts to enhance your mpv experience.

History

Why fork yet again?

  • Add extensive feature support, including color customization, advanced options, and locale integration
  • Integrate mpv's console and select functionality to OSC
    • An approach that later inspired adoption in mpv’s stock OSC (#1, #2)
  • Introduce a dedicated layout optimized for image viewing. details
  • Add modern and modern-compact layouts and icon themes support
  • Refactor the project to align with mpv’s stock OSC standards, ensuring long-term compatibility
  • Remove legacy bugs and redundant code to improve maintainability and stability

In essence, to maintain and revive the modern-osc origin.

Having said that, ModernZ still uses parts of the old code, and every previous and current fork author and contributor deserves credit (including mpv's stock osc), which is why they are mentioned in detail.

Credits:

  • Material Symbols by Google — Apache 2.0
  • Fluent System Icons by Microsoft — MIT(some icons modified or created to suit the OSC's needs)
  • mpv and their osc.lua, as ModernZ osc was re-based on the stock osc standards and applies updates from it
  • All modern osc origin and their forks as mentioned in history
  • All contributors, testers and users that helped directly or indirectly with ModernZ osc ❤️

HH-AA

- In quiet memory, always.
- Somewhere beyond time, we'll meet again.
c7dbd158

About

A sleek and modern OSC for mpv. This project is a fork of ModernX that enhances functionality by adding more features while preserving the core standards of mpv's OSC.

Topics

Resources

Code of conduct

Contributing

Stars

1.2k stars

Watchers

10 watching

Forks

Releases

Contributors

Languages