【问题标题】:Launch script from Kodi menu从 Kodi 菜单启动脚本
【发布时间】:2021-02-04 03:23:04
【问题描述】:

我正在运行 Kodi 18,我想在主菜单中添加一个项目,它只是启动一个 bash 脚本。经过大量搜索,没有明显的方法可以编辑菜单(我不想为此更改主题)。

我也不想为此创建一个完整的插件(这似乎是谷歌找到的唯一替代方案)。

这么简单以至于没有人发布如何操作吗?或者这是不可能的?有人可以提供建议吗?

【问题讨论】:

    标签: bash launch kodi


    【解决方案1】:

    如果更改主题不成问题,您还可以使用 Aeon 系列主题,这些主题通常允许自定义主菜单。当然,如果您喜欢它们的外观,这只是一种解决方案,但它们通常是可定制的。

    作为 Kodi 18 可用皮肤的快速检查:

    • Aeon(除了 Tajo 之外的大多数版本都比较简单)
    • 琥珀色
    • Unity(好像分享了我在永旺用的)
    • Rapier(有点受限,但仍可以添加自定义操作,如 System.Exec)

    使用这些皮肤,您可以编辑主菜单(通过 Kodi 的“界面”设置菜单中可用的皮肤设置下的各种屏幕)。在那里你可以选择一个自定义命令并使用System.ExecSystem.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,并可选择将您的名称添加到其中。这显然涉及更多,但我认为这是您无需真正更改皮肤且无需从头开始编写插件即可拥有它的唯一方法。

    【讨论】:

      【解决方案2】:

      这部分回答了您的问题:它允许为您的脚本创建键盘快捷键,而不是在主菜单中创建项目。

      两个内置函数允许执行 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>
      
      • keymap 是文件的整体描述,不应更改。
      • global 指的是哪个window 链接可用(如果当前特定窗口中没有使用快捷方式,global 是一个后备)
      • 键盘是指键盘快捷键(可以添加游戏手柄、鼠标等)
      • a 是激活快捷键的键,这里带有修饰符 shift+ctrl(可以删除单个快捷键,但要注意与existing shortcuts 的冲突)。不要忘记在行尾也修改它。
      • script.sh 是您的脚本名称(如果不在用户 $PATH 中,则为完整路径),它必须是可执行的,与所有 shell 脚本一样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-07
        • 1970-01-01
        相关资源
        最近更新 更多