【发布时间】:2021-02-04 03:23:04
【问题描述】:
我正在运行 Kodi 18,我想在主菜单中添加一个项目,它只是启动一个 bash 脚本。经过大量搜索,没有明显的方法可以编辑菜单(我不想为此更改主题)。
我也不想为此创建一个完整的插件(这似乎是谷歌找到的唯一替代方案)。
这么简单以至于没有人发布如何操作吗?或者这是不可能的?有人可以提供建议吗?
【问题讨论】:
我正在运行 Kodi 18,我想在主菜单中添加一个项目,它只是启动一个 bash 脚本。经过大量搜索,没有明显的方法可以编辑菜单(我不想为此更改主题)。
我也不想为此创建一个完整的插件(这似乎是谷歌找到的唯一替代方案)。
这么简单以至于没有人发布如何操作吗?或者这是不可能的?有人可以提供建议吗?
【问题讨论】:
如果更改主题不成问题,您还可以使用 Aeon 系列主题,这些主题通常允许自定义主菜单。当然,如果您喜欢它们的外观,这只是一种解决方案,但它们通常是可定制的。
作为 Kodi 18 可用皮肤的快速检查:
使用这些皮肤,您可以编辑主菜单(通过 Kodi 的“界面”设置菜单中可用的皮肤设置下的各种屏幕)。在那里你可以选择一个自定义命令并使用System.Exec 和System.ExecWait。我在使用 Kodi 18 的 Windows 上确实遇到了问题,并且命令的路径中有空格,这可以通过在 $PATH 中提供可执行文件并确保可执行文件名称不包含空格来解决。
编辑
我刚刚意识到您不想切换主题(我读到不想创建一个)。为此,不幸的是默认(河口)皮肤不提供可定制性,但是,您可以编辑addons/skin.estuary/xml/Home.xml。
在这个文件中,你可以找到这个位:
...
<content>
<item>
<label>$LOCALIZE[342]</label>
<onclick condition="Library.HasContent(movies) + Skin.HasSetting(home_no_categories_widget)">ActivateWindow(Videos,videodb://movies/,return)</onclick>
<onclick condition="Library.HasContent(movies) + !Skin.HasSetting(home_no_categories_widget)">ActivateWindow(Videos,videodb://movies/titles/,return)</onclick>
<onclick condition="!Library.HasContent(movies)">ActivateWindow(Videos,sources://video/,return)</onclick>
<property name="menu_id">$NUMBER[5000]</property>
<thumb>icons/sidemenu/movies.png</thumb>
<property name="id">movies</property>
<visible>!Skin.HasSetting(HomeMenuNoMovieButton)</visible>
</item>
...
您可以在此处将其更改为以下内容(例如):
...
<content>
<item>
<label>Firefox</label>
<onclick>System.Exec(firefox)</onclick>
</item>
<item>
<label>$LOCALIZE[342]</label>
<onclick condition="Library.HasContent(movies) + Skin.HasSetting(home_no_categories_widget)">ActivateWindow(Videos,videodb://movies/,return)</onclick>
<onclick condition="Library.HasContent(movies) + !Skin.HasSetting(home_no_categories_widget)">ActivateWindow(Videos,videodb://movies/titles/,return)</onclick>
<onclick condition="!Library.HasContent(movies)">ActivateWindow(Videos,sources://video/,return)</onclick>
<property name="menu_id">$NUMBER[5000]</property>
<thumb>icons/sidemenu/movies.png</thumb>
<property name="id">movies</property>
<visible>!Skin.HasSetting(HomeMenuNoMovieButton)</visible>
</item>
...
这会将 Firefox 菜单项放在菜单列表的顶部。
请注意,虽然您可以就地编辑此插件,但它可能会在皮肤更新时覆盖所做的更改。因此,最好使用新名称复制文件夹并更新 addon.xml 以更改插件的 ID,并可选择将您的名称添加到其中。这显然涉及更多,但我认为这是您无需真正更改皮肤且无需从头开始编写插件即可拥有它的唯一方法。
【讨论】:
这部分回答了您的问题:它允许为您的脚本创建键盘快捷键,而不是在主菜单中创建项目。
两个内置函数允许执行 bash 脚本:
System.Exec(exec)
执行 shell 命令。脚本的完整路径必须放在括号内。
System.ExecWait(exec)
执行 shell 命令并冻结 Kodi,直到 shell 关闭。与“System.Exec(exec)”一样,脚本的完整路径必须放在括号内。
信息来自here。我已经测试了第二个,它与位于 ~/.local/bin 中的 bash 脚本完美配合,但有一个限制:你不能将参数传递给脚本。 ~/.local/bin 位于默认用户 $PATH(在 Raspbian 上)中,这使我只能使用脚本名称而不是完整路径。
你可以通过创建user keyboard shortcut file来调用这个函数
nano ~/.kodi/userdata/keymaps/keyboard.xml
并添加到其中
<keymap>
<global>
<keyboard>
<a mod=shift,ctrl>System.ExecWait(script.sh)</a>
</keyboard>
</global>
</keymap>
【讨论】: