極具潛力的效率啟動器 App,Raycast 腳本功能詳解

2021-01-09 騰訊網

效率啟動器是一類工具的總稱,主要方便通過鍵盤操作快速檢索信息、開啟應用、甚至完成一系列自定義工作流。Mac 上的 Spotlight 搜索實際上可以看作是系統自帶的效率啟動器,默認情況下你可以通過 + 空格鍵快速喚出,並執行文件搜索、天氣查詢、詞典查詢、計算器等一系列方便實用的操作。

Spotlight 詞典查詢

不過 Spotlight 正如它的名字一樣,功能更偏重於搜索。相比之下,Mac 上最具代表性的第三方效率啟動器 Alfred 和 LaunchBar 則擁有更強大的功能。特別是第三方效率啟動器支持的腳本功能,能夠實現大量的自定義操作。

Alfred 的腳本通過 Workflows 功能中的 Run Script Action 執行,支持 Bash、PHP、Ruby、Python、Perl、AppleScript 和 JavaScript 等多種語言。

Alfred Workflows 示例

同樣,LaunchBar 也支持 Bash、Ruby、Python、Swift、AppleScript 和 JavaScript 等常用的腳本語言,並通過 Action Editor 進行管理。

Action Editor 界面

相比之下,Raycast 支持的腳本語言最少,目前只支持 Bash、Swift、AppleScript 等 3 種。對腳本語言支持較少是 Raycast 目前的劣勢,但相比之下 Raycast 創建和管理腳本的方式最為簡潔,入門成本最低。

創建腳本

使用 Raycast 創建一個腳本非常簡單,沒有 Alfred 和 LaunchBar 複雜流程和選項,只需要在 Raycast 中搜索 Create Script Command 命令即可。

通過命令新建自定義腳本

接下來,你會進入到創建腳本的引導界面。此時,需要選擇腳本語言和運行模式,並輸入腳本名稱和腳本描述。界面中還有 2 個複選框,分別是運行腳本前需確認、以及腳本支持傳入參數的選項。

自定義腳本模版初始化

點擊右下角的 Create Script 創建並保存腳本。此時,非常建議大家在 iCloud Drive 或者你其它常用的雲同步應用中新建一個名為 Raycast Scripts 的文件夾用於存放腳本。這會極大地方便你在不同設備之間同步創建的自定義腳本。

保存自定義腳本到指定目錄

創建完成之後,使用編輯器打開相應的腳本文件,你會看到 Raycast 創建好的腳本模板。

#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title Echo SSPAI# @raycast.mode compact# Optional parameters:# @raycast.icon echo "Hello World!"

上面是一個簡單的 Bash 腳本,通過 echo 命令支持列印出 Hello World! 字符串。其中,注釋掉的部分是腳本配置項。其中包含參數:

schemaVersion:架構版本,Raycast 預留為將來 API 的變化做準備。目前只有第 1 版。

title:腳本名稱,初始化腳本時填入的名稱,支持在腳本中直接修改。

mode:運行模式,目前 Raycast 支持 3 種運行模式,下文中會介紹。

icon:腳本顯示圖標,支持 Emoji 或者絕對路徑引用本地圖片。

此外,Raycast 腳本還支持的配置參數有:

argument:腳本支持參數傳入。

needsConfirmation:運行前是否需要二次確認。

packageName:作為副標題顯示的名稱。當沒有提供時,名稱將使用腳本文件名。

iconDark:和 icon 參數一樣,用於配置明亮和暗色主題不同的圖標。

refreshTime:腳本運行在 inline 模式下的刷新時間。

currentDirectoryPath:自定義腳本執行路徑,默認在腳本存放路徑。

author:作者名稱。

authorURL:作者連結。

description:腳本描述信息。

運行模式

@raycast.mode 參數所支持配置的腳本運行模式是 Raycast 腳本功能中最為值得一提的特性,目前支持:

fullOutput:命令在單獨的視圖中列印整個輸出。

compact:命令在 Raycast 窗口下方運行並列印結果。

silent: 命令關閉 Raycast 窗口並在後臺運行。

inline:將腳本設置為以刷新儀錶板的方式顯示,支持配置參數 refreshTime。

默認情況下,Raycast 的腳本運行模式為 compact,即在窗口下方顯示運行狀態和列印輸出結果。例如上方的示例腳本採用 compact 模式執行之後的效果如下,呈現在左下角的小窗口是否簡潔,同時還能展示較少的關鍵信息。

compact 模式顯示效果

fullOutput 模式則適合腳本輸出信息較多的情況,因為 compact 顯示的信息長度有限。例如在一個支持 Ping 服務的腳本中,需要列印較多的信息,那麼這些信息則會在單獨的窗口中顯示出來。

支持 Ping 伺服器的自定義腳本

silent 模式很好理解,即腳本在後臺靜默執行,例如下面清空廢紙簍 Empty Trash 的腳本中,我們不需要列印任何輸出,只需要腳本執行即可。

silent 模式下不會展示任何輸出

Empty Trash 的腳本源碼如下:

#!/usr/bin/osascript# Required parameters:# @raycast.schemaVersion 1# @raycast.title Empty Trash# @raycast.mode silent# @raycast.packageName System# Optional parameters:# @raycast.icon # Documentation:# @raycast.description Empty the trash.tell application "Finder" to empty trash

inline 則直接在 Raycast 窗口中顯示腳本輸出信息。該模式下,我們不需要回車執行腳本,而腳本支持配置 refreshTime 參數支持固定頻率刷新,並將輸出信息緩存在 Raycast 界面中。

inline 模式直接在界面展示信息

例如上方顯示系統 CPU 和內存佔用信息的腳本中,代碼配置了 5s 刷新一次。這種模式下,我們期望少量的信息直觀呈現,而不需要多餘的交互。

#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title System Activity# @raycast.mode inline# @raycast.refreshTime 5s# @raycast.packageName Dashboard# Optional parameters:# @raycast.icon cpu_mem=$(ps -A -o %cpu,%mem | awk '{ cpu += $1; mem += $2} END {print "CPU: "cpu"% MEM: "mem"%"}')echo "${cpu_mem}"

總之,Raycast 提供的四種運行模式各有適用場景:

fullOutput 模式:適合腳本輸出信息較多的場景,展示美觀。

compact 模式:適合腳本輸出信息較少的場景,簡約大方。

silent 模式:適合腳本無輸出信息的場景,後臺靜默執行。

inline 模式:適合腳本輸出信息需要直觀展示的情形。

參數輸入

Raycast 1.2 版本中,自定義腳本正式支持傳入參數,這是裡程碑式的特性。之前不能傳參的腳本功能更為死板,沒有可交互的能力。而支持參數輸入之後,你就可以打造更多更有意思的腳本。

腳本傳入參數的方式非常簡單,只需要在腳本中添加參數配置項即可。例如上方演示的 Ping 腳本中,其支持通過參數輸入需要 Ping 的域名或伺服器地址,所以我們可以輸入 sspai.com 測試相應的 Ping 值。

#!/bin/bash# @raycast.title Ping# @raycast.author Caleb Stauffer# @raycast.authorURL https://github.com/crstauf# @raycast.description Ping an IP address or URL.# @raycast.icon # @raycast.mode fullOutput# @raycast.packageName Internet# @raycast.schemaVersion 1# @raycast.argument1 { "type": "text", "placeholder": "URL or IP address" }ping -i 0.25 -t 3 "$1"

腳本代碼中的 argument1 即為支持的第一個參數,而後方的字典配置項中支持定義參數的默認類型和佔位提示信息。如果你的腳本需要傳入多個參數,則可以使用 argument2 這樣羅馬數字遞增的方式,添加更多的參數配置項目即可。

而在 Bash 腳本中,我們只需要使用腳本內獲取參數的標準格式 $N 即可獲取參數值。

Python 腳本

目前,Raycast 僅支持 Bash、Swift、AppleScript 等 3 種腳本語言。如今是全民學 Python 的時代,尚不支持如此「時髦」的語言有點說不過去了。

但實際上,只要我們的腳本能夠通過命令行運行,都可以結合 Bash 採用曲線救國的方式來編寫腳本代碼,在 Raycast 腳本中運行 Python 代碼自然可行。

例如上方的 Hello World 代碼中,我們除了可以使用 Bash 支持的 Echo 命令直接列印信息,還可以結合 Python 來列印輸出。

#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title Echo SSPAI# @raycast.mode fullOutput# Optional parameters:# @raycast.icon # 方法 1:使用 Bash 執行echo "Bash: Hello World!"# 方法 2:使用 Python 輸出結合 Bash 執行echo $(python -c "print('Python: Hello,World.')")

運行輸出如下:

2 種方法下的輸出信息

