Stage new submodule locations
This commit is contained in:
2
submodules/ModernZ/.gitattributes
vendored
Normal file
2
submodules/ModernZ/.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
* text=auto
|
||||
*.conf linguist-language=EditorConfig
|
||||
128
submodules/ModernZ/.github/CODE_OF_CONDUCT.md
vendored
Normal file
128
submodules/ModernZ/.github/CODE_OF_CONDUCT.md
vendored
Normal file
@@ -0,0 +1,128 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
ModernZ Github Issues.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
https://www.contributor-covenant.org/faq. Translations are available at
|
||||
https://www.contributor-covenant.org/translations.
|
||||
99
submodules/ModernZ/.github/CONTRIBUTING.md
vendored
Normal file
99
submodules/ModernZ/.github/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
How to contribute
|
||||
=================
|
||||
|
||||
General
|
||||
-------
|
||||
|
||||
All contributions are generally welcomed. We always appreciate the effort and time taken by others to improve or fix ModernZ.
|
||||
|
||||
If you're hesitant or not sure about a specific contribution, you can always open an issue to ask a question or discuss something in detail to see if your contribution goes with ModernZ plans or not.
|
||||
|
||||
Main project goals
|
||||
------------------
|
||||
|
||||
- Revive and maintain the modern osc origin, as it is either abandoned or partially maintained by adding new code without fixing the old.
|
||||
- Apply common features that are missing and most users would want (ie: customization, button functions, lists and so on)
|
||||
|
||||
ModernZ is trying to be in a middle area between stock OSC and a project like uosc. One is too simple, the other is too complicated.
|
||||
|
||||
One of the first things that happened in ModernZ was to re-base on stock osc and integrate features that mpv already has, which eliminated a ton of bloat from the code.
|
||||
|
||||
In essence, we want to be better than stock OSC, but we don't want to do everything. That is why for example we integrated locale as extras, and the same thing was done for the pause indicator.
|
||||
|
||||
If it's useful, but not necessary to the OSC, it should be in extras or an independent script. Modular methodology.
|
||||
|
||||
Sending patches
|
||||
---------------
|
||||
|
||||
- Make a GitHub pull request.
|
||||
- Plain diffs posted as pastebins are not acceptable. They only cause extra work for everyone, because they lack
|
||||
commit message and authorship information.
|
||||
- Be sure to test your changes. If you didn't, please say so in the commit
|
||||
message and the pull request text.
|
||||
|
||||
Write good commit messages
|
||||
--------------------------
|
||||
|
||||
- Write informative commit messages. Use present tense to describe the
|
||||
situation with the patch applied, and past tense for the situation before
|
||||
the change.
|
||||
- The subject line (the first line in a commit message) must contain an
|
||||
identifying prefix, followed by a short description what
|
||||
impact this commit has on ModernZ osc.
|
||||
|
||||
Split changes into multiple commits
|
||||
-----------------------------------
|
||||
|
||||
- Follow git good practices, and split independent changes into several commits.
|
||||
It's usually OK to put them into a single pull request.
|
||||
- Try to separate cosmetic and functional changes. It's ok to make a few
|
||||
additional cosmetic changes in the same file you're working on. However, don't do
|
||||
something like reformatting a whole file, and hiding an actual functional
|
||||
change in the same commit.
|
||||
- Splitting changes does _not_ mean that you should make them as fine-grained
|
||||
as possible. Commits should form logical steps in development. The way you
|
||||
split changes is important for code review and analyzing bugs.
|
||||
- We prefer to have pull requests in a merge
|
||||
ready state.
|
||||
|
||||
Touching user-visible elements may require updating the docs
|
||||
-------------------------------------------------------------
|
||||
|
||||
- Most user-visible elements are normally documented in docs/. If your commit
|
||||
touches documented behavior, list of options, etc., you need to adjust the
|
||||
documentation.
|
||||
- These changes usually go into the same commit that changes the code.
|
||||
|
||||
Code of Conduct
|
||||
---------------
|
||||
|
||||
Please note that this project is released with a Contributor Code of Conduct.
|
||||
By participating in this project you agree to abide by its terms.
|
||||
The Contributor Code of Conduct can be found here:
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct/
|
||||
|
||||
Copyright of contributions
|
||||
--------------------------
|
||||
|
||||
- The copyright belongs to contributors. The project is a collaborative work. By
|
||||
sending your changes, you agree to license your contributions according to the
|
||||
requirements of this project.
|
||||
- All new code must be LGPLv2.1+ licensed, or come with the implicit agreement
|
||||
that it will be relicensed to LGPLv2.1+ later.
|
||||
- 100% compatible licenses are allowed too.
|
||||
- Changes in files with more liberal licenses (such as BSD, MIT, or ISC) are
|
||||
assumed to be dual-licensed under LGPLv2.1+ and the license indicated in the
|
||||
file header.
|
||||
- You must be either the exclusive author of the patch, or acknowledge all
|
||||
authors involved in the commit message. If you take 3rd party code, authorship
|
||||
and copyright must be properly acknowledged. If you're making changes on
|
||||
behalf of your employer, and the employer owns the copyright, you must mention
|
||||
this. If the license of the code is not LGPLv2.1+, you must mention this.
|
||||
- These license statements are legally binding.
|
||||
- Don't use fake names (something that looks like an actual name, and may be
|
||||
someone else's name, but is not your legal name). Using a pseudonym is
|
||||
allowed if it can be used to identify or contact you, even if whatever
|
||||
account you used to submit the patch dies.
|
||||
- Do not add your name to the license header. This convention is not used by
|
||||
this project, and neither copyright law nor any of the used licenses require
|
||||
it.
|
||||
15
submodules/ModernZ/.github/ISSUE_TEMPLATE/1_feature_request.yml
vendored
Normal file
15
submodules/ModernZ/.github/ISSUE_TEMPLATE/1_feature_request.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
name: "Request a new Feature"
|
||||
description: "Create a request for a new feature"
|
||||
labels: ["feature request"]
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: "Expected behavior of the wanted feature"
|
||||
description: >
|
||||
Before requesting a new feature, make sure it hasn't been
|
||||
[requested yet](https://github.com/Samillion/ModernZ/labels/feature%20request).
|
||||
|
||||
If you are not sure about this, please read
|
||||
[FAQ and guidelines](https://github.com/Samillion/ModernZ/blob/main/docs/FAQ.md) first.
|
||||
validations:
|
||||
required: true
|
||||
74
submodules/ModernZ/.github/ISSUE_TEMPLATE/2_bug_report.yml
vendored
Normal file
74
submodules/ModernZ/.github/ISSUE_TEMPLATE/2_bug_report.yml
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
name: "Report an issue or a bug"
|
||||
description: "Create a report for an issue or a bug"
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: "mpv Information"
|
||||
placeholder: |
|
||||
mpv v0.39.0-300-g42ff6f92 Copyright © 2000-2024 mpv/MPlayer/mplayer2 projects
|
||||
built on Nov 3 2024 00:06:03
|
||||
libplacebo version: v7.349.0 (v7.349.0-19-g118d810-dirty)
|
||||
FFmpeg version: N-117698-gc325f9c61
|
||||
FFmpeg library versions:
|
||||
libavcodec 61.23.100
|
||||
libavdevice 61.4.100
|
||||
libavfilter 10.6.101
|
||||
libavformat 61.9.100
|
||||
libavutil 59.46.100
|
||||
libswscale 8.9.101
|
||||
description: |
|
||||
Provide the output of `mpv --version`.
|
||||
render: bash
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: "Reproduction Steps"
|
||||
description: >
|
||||
Try to reproduce your issue with `--no-config` and mpv's stock osc first. If it is reproducible
|
||||
even then, try to find out which option or script causes your issue.
|
||||
|
||||
|
||||
Describe the reproduction steps as precise as possible. It's very likely that
|
||||
the bug you experience wasn't reproduced by the developer because the workflow
|
||||
differs from your own.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: "Expected Behavior"
|
||||
placeholder: "What were you expecting?"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: "Actual Behavior"
|
||||
placeholder: "What happened instead?"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: "Log File"
|
||||
placeholder: "Drag and drop log file here (Don't paste content directly)"
|
||||
description: >
|
||||
Make a log file with `--log-file=output.txt` and
|
||||
attach it to the issue. [[details](https://mpv.io/manual/master/#options-log-file)]
|
||||
|
||||
|
||||
If you have trouble producing a log file, you can alternatively use `-v -v`,
|
||||
save the terminal output to a file, and attach it to the issue.
|
||||
|
||||
|
||||
Disclaimer: The log file may contain identifiable information, such as your username.
|
||||
Review the log file before sharing and redact any sensitive data if necessary.
|
||||
validations:
|
||||
required: false
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: "I carefully read all instructions and confirm that I did the following:"
|
||||
options:
|
||||
- label: "I tested with the latest mpv version to validate that the issue is not already fixed."
|
||||
required: true
|
||||
- label: "I provided all required information."
|
||||
required: true
|
||||
8
submodules/ModernZ/.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
8
submodules/ModernZ/.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: FAQ and guidelines (Important)
|
||||
url: https://github.com/Samillion/ModernZ/blob/main/docs/FAQ.md
|
||||
about: Frequent questions are answered there, also includes useful guidelines
|
||||
- name: Discussions and Questions
|
||||
url: https://github.com/Samillion/ModernZ/discussions
|
||||
about: A place to discuss or ask a general question regarding ModernZ osc
|
||||
7
submodules/ModernZ/.github/PULL_REQUEST_TEMPLATE
vendored
Normal file
7
submodules/ModernZ/.github/PULL_REQUEST_TEMPLATE
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
Read this before you submit a pull request please:
|
||||
https://github.com/Samillion/ModernZ/blob/main/.github/CONTRIBUTING.md
|
||||
|
||||
Reading this link and following the rules will get your pull request reviewed
|
||||
and merged faster.
|
||||
|
||||
Delete this message after reading the link
|
||||
504
submodules/ModernZ/LICENSE
Normal file
504
submodules/ModernZ/LICENSE
Normal file
@@ -0,0 +1,504 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
|
||||
USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random
|
||||
Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
209
submodules/ModernZ/README.md
Normal file
209
submodules/ModernZ/README.md
Normal file
@@ -0,0 +1,209 @@
|
||||
<h1 align="center">ModernZ - A Sleek Alternative OSC for mpv</h1>
|
||||
|
||||
A sleek and modern OSC for [mpv](https://mpv.io/), this project is a fork of ModernX designed to enhance functionality by adding more features, all while preserving the core standards of mpv's OSC.
|
||||
|
||||

|
||||
|
||||
<p align="center">
|
||||
<a href="#installation"><strong>Installation »</strong></a>
|
||||
<br>
|
||||
<a href="#configuration">Configuration</a>
|
||||
·
|
||||
<a href="#controls">Controls</a>
|
||||
·
|
||||
<a href="#interactive-menus">Interactive Menus</a>
|
||||
·
|
||||
<a href="#translations">OSC Language</a>
|
||||
·
|
||||
<a href="#extras">Extra Scripts</a>
|
||||
</p>
|
||||
|
||||
## Features
|
||||
|
||||
- 🎨 Modern, customizable interface [[options](#configuration)]
|
||||
- 📷 Image Viewer mode with zoom controls [[details](/docs/IMAGE_VIEWER.md)]
|
||||
- 🎛️ Buttons: download, playlist, speed control, screenshot, pin, loop, cache and more. [[details](/docs/CONTROLS.md)]
|
||||
- 📄 Interactive menus for playlist, subtitles, chapters, audio tracks and audio devices [[details](#interactive-menus)]
|
||||
- 🌐 Multi-language support with JSON [locale](#translations) integration
|
||||
- ⌨️ Configurable controls [[details](#controls)]
|
||||
- 🖼️ Video thumbnail previews with [thumbfast](https://github.com/po5/thumbfast)
|
||||
|
||||
## Customization
|
||||
|
||||
You can change the icon theme to `fluent` or `material` to match your taste and style by using the `icon_theme` option in your `modernz.conf`
|
||||
|
||||

|
||||
|
||||

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

|
||||
|
||||

|
||||
|
||||
See the [Color Customization](docs/USER_OPTS.md#colors-and-style) section in the configuration guide for details on how to customize colors and buttons.
|
||||
|
||||
## Interactive Menus
|
||||
|
||||
ModernZ supports mpv's built-in console/select ([v0.40+](https://github.com/mpv-player/mpv/releases/tag/v0.40.0)) for playlist, subtitles, chapter navigation and more.
|
||||
|
||||
[](/docs/INTERACTIVE_MENUS.md)
|
||||
|
||||
## Installation
|
||||
|
||||
1. **Disable Stock OSC**
|
||||
|
||||
- Add `osc=no` in your `mpv.conf`
|
||||
|
||||
2. **Copy Files**
|
||||
|
||||
- Place `modernz.lua` in your mpv scripts directory
|
||||
- Place `fluent-system-icons.ttf` and `material-design-icons.ttf` in your mpv fonts 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/
|
||||
```
|
||||
|
||||
4. **Folder Structure** [[mpv manual](https://mpv.io/manual/master/#files)]
|
||||
```
|
||||
mpv/
|
||||
├── fonts/
|
||||
│ ├── fluent-system-icons.ttf
|
||||
│ └── material-design-icons.ttf
|
||||
├── script-opts/
|
||||
│ └── modernz.conf
|
||||
└── scripts/
|
||||
├── modernz.lua
|
||||
└── thumbfast.lua (optional)
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
1. Create `modernz.conf` in the `/script-opts` folder to customize settings
|
||||
|
||||
- [Download default modernz.conf](./modernz.conf)
|
||||
|
||||
2. Example of a short configuration:
|
||||
|
||||
```EditorConfig
|
||||
# Seekbar color (hex format)
|
||||
seekbarfg_color=#B7410E
|
||||
|
||||
# Interface options
|
||||
playlist_button=no
|
||||
title=${media-title}
|
||||
scalewindowed=1.0
|
||||
window_top_bar=auto
|
||||
```
|
||||
|
||||
For a full list of options, [check out the detailed list here](docs/USER_OPTS.md).
|
||||
|
||||
## 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](docs/CONTROLS.md).
|
||||
|
||||
### 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:
|
||||
|
||||
```
|
||||
w script-binding modernz/progress-toggle # Toggle progress bar
|
||||
x script-message-to modernz osc-show # Show OSC
|
||||
y script-message-to modernz osc-visibility cycle # Cycle visibility modes
|
||||
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](/extras/locale/modernz-locale.json) file from this repository. This file holds translations for various languages.
|
||||
|
||||
2. **Add the locales to mpv:**
|
||||
|
||||
Copy the downloaded `modernz-locale.json` file to your mpv's `/script-opts` folder.
|
||||
|
||||
3. **Choose your language:**
|
||||
|
||||
There are two ways to set your preferred language:
|
||||
|
||||
- **Recommended:** Use the `modernz.conf` file
|
||||
|
||||
```ini
|
||||
# Example configuration in modernz.conf
|
||||
# Set language to Simplified Chinese
|
||||
language=zh
|
||||
```
|
||||
|
||||
- **Alternative:** Edit the `modernz.lua` script
|
||||
|
||||
Open `modernz.lua` and find the `user_opts` section near the beginning. Change the `language` value to your preferred code:
|
||||
|
||||
```lua
|
||||
local user_opts = {
|
||||
-- General
|
||||
language = "en", -- Change this to your preferred language code
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
**Need More Info?**
|
||||
|
||||
For a complete list of available languages, contribution guidelines, and in-depth translation documentation, head over to the [TRANSLATIONS.md](docs/TRANSLATIONS.md).
|
||||
|
||||
## Extras
|
||||
|
||||
The following scripts are ones I wrote and maintain, feel free to use them if they're useful to you.
|
||||
|
||||
- [Pause-Indicator-Lite](/extras/pause-indicator-lite) - A simple script that displays an indicator on pause
|
||||
|
||||
- [ytdlAutoFormat](https://github.com/Samillion/mpv-ytdlautoformat) - A simple mpv script to automatically change `ytdl-format` (yt-dlp) for specified domains.
|
||||
|
||||
- [BoxtoWide](https://github.com/Samillion/mpv-boxtowide) - A simple mpv script to change 4:3 aspect-ratio of video files/streams to 16:9 automatically.
|
||||
|
||||
For even more useful scripts, check out the [mpv User Scripts Wiki](https://github.com/mpv-player/mpv/wiki/User-Scripts). It offers a wide range of community-contributed scripts to enhance your mpv experience.
|
||||
|
||||
## History
|
||||
|
||||
- [Samillion/ModernZ](https://github.com/Samillion/ModernZ)
|
||||
- forked from [dexeonify/ModernX](https://github.com/dexeonify/mpv-config/blob/main/scripts/modernx.lua)
|
||||
- forked from [cyl0/ModernX](https://github.com/cyl0/ModernX)
|
||||
- forked from [maoiscat/mpv-osc-modern](https://github.com/maoiscat/mpv-osc-modern)
|
||||
|
||||
**Why fork yet again?**
|
||||
|
||||
- To add many features in: [Color Customization](docs/USER_OPTS.md#colors-and-style), [Options](docs/USER_OPTS.md) and [Locale Integration](docs/TRANSLATIONS.md)
|
||||
- To integrate console and select into the osc, which inspired mpv to apply it in the stock osc. [ref [#1](https://github.com/mpv-player/mpv/pull/15016), [#2](https://github.com/mpv-player/mpv/pull/15031)]
|
||||
- To add a dedicated layout for images. [[details](/docs/IMAGE_VIEWER.md)]
|
||||
- To re-do the project entirely to match mpv's stock osc standards, to ensure compatibility
|
||||
- To eliminate old bugs and redundancy within the code
|
||||
- Which allows other `Modern` forks to use ModernZ as a base, such as [zydezu/ModernX](https://github.com/zydezu/ModernX). [[Reference](https://github.com/zydezu/ModernX/releases/tag/0.3.9)]
|
||||
|
||||
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 deserve credit (including mpv's stock osc), that is why they're mentioned in detail.
|
||||
|
||||
#### Credits:
|
||||
|
||||
- Font: UI Fluent System Icons [[details](https://github.com/microsoft/fluentui-system-icons)] [[font file](https://github.com/Samillion/ModernZ/blob/main/fluent-system-icons.ttf)]
|
||||
- Font modified by [Xurdejl](https://github.com/Xurdejl) for use on ModernZ osc
|
||||
- [mpv](https://github.com/mpv-player/mpv) and their [osc.lua](https://github.com/mpv-player/mpv/blob/master/player/lua/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](#history)
|
||||
- All [contributors](https://github.com/Samillion/ModernZ/graphs/contributors), testers and users that helped directly or indirectly with ModernZ osc ❤️
|
||||
130
submodules/ModernZ/docs/CONTROLS.md
Normal file
130
submodules/ModernZ/docs/CONTROLS.md
Normal file
@@ -0,0 +1,130 @@
|
||||
# ModernZ Controls Guide
|
||||
|
||||

|
||||
|
||||
## 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` |
|
||||
37
submodules/ModernZ/docs/FAQ.md
Normal file
37
submodules/ModernZ/docs/FAQ.md
Normal 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.
|
||||
56
submodules/ModernZ/docs/IMAGE_VIEWER.md
Normal file
56
submodules/ModernZ/docs/IMAGE_VIEWER.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
## 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)
|
||||
38
submodules/ModernZ/docs/INTERACTIVE_MENUS.md
Normal file
38
submodules/ModernZ/docs/INTERACTIVE_MENUS.md
Normal 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
|
||||
> ```
|
||||
141
submodules/ModernZ/docs/TRANSLATIONS.md
Normal file
141
submodules/ModernZ/docs/TRANSLATIONS.md
Normal 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!
|
||||
276
submodules/ModernZ/docs/USER_OPTS.md
Normal file
276
submodules/ModernZ/docs/USER_OPTS.md
Normal 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).
|
||||
3
submodules/ModernZ/extras/locale/README.md
Normal file
3
submodules/ModernZ/extras/locale/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
The different locales (languages) for ModernZ OSC are stored within the [modernz-locale.json](/extras/locale/modernz-locale.json) file.
|
||||
|
||||
For more information: [Translations](/docs/TRANSLATIONS.md)
|
||||
226
submodules/ModernZ/extras/locale/modernz-locale.json
Normal file
226
submodules/ModernZ/extras/locale/modernz-locale.json
Normal file
@@ -0,0 +1,226 @@
|
||||
{
|
||||
"fr": {
|
||||
"idle": "Déposez des fichiers ou des URLs ici pour les lire",
|
||||
"na": "Non disponible",
|
||||
"video": "Vidéo",
|
||||
"audio": "Audio",
|
||||
"subtitle": "Sous-titre",
|
||||
"no_subs": "Aucun sous-titre disponible",
|
||||
"no_audio": "Aucune piste audio disponible",
|
||||
"playlist": "Liste de lecture",
|
||||
"no_playlist": "Liste de lecture vide",
|
||||
"chapter": "Chapitre",
|
||||
"ontop": "Épingler la fenêtre",
|
||||
"ontop_disable": "Désépingler la fenêtre",
|
||||
"loop_enable": "Activer la boucle",
|
||||
"loop_disable": "Désactiver la boucle",
|
||||
"speed_control": "Contrôle de la vitesse",
|
||||
"screenshot": "Capture d'écran",
|
||||
"stats_info": "Informations",
|
||||
"cache": "Cache",
|
||||
"buffering": "Chargement",
|
||||
"zoom_in": "Agrandir",
|
||||
"zoom_out": "Rétrécir",
|
||||
"download": "Télécharger",
|
||||
"download_in_progress": "Téléchargement en cours",
|
||||
"downloading": "Téléchargement",
|
||||
"downloaded": "Déjà téléchargé",
|
||||
"menu": "Menu",
|
||||
},
|
||||
"de": {
|
||||
"idle": "Dateien oder URLs hier ablegen, um sie abzuspielen",
|
||||
"na": "Nicht verfügbar",
|
||||
"video": "Video",
|
||||
"audio": "Audio",
|
||||
"subtitle": "Untertitel",
|
||||
"no_subs": "Keine Untertitel verfügbar",
|
||||
"no_audio": "Keine Audiospuren verfügbar",
|
||||
"playlist": "Wiedergabeliste",
|
||||
"no_playlist": "Wiedergabeliste ist leer",
|
||||
"chapter": "Kapitel",
|
||||
"ontop": "Fenster fixieren",
|
||||
"ontop_disable": "Fensterfixierung aufheben",
|
||||
"loop_enable": "Dauerschleife aktivieren",
|
||||
"loop_disable": "Dauerschleife deaktivieren",
|
||||
"speed_control": "Geschwindigkeitseinstellungen",
|
||||
"screenshot": "Bildschirmaufnahme",
|
||||
"stats_info": "Informationen",
|
||||
"cache": "Zwischenspeicher",
|
||||
"buffering": "Pufferung",
|
||||
"zoom_in": "Vergrößern",
|
||||
"zoom_out": "Verkleinern",
|
||||
"download": "Herunterladen",
|
||||
"download_in_progress": "Herunterladen läuft",
|
||||
"downloading": "Herunterladen",
|
||||
"downloaded": "Bereits heruntergeladen",
|
||||
"menu": "Menü",
|
||||
},
|
||||
"es": {
|
||||
"idle": "Suelta archivos o URLs aquí para reproducirlos",
|
||||
"na": "No disponible",
|
||||
"video": "Video",
|
||||
"audio": "Audio",
|
||||
"subtitle": "Subtítulo",
|
||||
"no_subs": "No hay subtítulos disponibles",
|
||||
"no_audio": "No hay pistas de audio disponibles",
|
||||
"playlist": "Lista de reproducción",
|
||||
"no_playlist": "La lista de reproducción está vacía",
|
||||
"chapter": "Capítulo",
|
||||
"ontop": "Fijar ventana",
|
||||
"ontop_disable": "Desfijar ventana",
|
||||
"loop_enable": "Activar bucle",
|
||||
"loop_disable": "Desactivar bucle",
|
||||
"speed_control": "Control de velocidad",
|
||||
"screenshot": "Captura de pantalla",
|
||||
"stats_info": "Información",
|
||||
"cache": "Caché",
|
||||
"buffering": "Cargando",
|
||||
"zoom_in": "Ampliar",
|
||||
"zoom_out": "Reducir",
|
||||
"download": "Descargar",
|
||||
"download_in_progress": "Descarga en curso",
|
||||
"downloading": "Descargando",
|
||||
"downloaded": "Ya descargado",
|
||||
"menu": "Menú",
|
||||
},
|
||||
"pl": {
|
||||
"idle": "Upuść plik lub łącze URL do odtworzenia",
|
||||
"na": "Niedostępne",
|
||||
"video": "Wideo",
|
||||
"audio": "Audio",
|
||||
"subtitle": "Napisy",
|
||||
"no_subs": "Brak dostępnych napisów",
|
||||
"no_audio": "Brak dostępnych ścieżek dźwiękowych",
|
||||
"playlist": "Lista odtwarzania",
|
||||
"no_playlist": "Lista odtwarzania jest pusta",
|
||||
"chapter": "Rozdział",
|
||||
"ontop": "Przypnij okno",
|
||||
"ontop_disable": "Odepnij okno",
|
||||
"loop_enable": "Włącz zapętlenie",
|
||||
"loop_disable": "Wyłącz zapętlenie",
|
||||
"speed_control": "Kontrola prędkości",
|
||||
"screenshot": "Zrzut ekranu",
|
||||
"stats_info": "Informacja",
|
||||
"cache": "Pamięć podręczna",
|
||||
"buffering": "Buforowanie",
|
||||
"zoom_in": "Powiększ",
|
||||
"zoom_out": "Pomniejsz",
|
||||
"download": "Pobierz",
|
||||
"download_in_progress": "Pobieranie w toku",
|
||||
"downloading": "Pobieranie",
|
||||
"downloaded": "Już pobrano",
|
||||
"menu": "Menu",
|
||||
},
|
||||
"jp": {
|
||||
"idle": "ファイルやURLのリンクをここにドロップすると再生されます",
|
||||
"na": "利用できません",
|
||||
"video": "ビデオ",
|
||||
"audio": "オーディオ",
|
||||
"subtitle": "字幕",
|
||||
"no_subs": "利用可能な字幕はありません",
|
||||
"no_audio": "オーディオトラックはありません",
|
||||
"playlist": "プレイリスト",
|
||||
"no_playlist": "プレイリストは空です",
|
||||
"chapter": "チャプター",
|
||||
"ontop": "ウィンドウを最前面に固定",
|
||||
"ontop_disable": "ウィンドウを固定解除",
|
||||
"loop_enable": "ループを有効にする",
|
||||
"loop_disable": "ループを無効にする",
|
||||
"speed_control": "速度制御",
|
||||
"screenshot": "スクリーンショット",
|
||||
"stats_info": "情報",
|
||||
"cache": "キャッシュ",
|
||||
"buffering": "読み込み中",
|
||||
"zoom_in": "拡大",
|
||||
"zoom_out": "縮小",
|
||||
"download": "ダウンロード",
|
||||
"download_in_progress": "ダウンロード中",
|
||||
"downloading": "ダウンロード中",
|
||||
"downloaded": "既にダウンロード済み",
|
||||
"menu": "メニュー",
|
||||
},
|
||||
"zh": {
|
||||
"idle": "将文件或URL放在这里播放",
|
||||
"na": "不可用",
|
||||
"video": "视频",
|
||||
"audio": "音频",
|
||||
"subtitle": "字幕",
|
||||
"no_subs": "没有可用字幕",
|
||||
"no_audio": "没有音轨",
|
||||
"playlist": "播放列表",
|
||||
"no_playlist": "播放列表为空",
|
||||
"chapter": "章节",
|
||||
"ontop": "窗口停留在顶层",
|
||||
"ontop_disable": "禁用窗口停留在顶层",
|
||||
"loop_enable": "启用循环",
|
||||
"loop_disable": "禁用循环",
|
||||
"speed_control": "速度控制",
|
||||
"screenshot": "截屏",
|
||||
"stats_info": "信息",
|
||||
"cache": "缓存",
|
||||
"buffering": "缓冲中",
|
||||
"zoom_in": "放大",
|
||||
"zoom_out": "缩小",
|
||||
"download": "下载",
|
||||
"download_in_progress": "下载中",
|
||||
"downloading": "正在下载",
|
||||
"downloaded": "已下载",
|
||||
"menu": "菜单",
|
||||
},
|
||||
"ar": {
|
||||
"idle": "أسقط الملفات أو الروابط هنا للتشغيل",
|
||||
"na": "غير متاح",
|
||||
"video": "فيديو",
|
||||
"audio": "صوت",
|
||||
"subtitle": "ترجمة",
|
||||
"no_subs": "لا توجد ترجمات متاحة",
|
||||
"no_audio": "لا توجد مسارات صوتية متاحة",
|
||||
"playlist": "قائمة التشغيل",
|
||||
"no_playlist": "قائمة التشغيل فارغة",
|
||||
"chapter": "فصل",
|
||||
"ontop": "تثبيت النافذة",
|
||||
"ontop_disable": "إلغاء تثبيت النافذة",
|
||||
"loop_enable": "تمكين التكرار",
|
||||
"loop_disable": "تعطيل التكرار",
|
||||
"speed_control": "التحكم في السرعة",
|
||||
"screenshot": "لقطة شاشة",
|
||||
"stats_info": "معلومات",
|
||||
"cache": "ذاكرة التخزين المؤقت",
|
||||
"buffering": "جار التحميل",
|
||||
"zoom_in": "تكبير",
|
||||
"zoom_out": "تصغير",
|
||||
"download": "تنزيل",
|
||||
"download_in_progress": "التنزيل جارٍ",
|
||||
"downloading": "جاري التنزيل",
|
||||
"downloaded": "تم التنزيل بالفعل",
|
||||
"menu": "قائمة",
|
||||
},
|
||||
"ru": {
|
||||
"idle": "Перенести файл или URL для воспроизведения",
|
||||
"na": "Недоступно",
|
||||
"video": "Видео",
|
||||
"audio": "Аудио",
|
||||
"subtitle": "Субтитры",
|
||||
"no_subs": "Субтитры недоступны",
|
||||
"no_audio": "Нет аудио-дорожек",
|
||||
"playlist": "Плейлист",
|
||||
"no_playlist": "Плейлист пуст",
|
||||
"chapter": "Глава",
|
||||
"ontop": "Закрепить окно",
|
||||
"ontop_disable": "Открепить окно",
|
||||
"loop_enable": "Повтор",
|
||||
"loop_disable": "Отключить повтор",
|
||||
"speed_control": "Контроль скорости",
|
||||
"screenshot": "Скриншот",
|
||||
"stats_info": "Информация",
|
||||
"cache": "Кеш",
|
||||
"buffering": "Буферизация",
|
||||
"zoom_in": "Зум +",
|
||||
"zoom_out": "Зум -",
|
||||
"download": "Загрузить",
|
||||
"download_in_progress": "Загрузка в процессе",
|
||||
"downloading": "Загрузка",
|
||||
"downloaded": "Уже загружено",
|
||||
"menu": "Меню",
|
||||
},
|
||||
}
|
||||
68
submodules/ModernZ/extras/pause-indicator-lite/README.md
Normal file
68
submodules/ModernZ/extras/pause-indicator-lite/README.md
Normal file
@@ -0,0 +1,68 @@
|
||||
## Pause Indicator Lite
|
||||
|  |  |
|
||||
|:---:|:---:|
|
||||
|
||||
A simple script that displays an indicator on pause (and mute), with options to adjust icon type, color, height, width, opacity and whether to toggle pause with a keybind or not.
|
||||
|
||||
I only decided to write this because the ones I found were either too complicated or too simple. The alternatives are great, this one just meets my simple use case scenario.
|
||||
|
||||
**Script:** [Pause Indicator Lite](./pause_indicator_lite.lua)
|
||||
|
||||
### Indicator Options
|
||||
Below is the full list for indicator options and their default values.
|
||||
|
||||
To adjust them you can either:
|
||||
- Place [pause_indicator_lite.conf](./pause_indicator_lite.conf) in `script-opts` and change the values in it [recommended]
|
||||
- Simply change their values in `local options` within the script itself
|
||||
|
||||
| Option | Value | Description |
|
||||
|--------------------------|-------------|--------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `indicator_icon` | pause | indicator icon type. `pause`, `play` |
|
||||
| `indicator_stay` | yes | keep indicator visibile during pause |
|
||||
| `indicator_timeout` | 0.6 | timeout (seconds) if indicator doesn't stay |
|
||||
| `keybind_allow` | yes | allow keybind to toggle pause |
|
||||
| `keybind_set` | mbtn_left | the used keybind to toggle pause [[reference](https://github.com/mpv-player/mpv/blob/master/etc/input.conf)] |
|
||||
| `keybind_mode` | onpause | mode to activate keybind. <br>`onpause`: only active when paused, to unpause <br>`always`: always active to toggle pause/unpause |
|
||||
| `keybind_eof_disable` | yes | disable keybind on eof (end of file) [[reference](https://github.com/Samillion/ModernZ/issues/291)] |
|
||||
| `icon_color` | `#FFFFFF` | icon fill color |
|
||||
| `icon_border_color` | `#111111` | icon border color |
|
||||
| `icon_border_width` | 1.5 | icon border width |
|
||||
| `icon_opacity` | 40 | icon opacity (0-100) |
|
||||
| `rectangles_width` | 30 | width of rectangles (pause icon) |
|
||||
| `rectangles_height` | 80 | height of rectangles (pause icon) |
|
||||
| `rectangles_spacing` | 20 | spacing between the two rectangles (pause icon) |
|
||||
| `triangle_width` | 80 | width of triangle (play icon) |
|
||||
| `triangle_height` | 80 | height of triangle (play icon) |
|
||||
| `flash_play_icon` | yes | flash play icon on unpause (best with pause indicator icon) |
|
||||
| `flash_icon_timeout` | 0.3 | timeout (seconds) for flash icon |
|
||||
| `fluent_icons` | no | requires `fonts/fluent-system-icons.ttf` [[details](https://github.com/Samillion/ModernZ/pull/336)] |
|
||||
| `fluent_icon_size` | 80 | fluent icon size |
|
||||
| `mute_indicator` | no | show a mute indicator (requires fluent font) |
|
||||
| `mute_indicator_pos` | middle_right | position of mute indicator. `top_left`, `top_right`, `top_center`. also: `middle_*`, `bottom_*` same as `top_*` (ie: `bottom_right`) |
|
||||
|
||||
### How to install
|
||||
|
||||
Simply place `pause_indicator_lite.lua` in the corresponding mpv scripts folder of your operating system:
|
||||
|
||||
- Windows: `%APPDATA%\mpv\scripts\` or `C:\users\USERNAME\AppData\Roaming\mpv\scripts\`
|
||||
- Linux: `~/.config/mpv/scripts/` or `/home/USERNAME/.config/mpv/scripts/`
|
||||
- Mac: `~/.config/mpv/scripts/` or `/Users/USERNAME/.config/mpv/scripts/`
|
||||
|
||||
> [!TIP]
|
||||
> More information about mpv files locations can be found [here](https://mpv.io/manual/master/#files)
|
||||
|
||||
```
|
||||
mpv
|
||||
├── fonts/
|
||||
│ └── fluent-system-icons.ttf (optional) [required for fluent_icons]
|
||||
├── script-opts
|
||||
│ └── pause_indicator_lite.conf
|
||||
└── scripts
|
||||
└── pause_indicator_lite.lua
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
- I don't plan to focus many updates on this script, because ASS drawing and positioning pisses me off. 😝
|
||||
- Other alternatives can be found in the mpv [user scripts](https://github.com/mpv-player/mpv/wiki/User-Scripts) wiki.
|
||||
- This isn't exclusive to be used on ModernZ OSC. Feel free to use it with whatever you want.
|
||||
@@ -0,0 +1,54 @@
|
||||
# indicator icon type. "pause", "play"
|
||||
indicator_icon=pause
|
||||
# keep indicator visibile during pause
|
||||
indicator_stay=yes
|
||||
# timeout (seconds) if indicator doesn't stay
|
||||
indicator_timeout=0.6
|
||||
|
||||
# allow keybind to toggle pause
|
||||
keybind_allow=yes
|
||||
# the used keybind to toggle pause
|
||||
keybind_set=mbtn_left
|
||||
# mode to activate keybind. "onpause", "always"
|
||||
keybind_mode=onpause
|
||||
# disable keybind on eof (end of file)
|
||||
keybind_eof_disable=yes
|
||||
|
||||
# icon fill color
|
||||
icon_color=#FFFFFF
|
||||
# icon border color
|
||||
icon_border_color=#111111
|
||||
# icon border width
|
||||
icon_border_width=1.5
|
||||
# icon opacity (0-100)
|
||||
icon_opacity=40
|
||||
|
||||
# width of rectangles
|
||||
rectangles_width=30
|
||||
# height of rectangles
|
||||
rectangles_height=80
|
||||
# spacing between the two rectangles
|
||||
rectangles_spacing=20
|
||||
|
||||
# width of triangle
|
||||
triangle_width=80
|
||||
# height of triangle
|
||||
triangle_height=80
|
||||
|
||||
# flash play icon on unpause
|
||||
flash_play_icon=yes
|
||||
# timeout (seconds) for flash icon
|
||||
flash_icon_timeout=0.3
|
||||
|
||||
# icon style used in ModernZ osc
|
||||
# requires fonts/fluent-system-icons.ttf
|
||||
fluent_icons=no
|
||||
# fluent icon size
|
||||
fluent_icon_size=80
|
||||
|
||||
# mute options
|
||||
# show a mute indicator (requires fluent font)
|
||||
mute_indicator=no
|
||||
# position of mute indicator. top_left, top_right, top_center
|
||||
# also: middle_*, bottom_* same as top_* (ie: bottom_right)
|
||||
mute_indicator_pos=middle_right
|
||||
@@ -0,0 +1,218 @@
|
||||
--[[
|
||||
|
||||
A simple script that shows a pause indicator, on pause
|
||||
https://github.com/Samillion/ModernZ/tree/main/extras/pause-indicator-lite
|
||||
|
||||
--]]
|
||||
|
||||
local options = {
|
||||
-- indicator icon type
|
||||
indicator_icon = "pause", -- indicator icon type. "pause", "play"
|
||||
indicator_stay = true, -- keep indicator visibile during pause
|
||||
indicator_timeout = 0.6, -- timeout (seconds) if indicator doesn't stay
|
||||
|
||||
-- keybind
|
||||
keybind_allow = true, -- allow keybind to toggle pause
|
||||
keybind_set = "mbtn_left", -- the used keybind to toggle pause
|
||||
keybind_mode = "onpause", -- mode to activate keybind. "onpause", "always"
|
||||
keybind_eof_disable = true, -- disable keybind on eof (end of file)
|
||||
|
||||
-- icon colors & opacity
|
||||
icon_color = "#FFFFFF", -- icon fill color
|
||||
icon_border_color = "#111111", -- icon border color
|
||||
icon_border_width = 1.5, -- icon border width
|
||||
icon_opacity = 40, -- icon opacity (0-100)
|
||||
|
||||
-- pause icon
|
||||
rectangles_width = 30, -- width of rectangles
|
||||
rectangles_height = 80, -- height of rectangles
|
||||
rectangles_spacing = 20, -- spacing between the two rectangles
|
||||
|
||||
-- play icon
|
||||
triangle_width = 80, -- width of triangle
|
||||
triangle_height = 80, -- height of triangle
|
||||
|
||||
-- best with pause icon
|
||||
flash_play_icon = true, -- flash play icon on unpause
|
||||
flash_icon_timeout = 0.3, -- timeout (seconds) for flash icon
|
||||
|
||||
-- icon style used in ModernZ osc
|
||||
fluent_icons = false, -- requires fonts/fluent-system-icons.ttf
|
||||
fluent_icon_size = 80, -- fluent icon size
|
||||
|
||||
-- mute options
|
||||
mute_indicator = false, -- show a mute indicator (requires fluent font)
|
||||
mute_indicator_pos = "middle_right", -- position of mute indicator. top_left, top_right, top_center
|
||||
-- also: middle_*, bottom_* same as top_* (ie: bottom_right)
|
||||
}
|
||||
|
||||
local msg = require "mp.msg"
|
||||
require 'mp.options'.read_options(options, "pause_indicator_lite")
|
||||
|
||||
-- convert color from hex (adjusted from mpv/osc.lua)
|
||||
local function convert_color(color)
|
||||
if color:find("^#%x%x%x%x%x%x$") == nil then
|
||||
msg.warn("'" .. color .. "' is not a valid color, using default '#FFFFFF'")
|
||||
return "FFFFFF" -- color fallback
|
||||
end
|
||||
return color:sub(6,7) .. color:sub(4,5) .. color:sub(2,3)
|
||||
end
|
||||
|
||||
-- convert percentage opacity (0-100) to ASS alpha values
|
||||
local function convert_opacity(value)
|
||||
value = math.max(0, math.min(100, value))
|
||||
return string.format("%02X", (255 - (value * 2.55)))
|
||||
end
|
||||
|
||||
-- colors and opaicty
|
||||
local icon_color = convert_color(options.icon_color)
|
||||
local icon_border_color = convert_color(options.icon_border_color)
|
||||
local icon_opacity = convert_opacity(options.icon_opacity)
|
||||
local icon_font = "fluent-system-icons"
|
||||
|
||||
-- pause icon
|
||||
local function draw_rectangles()
|
||||
if options.fluent_icons then
|
||||
local pause_icon = "\238\163\140"
|
||||
return string.format([[{\\rDefault\\an5\\alpha&H%s\\bord%s\\1c&H%s&\\3c&H%s&\\fs%s\\fn%s}%s]],
|
||||
icon_opacity, options.icon_border_width, icon_color, icon_border_color, options.fluent_icon_size, icon_font, pause_icon)
|
||||
else
|
||||
return string.format([[{\\rDefault\\p1\\an5\\alpha&H%s\\bord%s\\1c&H%s&\\3c&H%s&}m 0 0 l %d 0 l %d %d l 0 %d m %d 0 l %d 0 l %d %d l %d %d{\\p0}]],
|
||||
icon_opacity, options.icon_border_width, icon_color, icon_border_color, options.rectangles_width, options.rectangles_width,
|
||||
options.rectangles_height, options.rectangles_height, options.rectangles_width + options.rectangles_spacing,
|
||||
options.rectangles_width * 2 + options.rectangles_spacing, options.rectangles_width * 2 + options.rectangles_spacing,
|
||||
options.rectangles_height, options.rectangles_width + options.rectangles_spacing, options.rectangles_height)
|
||||
end
|
||||
end
|
||||
|
||||
-- play icon
|
||||
local function draw_triangle()
|
||||
if options.fluent_icons then
|
||||
local play_icon = "\238\166\143"
|
||||
return string.format([[{\\rDefault\\an5\\alpha&H%s\\bord%s\\1c&H%s&\\3c&H%s&\\fs%s\\fn%s}%s]],
|
||||
icon_opacity, options.icon_border_width, icon_color, icon_border_color, options.fluent_icon_size, icon_font, play_icon)
|
||||
else
|
||||
return string.format([[{\\rDefault\\p1\\an5\\alpha&H%s\\bord%s\\1c&H%s&\\3c&H%s&}m 0 0 l %d %d l 0 %d{\\p0}]],
|
||||
icon_opacity, options.icon_border_width, icon_color, icon_border_color, options.triangle_width, options.triangle_height / 2, options.triangle_height)
|
||||
end
|
||||
end
|
||||
|
||||
-- mute icon
|
||||
local function draw_mute()
|
||||
if not options.fluent_icons then return end
|
||||
|
||||
local mute_icon = "\238\173\138"
|
||||
local mute_pos_list = {
|
||||
["top_left"] = 7,
|
||||
["top_center"] = 8,
|
||||
["top_right"] = 9,
|
||||
["middle_left"] = 4,
|
||||
["middle_center"] = 5,
|
||||
["middle_right"] = 6,
|
||||
["bottom_left"] = 1,
|
||||
["bottom_center"] = 2,
|
||||
["bottom_right"] = 3,
|
||||
}
|
||||
local mute_pos = mute_pos_list[options.mute_indicator_pos:lower()] or 6
|
||||
return string.format([[{\\rDefault\\an%s\\alpha&H%s\\bord%s\\1c&H%s&\\3c&H%s&\\fs%s\\fn%s}%s]],
|
||||
mute_pos, icon_opacity, options.icon_border_width, icon_color, icon_border_color, options.fluent_icon_size, icon_font, mute_icon)
|
||||
end
|
||||
|
||||
-- initiate overlay
|
||||
local indicator = mp.create_osd_overlay("ass-events")
|
||||
local flash = mp.create_osd_overlay("ass-events")
|
||||
local mute = mp.create_osd_overlay("ass-events")
|
||||
|
||||
-- keep track of pause toggle and end of file
|
||||
local toggled, eof
|
||||
|
||||
-- draw and update indicator
|
||||
local function update_indicator()
|
||||
local _, _, display_aspect = mp.get_osd_size()
|
||||
if display_aspect == 0 or (indicator.visible and not toggled) then return end
|
||||
|
||||
indicator.data = options.indicator_icon == "play" and draw_triangle() or draw_rectangles()
|
||||
indicator:update()
|
||||
|
||||
if not options.indicator_stay then
|
||||
mp.add_timeout(options.indicator_timeout, function() indicator:remove() end)
|
||||
end
|
||||
end
|
||||
|
||||
-- flash play icon
|
||||
local function flash_icon()
|
||||
if not options.flash_play_icon then return flash:remove() end
|
||||
flash.data = draw_triangle()
|
||||
flash:update()
|
||||
mp.add_timeout(options.flash_icon_timeout, function() flash:remove() end)
|
||||
end
|
||||
|
||||
-- draw mute icon
|
||||
local function mute_icon()
|
||||
mute.data = draw_mute()
|
||||
mute:update()
|
||||
end
|
||||
|
||||
-- check if file is video
|
||||
local function is_video()
|
||||
local t = mp.get_property_native("current-tracks/video")
|
||||
return t and not (t.image or t.albumart) and true or false
|
||||
end
|
||||
|
||||
-- remove overlays
|
||||
local function shutdown()
|
||||
if flash then flash:remove() end
|
||||
if indicator then indicator:remove() end
|
||||
mp.unobserve_property("pause")
|
||||
end
|
||||
|
||||
-- end of file keybind check
|
||||
if options.keybind_eof_disable then
|
||||
mp.observe_property("eof-reached", "bool", function(_, val)
|
||||
eof = val
|
||||
end)
|
||||
end
|
||||
|
||||
-- observe when pause state changes
|
||||
mp.observe_property("pause", "bool", function(_, paused)
|
||||
if not is_video() then return shutdown() end
|
||||
if paused then
|
||||
update_indicator()
|
||||
toggled = true
|
||||
if options.flash_play_icon then flash:remove() end
|
||||
else
|
||||
indicator:remove()
|
||||
if toggled then
|
||||
flash_icon()
|
||||
toggled = false
|
||||
end
|
||||
end
|
||||
|
||||
-- keybind setup (if options allow it)
|
||||
if options.keybind_allow == true then
|
||||
mp.set_key_bindings({
|
||||
{options.keybind_set, function() mp.commandv("cycle", "pause") end}
|
||||
}, "pause-indicator", "force")
|
||||
|
||||
if options.keybind_mode == "always" or (options.keybind_mode == "onpause" and paused) then
|
||||
if not eof then mp.enable_key_bindings("pause-indicator") end
|
||||
else
|
||||
mp.disable_key_bindings("pause-indicator")
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
-- update pause indicator position if window size changes
|
||||
mp.observe_property("osd-dimensions", "native", function()
|
||||
if indicator and indicator.visible then
|
||||
update_indicator()
|
||||
end
|
||||
end)
|
||||
|
||||
if options.mute_indicator and options.fluent_icons then
|
||||
mp.observe_property("mute", "bool", function(_, val)
|
||||
if val and not mute.visible then mute_icon() else mute:remove() end
|
||||
end)
|
||||
else
|
||||
mute:remove()
|
||||
end
|
||||
BIN
submodules/ModernZ/fluent-system-icons.ttf
Normal file
BIN
submodules/ModernZ/fluent-system-icons.ttf
Normal file
Binary file not shown.
BIN
submodules/ModernZ/material-design-icons.ttf
Normal file
BIN
submodules/ModernZ/material-design-icons.ttf
Normal file
Binary file not shown.
384
submodules/ModernZ/modernz.conf
Normal file
384
submodules/ModernZ/modernz.conf
Normal file
@@ -0,0 +1,384 @@
|
||||
# Language and display
|
||||
# set language (for available options, see: https://github.com/Samillion/ModernZ/blob/main/docs/TRANSLATIONS.md)
|
||||
language=en
|
||||
# set icon theme. accepts fluent or material
|
||||
icon_theme=fluent
|
||||
# font for the OSC (default: mpv-osd-symbols or the one set in mpv.conf)
|
||||
font=mpv-osd-symbols
|
||||
|
||||
# show mpv logo when idle
|
||||
idlescreen=yes
|
||||
# show OSC window top bar: "auto", "yes", or "no" (borderless/fullscreen)
|
||||
window_top_bar=auto
|
||||
# show OSC when windowed
|
||||
showwindowed=yes
|
||||
# show OSC when fullscreen
|
||||
showfullscreen=yes
|
||||
# show OSC when paused
|
||||
showonpause=yes
|
||||
# disable OSC hide timeout when paused
|
||||
keeponpause=yes
|
||||
# disable Santa hat in December
|
||||
greenandgrumpy=no
|
||||
|
||||
# OSC behaviour and scaling
|
||||
# time (in ms) before OSC hides if no mouse movement
|
||||
hidetimeout=1500
|
||||
# if seeking should reset the hidetimeout
|
||||
seek_resets_hidetimeout=yes
|
||||
# fade-out duration (in ms), set to 0 for no fade
|
||||
fadeduration=200
|
||||
# whether to enable fade-in effect
|
||||
fadein=no
|
||||
# minimum mouse movement (in pixels) required to show OSC
|
||||
minmousemove=0
|
||||
# show OSC only when hovering at the bottom
|
||||
bottomhover=yes
|
||||
# height of hover zone for bottomhover (in pixels)
|
||||
bottomhover_zone=130
|
||||
# show OSC when seeking
|
||||
osc_on_seek=no
|
||||
# show OSC on start of every file
|
||||
osc_on_start=no
|
||||
# pause video while seeking with mouse move (on button hold)
|
||||
mouse_seek_pause=yes
|
||||
# force show seekbar tooltip on mouse drag, even if not hovering seekbar
|
||||
force_seek_tooltip=no
|
||||
|
||||
# scale osc with the video
|
||||
vidscale=auto
|
||||
# osc scale factor when windowed
|
||||
scalewindowed=1.0
|
||||
# osc scale factor when fullscreen
|
||||
scalefullscreen=1.0
|
||||
|
||||
# Elements display
|
||||
# show title in the OSC (above seekbar)
|
||||
show_title=yes
|
||||
# title above seekbar format: "${media-title}" or "${filename}"
|
||||
title=${media-title}
|
||||
# font size of the title text (above seekbar)
|
||||
title_font_size=24
|
||||
# chapter title font size
|
||||
chapter_title_font_size=14
|
||||
# show cached time information
|
||||
cache_info=no
|
||||
# show cache speed per second
|
||||
cache_info_speed=no
|
||||
# font size of the cache information
|
||||
cache_info_font_size=12
|
||||
|
||||
# show chapter title alongside timestamp (below seekbar)
|
||||
show_chapter_title=yes
|
||||
# format for chapter display on seekbar hover (set to "no" to disable)
|
||||
chapter_fmt=%s
|
||||
|
||||
# show total time instead of remaining time
|
||||
timetotal=yes
|
||||
# show timecodes with milliseconds
|
||||
timems=no
|
||||
# use the Unicode minus sign in remaining time
|
||||
unicodeminus=no
|
||||
# "dynamic" or "fixed". dynamic shows MM:SS when possible, fixed always shows HH:MM:SS
|
||||
time_format=dynamic
|
||||
# font size of the time display
|
||||
time_font_size=16
|
||||
# tooltips font size
|
||||
tooltip_font_size=14
|
||||
|
||||
# Title bar settings
|
||||
# show window title in borderless/fullscreen mode
|
||||
window_title=no
|
||||
# show window controls (close, minimize, maximize) in borderless/fullscreen
|
||||
window_controls=yes
|
||||
# same as title but for window_top_bar
|
||||
windowcontrols_title=${media-title}
|
||||
|
||||
# Subtitle display settings
|
||||
# raise subtitles above the OSC when shown
|
||||
raise_subtitles=yes
|
||||
# amount by which subtitles are raised when the OSC is shown (in pixels)
|
||||
raise_subtitle_amount=125
|
||||
|
||||
# Buttons display and functionality
|
||||
# show the jump backward and forward buttons
|
||||
jump_buttons=yes
|
||||
# change the jump amount in seconds
|
||||
jump_amount=10
|
||||
# change the jump amount in seconds when right-clicking jump buttons and shift-clicking chapter skip buttons
|
||||
jump_more_amount=60
|
||||
# show different icon when jump_amount is set to 5, 10, or 30
|
||||
jump_icon_number=yes
|
||||
# seek mode for jump buttons
|
||||
jump_mode=relative
|
||||
# enable continuous jumping when holding down seek buttons
|
||||
jump_softrepeat=yes
|
||||
# show the chapter skip backward and forward buttons
|
||||
chapter_skip_buttons=no
|
||||
# enable continuous skipping when holding down chapter skip buttons
|
||||
chapter_softrepeat=yes
|
||||
# show next/previous playlist track buttons
|
||||
track_nextprev_buttons=yes
|
||||
|
||||
# show mute button and volume slider
|
||||
volume_control=yes
|
||||
# volume scale type: "linear" or "logarithmic"
|
||||
volume_control_type=linear
|
||||
# show playlist button: Left-click for simple playlist, Right-click for interactive playlist
|
||||
playlist_button=yes
|
||||
# hide playlist button when no playlist exists
|
||||
hide_empty_playlist_button=no
|
||||
# gray out the playlist button when no playlist exists
|
||||
gray_empty_playlist_button=no
|
||||
|
||||
# show download button on web videos (requires yt-dlp and ffmpeg)
|
||||
download_button=yes
|
||||
# default download directory for videos (https://mpv.io/manual/master/#paths)
|
||||
download_path=~~desktop/mpv
|
||||
# show screenshot button
|
||||
screenshot_button=no
|
||||
# flag for screenshot button: "subtitles", "video", "window", "each-frame"
|
||||
screenshot_flag=subtitles
|
||||
|
||||
# show window on top button
|
||||
ontop_button=yes
|
||||
# show loop button
|
||||
loop_button=no
|
||||
# show speed control button
|
||||
speed_button=no
|
||||
# speed change amount per click
|
||||
speed_button_click=1
|
||||
# speed change amount on scroll
|
||||
speed_button_scroll=0.25
|
||||
# show info button
|
||||
info_button=yes
|
||||
# show fullscreen toggle button
|
||||
fullscreen_button=yes
|
||||
|
||||
# enable looping by right-clicking pause
|
||||
loop_in_pause=yes
|
||||
|
||||
# force buttons to always be active. can add: playlist_prev,playlist_next
|
||||
buttons_always_active=none
|
||||
|
||||
# icon size for the play/pause button
|
||||
playpause_size=28
|
||||
# icon size for the middle buttons
|
||||
midbuttons_size=24
|
||||
# icon size for the side buttons
|
||||
sidebuttons_size=24
|
||||
|
||||
# show zoom controls in image viewer mode
|
||||
zoom_control=yes
|
||||
# maximum zoom in value
|
||||
zoom_in_max=4
|
||||
# minimum zoom out value
|
||||
zoom_out_min=-1
|
||||
|
||||
# Colors and style
|
||||
# accent color of the OSC and title bar
|
||||
osc_color=#000000
|
||||
# color of the title in borderless/fullscreen mode
|
||||
window_title_color=#FFFFFF
|
||||
# color of the window controls (close, minimize, maximize) in borderless/fullscreen mode
|
||||
window_controls_color=#FFFFFF
|
||||
# color of close window control on hover
|
||||
windowcontrols_close_hover=#F45C5B
|
||||
# color of maximize window controls on hover
|
||||
windowcontrols_max_hover=#F8BC3A
|
||||
# color of minimize window controls on hover
|
||||
windowcontrols_min_hover=#43CB44
|
||||
# color of the title (above seekbar)
|
||||
title_color=#FFFFFF
|
||||
# color of the cache information
|
||||
cache_info_color=#FFFFFF
|
||||
# color of the seekbar progress and handle
|
||||
seekbarfg_color=#FB8C00
|
||||
# color of the remaining seekbar
|
||||
seekbarbg_color=#94754F
|
||||
# color of the cache ranges on the seekbar
|
||||
seekbar_cache_color=#918F8E
|
||||
# match volume bar color with seekbar color (ignores side_buttons_color)
|
||||
volumebar_match_seek_color=no
|
||||
# color of the timestamps (below seekbar)
|
||||
time_color=#FFFFFF
|
||||
# color of the chapter title next to timestamp (below seekbar)
|
||||
chapter_title_color=#FFFFFF
|
||||
# color of the side buttons (audio, subtitles, playlist, etc.)
|
||||
side_buttons_color=#FFFFFF
|
||||
# color of the middle buttons (skip, jump, chapter, etc.)
|
||||
middle_buttons_color=#FFFFFF
|
||||
# color of the play/pause button
|
||||
playpause_color=#FFFFFF
|
||||
# color of the element when held down (pressed)
|
||||
held_element_color=#999999
|
||||
# color of a hovered button when hover_effect includes "color"
|
||||
hover_effect_color=#FB8C00
|
||||
# color of the border for thumbnails (with thumbfast)
|
||||
thumbnail_border_color=#111111
|
||||
# color of the border outline for thumbnails
|
||||
thumbnail_border_outline=#404040
|
||||
|
||||
# alpha of the OSC background box
|
||||
fade_alpha=130
|
||||
# blur strength for the OSC alpha fade. caution: high values can take a lot of CPU time to render
|
||||
fade_blur_strength=100
|
||||
# use with "fade_blur_strength=0" to create a transparency box
|
||||
fade_transparency_strength=0
|
||||
# alpha of the window title bar (0 to disable)
|
||||
window_fade_alpha=100
|
||||
# blur strength for the window title bar. caution: high values can take a lot of CPU time to render
|
||||
window_fade_blur_strength=100
|
||||
# use with "window_fade_blur_strength=0" to create a transparency box
|
||||
window_fade_transparency_strength=0
|
||||
# width of the thumbnail border (for thumbfast)
|
||||
thumbnail_border=3
|
||||
# rounded corner radius for thumbnail border (0 to disable)
|
||||
thumbnail_border_radius=3
|
||||
|
||||
# Button hover effects
|
||||
# active button hover effects: "glow", "size", "color"; can use multiple separated by commas
|
||||
hover_effect=size,glow,color
|
||||
# relative size of a hovered button if "size" effect is active
|
||||
hover_button_size=115
|
||||
# glow intensity when "glow" hover effect is active
|
||||
button_glow_amount=5
|
||||
# apply hover size effect to slider handle
|
||||
hover_effect_for_sliders=yes
|
||||
|
||||
# Tooltips and hints
|
||||
# enable tooltips for disabled buttons and elements
|
||||
tooltips_for_disabled_elements=yes
|
||||
# enable text hints for info, loop, ontop, and screenshot buttons
|
||||
tooltip_hints=yes
|
||||
|
||||
# Progress bar settings
|
||||
# size ratio of the seekbar handle (range: 0 ~ 1)
|
||||
seek_handle_size=0.8
|
||||
# show seek range overlay
|
||||
seekrange=yes
|
||||
# transparency of the seek range
|
||||
seekrangealpha=150
|
||||
# update chapter markers on the seekbar when duration changes
|
||||
livemarkers=yes
|
||||
# use keyframes when dragging the seekbar
|
||||
seekbarkeyframes=no
|
||||
# top chapter nibbles above seekbar
|
||||
nibbles_top=yes
|
||||
# bottom chapter nibbles below seekbar
|
||||
nibbles_bottom=yes
|
||||
# chapter nibble style. "triangle", "bar" or "single-bar"
|
||||
nibbles_style=triangle
|
||||
|
||||
# automatically set keyframes for the seekbar based on video length
|
||||
automatickeyframemode=yes
|
||||
# videos longer than this (in seconds) will have keyframes on the seekbar
|
||||
automatickeyframelimit=600
|
||||
|
||||
# always show a small progress line at the bottom of the screen
|
||||
persistentprogress=no
|
||||
# height of the persistent progress bar
|
||||
persistentprogressheight=17
|
||||
# show buffer status on web videos in the persistent progress line
|
||||
persistentbuffer=no
|
||||
|
||||
# Miscellaneous settings
|
||||
# only used at init to set visibility_mode(...)
|
||||
visibility=auto
|
||||
# visibility modes to cycle through, modes are separated by _
|
||||
visibility_modes=never_auto_always
|
||||
# minimum interval between OSC redraws (in seconds)
|
||||
tick_delay=0.03
|
||||
# use display FPS as the minimum redraw interval
|
||||
tick_delay_follow_display_fps=no
|
||||
|
||||
# Elements Position
|
||||
# Useful when adjusting font size or type
|
||||
|
||||
# title height position above seekbar
|
||||
title_height=96
|
||||
# title height position if a chapter title is below it
|
||||
title_with_chapter_height=108
|
||||
# chapter title height position above seekbar
|
||||
chapter_title_height=91
|
||||
# time codes height position
|
||||
time_codes_height=35
|
||||
# time codes height position with portrait window
|
||||
time_codes_centered_height=57
|
||||
# tooltip height position offset
|
||||
tooltip_height_offset=2
|
||||
# if tooltip contains many characters, it is moved to the left by offset
|
||||
tooltip_left_offset=5
|
||||
# portrait window width trigger to move some elements
|
||||
portrait_window_trigger=1000
|
||||
# hide volume bar trigger window width
|
||||
hide_volume_bar_trigger=1150
|
||||
# osc height offset if title above seekbar is disabled
|
||||
notitle_osc_h_offset=25
|
||||
# osc height offset if chapter title is disabled or doesn't exist
|
||||
nochapter_osc_h_offset=10
|
||||
# seek hover timecodes tooltip height position offset
|
||||
seek_hover_tooltip_h_offset=0
|
||||
# osc height without offsets
|
||||
osc_height=132
|
||||
|
||||
## Mouse commands
|
||||
## details: https://github.com/Samillion/ModernZ#mouse-commands-user-options
|
||||
|
||||
# title above seekbar mouse actions
|
||||
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 mouse actions
|
||||
playlist_mbtn_left_command=script-binding select/menu; script-message-to modernz osc-hide
|
||||
playlist_mbtn_right_command=script-binding select/select-playlist; script-message-to modernz osc-hide
|
||||
|
||||
# volume mouse actions
|
||||
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 mouse actions
|
||||
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 mouse actions
|
||||
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 mouse actions
|
||||
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) mouse actions
|
||||
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 mouse actions
|
||||
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 mouse actions
|
||||
fullscreen_mbtn_left_command=cycle fullscreen
|
||||
fullscreen_mbtn_right_command=cycle window-maximized
|
||||
|
||||
# info button mouse actions
|
||||
info_mbtn_left_command=script-binding stats/display-page-1-toggle
|
||||
3791
submodules/ModernZ/modernz.lua
Normal file
3791
submodules/ModernZ/modernz.lua
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user