5

使用 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

“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"'      

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

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

谢谢!

4

0 回答 0