再例如,我之前分享過一個《Setapp 設備一鍵解綁 LaunchBar 動作》,該動作用於一鍵刪除 Setapp 登錄設備,方便登錄設備超出限額時使用。這個 LaunchBar Action 是通過 Python 代碼實現。那麼如果將其轉寫成 Raycast 腳本,實際上也非常簡單。

首先,我們在 Raycast 腳本目錄中單獨創建一個 Python 腳本文件,比如命名為 delete-setapp.py。下面的代碼中,我們可以在 Python 腳本中基於 Setapp 提供的 API 來刪除已登錄的設備。

import jsonimport requests# 配置 Setapp 登錄名和密碼EMAIL = "郵箱"PASSWORD = "密碼"def auth(): """獲取 token """ response = requests.post( url="https://user-api.setapp.com/v1/auth", headers={ "Accept": "application/json", "Content-Type": "text/plain; charset=utf-8", }, # 請在此處填入用戶名和密碼 data=json.dumps( {"email": EMAIL, "password": PASSWORD, "remember": True}) ) token = response.json()['data']['token'] return token def delete(): """刪除用戶 """ try: token = auth() headers = { "Authorization": f"Token {token}", "Content-Type": "application/json", "Accept": "application/json", } devices = requests.get( url="https://user-api.setapp.com/v1/devices", headers=headers).json() if len(devices['data']) == 0: return "無在線設備" else: device_id = devices['data'][0]['id'] r = requests.delete( f'https://user-api.setapp.com/v1/devices/{device_id}', headers=headers) if r.status_code == 204: return f'成功刪除設備 {device_id}' else: return f'刪除失敗,返回值 {r.status_code}' except: return '請求失敗' if __name__ == "__main__": print(delete())

接下來,我們基於 Bash 創建一個 Raycast 腳本,其中只需要添加一行 echo 命令將 Python 腳本執行的返回結果列印輸出即可。

#!/bin/bash# Required parameters:# @raycast.schemaVersion 1# @raycast.title Delete Setapp Device# @raycast.mode compact# Optional parameters:# @raycast.author huhuhang# @raycast.authorURL https://github.com/huhuhang# @raycast.icon icons/delete.png# @raycast.packageName Delete Setapp Deviceecho $(python delete-setapp.py)

最後,在 Raycast 中執行該腳本即可看到運行結果。

使用 compact 模式刪除 Setapp 設備

雖然 Raycast 目前官方支持的腳本語言不如 Alfred 和 LaunchBar 多,但理論上你均可以使用 Bash 實現曲線救國方案,結合你自己熟悉的腳本語言來實現更多自定義操作。

腳本管理

效率啟動器的腳本管理是繞不開的話題。以我熟悉的 LaunchBar 為例,創建和管理腳本都需要依賴於 Action Editor 功能。雖然我長期使用 LaunchBar,但卻對其管理腳本的方式並不滿意,因為它太複雜了。

如下圖所示,實際上到目前為止我都不知道 Action Editor 中的一部分功能和選項是什麼意思。例如界面中的 Default Script,Suggestions Script,Action URL Script 三者有何區別、該怎樣使用?雖然我知道 LaunchBar 官方應該提供了相應的說明文檔,但是其對於普通用戶而言,上手門檻實在太高了。我相信很多人應該和我一樣,看到這個複雜界面的時候就已經頭大了。

LaunchBar 複雜的腳本管理界面

相比之下,Raycast 的腳本管理界面就簡潔很多。因為其支持直接從文件夾中加載包含的全部腳本。還記得我在文章一開始提到推薦大家在 iCloud Drive 或者你其他常用的雲同步應用中新建一個名為 Raycast Scripts 的文件夾用於存放腳本嗎?如果你這樣做,只需要在 Raycast 設置中關聯相應的文件夾即可加載文件夾下的全部腳本。

Raycast 的腳本管理界面

如果有需要的話,你還可以將不同類型的腳本存放在不同的文件夾中,Raycast 支持關聯多個文件夾,並實現腳本的自動 Reload,即在腳本代碼更新之後自動更新,保證 Raycast 會執行最新的腳本。

如果你習慣使用 Git,那麼對創建的腳本進行版本管理也就十分方便了,直接在腳本文件夾中初始化 Git 倉庫即可。

腳本推薦

除了我文章中提到的部分腳本,目前 Raycast 官方維護了一個 GitHub 腳本倉庫用於分享 社區開發的實用腳本。雖然 Raycast 的社區腳本共享量還遠不如 Alfred 和 LaunchBar,但由於 Raycast 本身的定位就是開發人員,隨著用戶越來越多,相信也會有更多實用的腳本被分享出來。

自定義腳本解決的核心需求往往並不具有普適性,所以我個人經常使用的腳本無法分享出來,因為僅和自己所做的事情有關,用於提升我個人的工作效率。授人以魚不如授人以漁,如果你期望用好 Raycast 或者其他效率啟動器的腳本功能,可以嘗試學習 Bash 或者 Python 等任意一種腳本語言,實際上掌握基礎語法寫一個簡單腳本並不困難,網絡上免費的學習資源也非常豐富。

如果你想了解 Raycast 作為效率啟動器的基礎功能,可以 搜索並閱讀相關文章。目前,Raycast 完全免費,可以 前往官網下載 使用。

> 下載少數派 客戶端、關注 少數派公眾號,發現更多實用 App

> 年度回顧、好物推薦…… 更多精彩盡在少數派 2020 年度盤點

本文著作權歸作者所有,並授權少數派獨家使用,未經少數派許可,不得轉載使用。

相關焦點

  • 快捷啟動器Raycast|它想成為你的Mac默認搜索工具
    直接可以在Raycast中完成,無需單獨打開提醒事項,效率明顯提升了不少。剪貼板歷史記錄算是Raycast給我的一個小小驚喜,這是Raycast本身自帶的小功能。關於剪貼板管理器,我之前也用過一段時間的paste,但發現自己其實用到的並不多,沒必要單獨開一個軟體持續後臺,另外考慮到雲端同步的隱私安全,paste我就並沒有用很久。
  • 效率神器Raycast,它想成為你Mac默認搜索工具
    支持腳本擴展……雖然我可能並不是Raycast的精準目標用戶,但這段時間體驗下來確實發現了不少驚喜,讓我開始習慣用Raycast取代聚焦(Spotlight)。Raycast體驗分享1。可完全取代聚焦(Spotlight)既然Raycast包含了聚焦(Spotlight)的功能,意味著你完全可以用Raycast替換掉它。
  • Unity - Raycast 射線檢測
    Ray 射線含義:官方解釋為一條無窮的線,開始於origin點,朝向direction方向(但是,根據項目驗證來看其默認長度為單位向量,只有對direction進行乘以倍率,才可實現延長射線,而非無窮)用法:Ray ray
  • Raycast年末更新:新增懸浮便籤、瀏覽器書籤查詢
    類似這種中文搜索問題,其實在第一次接觸 Raycast 就已經察覺,包括在搜索應用名時同樣會出現。因此,我也是多次建議大家儘量使用英文搜索。即便沒有語種友好度問題,使用英文搜索無需來回切換輸入法本身就是一種改善效率的問題。
  • 淺析射線檢測 raycast 的使用!Cocos Creator 3D!
    private _ray: geometry.ray = new geometry.ray();觸摸檢測的就用全局系統事件。//基於物理碰撞器的射線檢測if (PhysicsSystem.instance.raycast(this.
  • 使用多年的窗口管理工具Magnet,我用Raycast替換了它
    前不久給大家推薦過Raycast這款工具,它既能夠完全代替macOS的「聚焦(Spotlight)」,也能夠通過腳本命令來實現更多功能拓展。在近幾個版本的更新中,除了常規的體驗完善之外,Raycast也不斷豐富默認集成的功能,其中最讓我驚喜的是窗口調節功能,基本可以完全替代Magnet。
  • Raycast年末更新,這些功能是你想要的麼?
    老實說,使用 Raycast 第一個公測版時,並沒有特別剛需的功能讓我繼續使用下去,況且還有中文搜索不夠友好的問題。但 Raycast 的顏值和對其未來新功能的期待還是讓我用它替換了 macOS 的聚焦。在 v1.5.1 版本中新增的懸浮便籤是 Raycast 又一使用工具,類似功能的有 SideNotes、macOS 自帶的便籤等。
  • Microsoft正在為Windows用戶測試「語音啟動器」功能
    據報導,目前 Microsoft 正在測試一種稱為「語音啟動器」的 Windows 10 新功能,該功能可以改善用戶與應用程式和文件進行交互的方式。 根據該報告,這項實驗性功能會自動顯示在 Windows Search API 中。用戶還可以通過 Windows Narrator 快捷方式「Win + H」手動喚起語音啟動器。
  • 《原神》新手入門指南 啟動器位置詳解
    導 讀 原神啟動器在哪?
  • 最具潛力光伏技術 鈣鈦礦電池轉換效率創紀錄(附股)
    原標題:最具潛力光伏技術 鈣鈦礦電池轉換效率創紀錄(附股) 摘要 【最具潛力光伏技術 鈣鈦礦電池轉換效率創紀錄(附股)】據報導,德國海姆霍茲柏林材料所(HZB
  • 磁力啟動器的特點_磁力啟動器由什麼組成
    打開APP 磁力啟動器的特點_磁力啟動器由什麼組成 網絡整理 發表於 2019-11-20 10:08:07   磁力啟動器概述   磁力啟動器是一種用在CCS的標準大於0.5KW電機上的起動裝置。
  • 直播筆記 | Unity中射線檢測詳解
    這周三我們直播剖析了Unity中射線檢測的功能,以下是直播內容精華部分筆記。完整錄播:https://www.bilibili.com/video/av24468720源碼地址:https://github.com/zhenghongzhi/PhysicRaycast什麼是射線(Ray)?
  • 我的世界1.8.0啟動器下載 官方啟動器1.3.9離線版
    而對於我的世界玩家而言 ,官方啟動器的重要性是不言而喻的。而從EasyLogin啟動器4.3版開始經歷過眾多的啟動器之後,還是覺得官方啟動器是尚佳選擇,於是1.3.9版的更新發布推遲了很長時間。今日終於見面了,此次公布的正是這一款我的世界1.80啟動器的下載資源,也是官方啟動器1.3.9版的離線模式。需要的玩家趕緊收藏吧。
  • 谷歌Chromecast是什麼?Chromecast多少錢?
    谷歌Chromecast是什麼  Chromecast是谷歌在2013年7月25日發布的全新連接設備。該設備運行簡化版Chrome作業系統,可以插在電視HDMI接口上。在同一WiFi環境下,用戶通過Chromecast能將手機或平板上播放的Youtube視頻推送到電視上。
  • x-ray檢測設備的原理,特點及其功能介紹?
    今天,讓我們來談談「X-ray檢測設備」,它是快速發展的電子行業中有能力的人。相信在這個行業工作的朋友有一定的了解。本文總結了X-ray檢測設備的原理、特點和及其功能,以便每個人在閱讀X-ray檢測設備後都能快速掌握它。  一.日聯科技X射線檢測設備的功能  1.首先要介紹的是測量功能,它可以測量直線距離,圓直徑,同心圓,點與圓心之間的距離等。
  • 稀土納米材料——這種材料極具潛力!(上)
    一方面在材料體系上更多地趨向於稀土複合材料;另一方面,在形態上更多地集中於低維和功能晶體材料。特別是隨著現代納米科學的發展,將納米材料所具備的小尺寸效應、量子效應、表面效應和界面效應等與稀土元素獨特的電子層結構特點相結合,稀土納米材料呈現出不同於傳統材料的許多新穎的性質,更大限度地發揮稀土材料的優異性能,並進一步拓展其在傳統材料領域和新型高科技製造領域的應用。
  • 日光燈的安裝接線方法_日光燈線路圖詳解
    打開APP 日光燈的安裝接線方法_日光燈線路圖詳解 發表於 2017-12-21 19:31:58   日光燈線路圖詳解   一、具有低溫低壓啟動特性的日光燈線路   具有低溫低壓啟動特性的日光燈線路如圖1-1-1所示。該、電路是為日光燈在氣溫低、電源電壓也低,從而導致啟動困難的情況設計的。它是在日光燈的啟動器迴路串聯一隻二極體構成的低溫啟動器線路。
  • 遊戲蜂窩輔助全新功能 免ROOT腳本錄製做你專屬定製
    新版本新功能——可視化錄製腳本,自錄自用,隨錄隨用,讓一切化繁為簡。《遊戲蜂窩》新版實現可視化腳本錄製功能,無需ROOT,也無需付費,就能使用。開啟後,蜂窩會抓取用戶在手機上的操作,完整的記錄下來作為腳本,有需要使用時可以一鍵啟動,開啟批量重複的運行。
  • 原神傳送點解鎖記錄查詢方法 原神怎麼分辨帳號是不是科技腳本號
    很多玩家在購買帳號時,都很擔心帳號是腳本號或者科技號,那麼有沒有什麼方法能夠辨別帳號是不是腳本號呢,我們可以通過查詢傳送點記錄來辨別,想要知道具體方法的小夥伴們一起來看看吧!