孤雨独火 发表于 2021-12-8 01:06:49

[mpv] 右键菜单脚本

本帖最后由 孤雨独火 于 2021-12-20 10:12 编辑



简介

contextmenu_gui 是一组实现mpv的图形化右键菜单的脚本群。

该脚本组修改自 https://gitlab.com/carmanaught/mpvcontextmenu
修改适配了win10/win11,经过摸索测试后最终实现了本地化和便携化。
预设的键位结构大体依照的是 mpv.net_CM 的右键菜单

只有 mpv release 0.33.0 之后的版本才具有支持脚本群组的特性
使用 懒人包2021EX 及之后版本的用户直接跳过中间章节,从自定义配置起开始阅读



必要前置

1. tcl工具包(必须含 tk 模块) http://www.tcl-lang.org/software/tcltk/bindist.html

该组件负责运行时绘制菜单的图形框架。

不是所有预编译的版本都能正常使用,你可能会遇到菜单文本乱码,菜单启动报错等问题。。。
经过我长时间测试过的可用的是:v8.6.x
ActiveTcl(完整sdk,体积较大,零散文件很多) https://www.activestate.com/products/tcl/
KitCreator(精简库,体积很小,单文件) http://tclkits.rkeene.org/fossil/wiki/Downloads

单文件版的可以直接解压到 mpv.exe 所在目录,安装版的自行提取或直接安装。

2. 下载脚本群组的文件夹到mpv的设置文件夹(看不懂文字说明就看我的repo目录结构)MPV_lazy/portable_config/scripts/contextmenu_gui at main · hooke007/MPV_lazy (github.com)

即 contextmenu_gui 文件夹位于 scripts 内。对应的脚本设置文件与一般脚本的放置位置无差别



可选的关联脚本


一些预置键位的功能由其它第三方脚本提供,在菜单内已标注 【外置脚本】

1. open_dialog.lua

2. playlistmanager.lua

都在同一仓库获取 https://github.com/hooke007/MPV_lazy/tree/main/portable_config/scripts
包括对应设置文件,下载到正确位置



使用说明

编辑你的 input.conf
内置此参数 绑定一个按键后可在mpv内唤起菜单

MOUSE_BTN2 script-message-to contextmenu_gui contextmenu_tk
不会有人不喜欢鼠标右键吧
最好不要同时使用 MOUSE_BTN2 和 MOUSE_RIGHT (正常鼠标这两都是指向都是右键)



菜单选项

contextmenu_gui_engine.conf 该文件设定菜单所用的默认字体
其中,必须保证 tcltkBin 指向你实际下载使用的tcl/tk二进制文件 默认值为 tclsh (无需扩展名,可用绝对路径)

如果你使用单文件版(例kitcreator的的当前版本)放在 mpv.exe 所在目录, tcltkBin 的值 只需匹配文件名 tclkit-gui-8_6_12-twapi-4_6_0-x64-max , 或者改二进制的文件名为 tclsh 而无需修改脚本设置文件。

自定义配置

contextmenu_gui.conf 提供了可自定义的空档位滤镜/着色器各十个
根据我的示例和说明进行适配你的本机修改。

对应快捷键的参数只是纯粹的文本显示
存在较大限制和问题,比如无法并列多个着色器,图上红圈部分是仅供示范文本显示,具体阅读示范配置文件的说明。


其它

未载入文件时,菜单只显示很少的选项



冷启动菜单的速度不快,但后续唤起延迟应该很低
不同tcl/tk编译版的性能和其它反馈表现可能不一致
一些键位(例如调色板)会二次唤起菜单,原本的设计是直接弹出到上次点击的位置,但是不知道为什么在windows上只能显示1级菜单
应该几乎没人在windows上广泛使用过这套脚本,可能存在各种潜在问题,欢迎当白鼠(我大概没能力解决,上游只在linux上使用,没有技术支援)


苏辰汐 发表于 2021-12-8 09:08:56

看上去不错,着色器组合的限制问题也许可以通过配置组变相实现?

上游示例中基于GTK的ui似乎更美观,不过好像不能移植到win

苏辰汐 发表于 2021-12-8 13:03:12

本帖最后由 苏辰汐 于 2021-12-8 13:19 编辑

测试了一下,菜单响应在我这儿还好,和mpv.net差不多。二次唤起菜单我在其他的选项上也触发了,算是比较影响体验的地方,后面能够修复就好了。

菜单ui的颜色有地方改吗?比较喜欢深色的,还是tk特性只能白色

顺便自定义菜单项貌似不太方便,除了conf配置里的几个外只能在main.lua里改,改main.lua后就不方便通过脚本管理器manager.lua同步你的上游更新了

