如何使 Platypus 创建的 shell 应用程序响应键盘命令?

Sve*_*don 5 python shell platypus

我使用 Platypus 创建了一个简单的应用程序,它运行以下 shell 脚本:

    cd
    if [ -e /Applications/Music.app/Contents/Resources/Music.py ]; then
      export PATH=$PATH:/Applications/Music.app/Contents/Resources
      cd "/Applications/Music.app/Contents/Resources"
      EXTENSION=`osascript -e 'tell application (path to frontmost application as text) to display dialog "Do you want to enable extensions during this session?" buttons {"Yes", "No"} with  icon file "Applications:Music.app:Contents:Resources:alert.icns"'`
      if [ "$EXTENSION" == "button returned:Yes" ]; then
        python Music.py arg1 >> music.txt &
      else
        python Music.py arg2 >> music.txt &
      fi
    else
      osascript -e 'tell application (path to frontmost application as text) to display dialog "Please move this application into your native applications folder (/Applications)." buttons {"OK"} with icon stop'
      osascript -e 'quit app "Music.app"'
    fi
Run Code Online (Sandbox Code Playgroud)

“Music.py”脚本在无限循环中运行,不断选择大约 80 个 URL 之一以使用 chromedriver 在 Selenium 上加载。每个 URL 都会加载一首特定的歌曲,当歌曲播放完毕时,Python 脚本会在可能的歌曲 URL 数组中随机选择另一个位置并加载相应的歌曲(因此它基本上会随机播放给定的播放列表)。

可以使用 暂停播放kill -STOP [pid]并使用 继续播放kill -CONT [pid]命令恢复播放。但是,我希望能够通过单击 Mac 扩展坞上的“Music.app”图标(将此应用程序带到前台并确保它接收所有击键)并使用键盘快捷键来暂停它。

经过一些实验,我发现通过运行命令:

   bind '"^P":"ID_PARENT=`pgrep chromedriver` && ID_CHILD=`pgrep -P $ID_PARENT` && echo $ID_CHILD && kill -STOP $ID_CHILD\n"'
   bind '"^R":"ID_PARENT=`pgrep chromedriver` && ID_CHILD=`pgrep -P $ID_PARENT` && echo $ID_CHILD && kill -CONT $ID_CHILD\n"'      
Run Code Online (Sandbox Code Playgroud)

在我的普通命令行中,我可以分别使用 Ctrl + P 和 Ctrl + R 暂停和恢复该过程。然而,当我在 shell 脚本的开头添加这些行时,键盘快捷键仍然没有在应用程序中执行任何操作(击键实际上并未在 shell 脚本中注册)。虽然我可以使用默认命令行暂停/播放音乐,但我的目标是创建一个用户友好且完全可移植的应用程序,并且我希望用户可以完全操纵程序,而无需与除应用程序本身之外的任何内容进行交互。

所以,我的问题是,如何将这些键盘快捷键添加到应用程序本身(由 Platypus.app 创建,本质上只是运行 shell 脚本)?我正在使用 MacOS High Sierra 10.3.5,如果这很重要的话。一般来说,我对编程绝对是新手,对 shell 没有太多经验,以前从未使用过 Platypus.app,所以我对此不熟悉,不知道我想要的是否真的可能。任何帮助表示赞赏。

谢谢!