音轨和字幕的轨道信息的解析也不太好,都是文件名而不是真正的轨道信息(lang和channels之类)。这一点mpv.net做的非常好
总的来说这个脚本对mpv体验改善还是不小的,期待后续完善

娃哈哈 发表于 2021-12-8 18:51:02

mpv初衷是不折腾,但是结果就是给人折腾的

孤雨独火 发表于 2021-12-8 20:52:24

苏辰汐 发表于 2021-12-8 13:03
测试了一下,菜单响应在我这儿还好,和mpv.net差不多。二次唤起菜单我在其他的选项上也触发了,算是比较影 ...

二次唤起是feature不是bug
有些功能的目的是让你快速执行多次重复命令,其他选项是指什么,可能手滑有的选项复制错了

〉菜单ui的颜色
我完全一窍不通,坐等大佬降临

net用的是mediainfo这个dll来解析track的,体验好很多

苏辰汐 发表于 2021-12-9 08:47:16

孤雨独火 发表于 2021-12-8 20:52
二次唤起是feature不是bug
有些功能的目的是让你快速执行多次重复命令,其他选项是指什么,可能手滑有的 ...

其他选项不是你的问题,我自己修改了main.lua增加了几个字幕兼容性菜单项,测试中发现开关阴影边框缩放会触发二次唤醒,其他待增加选项尚未测试
二次唤醒原来是上游的feature啊,个人不太喜欢这种特性,印象中其他播放器也没有这种交互逻辑(

说起来在这个菜单项里绑定的键位会和input.conf的冲突吗?哪个优先级高点




孤雨独火 发表于 2021-12-9 10:19:29

本帖最后由 孤雨独火 于 2021-12-9 10:26 编辑

苏辰汐 发表于 2021-12-9 08:47
其他选项不是你的问题,我自己修改了main.lua增加了几个字幕兼容性菜单项,测试中发现开关阴影边框缩放会 ...
你不设置 Repost 就不会二次唤醒,,你看看是不是多复制了一个参数

没有冲突,独立的指令。跟控制台输命令一样的效果,大部分选项都能实时监控属性的变化状态

苏辰汐 发表于 2021-12-9 12:40:02

本帖最后由 苏辰汐 于 2021-12-9 13:48 编辑

孤雨独火 发表于 2021-12-9 10:19
你不设置 Repost 就不会二次唤醒,,你看看是不是多复制了一个参数

没有冲突,独立的指令。跟控制台输命 ...
确实是最后多了个true的参数,发现该项下一个的菜单项如果有repost值的话,执行该项也会导致二次唤醒,也是feature?

键位不冲突的话感觉可以像mpv.net那样把键位也加上,这样对于需要连续或切换操作的可以根据键位提示后续以快捷键操作

测试了下会冲突,同键位指令会覆盖

孤雨独火 发表于 2021-12-9 22:52:10

本帖最后由 孤雨独火 于 2021-12-9 23:02 编辑

苏辰汐 发表于 2021-12-9 12:40
确实是最后多了个true的参数,发现该项下一个的菜单项如果有repost值的话,执行该项也会导致二次唤醒,也 ...
不会。我需要看你完整的修改内容。



没懂这个意思。这个脚本和input。conf是完全独立的。所谓的快捷键只是显示的纯文本,没有任何其他实际意义(意思是提醒你有个快捷键和这个按钮功能一样)。
为了保证通用性(不使用懒人包的input)其他按钮我都没有显示预设的“提醒快捷键文本”。当然也可以把所有预设文本改为变量支持配置文件去修改,但是这样变量就太太太太太多了,而且并不比直接改脚本来的方便。



“测试了下会冲突,同键位指令会覆盖”
不知道是我理解有错误还是什么。
input里你的快捷键假如是 亮度+2
按钮的功能你设置的是 亮度+1
这两不会冲突,各自执行各自的指令完全不会干扰

如果你指的是按钮左边那个状态监视器。。。那不叫冲突,所有播放器都是这样的(显示当前的实际状态而不是记录上次执行的动作)
最简单就看解码模式的子菜单,在不支持硬解码的片源上即使你手动点某个硬解码选项,他依然会显示你实际使用的是软解

苏辰汐 发表于 2021-12-9 23:07:29

孤雨独火 发表于 2021-12-9 22:52
不会。我需要看你完整的修改内容。




原来显示的快捷键只是纯文本(

那没问题了,我是测试你预设的键位提示然后调用了input.conf同键位指令,以为是冲突被覆盖了(
页: [1] 2
查看完整版本: [mpv] 右键菜单脚本