Documentation

高級配置 (config.toml)

使用 config.toml 檔案以程式化方式配置 Snapzy,實現可攜的偏好設定管理、自動備份以及 dotfiles 工作流程同步。

概述

針對進階使用者、開發人員和系統管理員,Snapzy 支援使用標準的 TOML 檔案 (config.toml) 進行進階程式化配置。這使您能夠以純文字形式管理所有應用程式偏好設定,使用 dotfiles 儲存庫進行同步,並在 macOS 環境中實現自動化部署。

初始化要求 — 由於 macOS 沙盒安全限制,Snapzy 需要一次性授予資料夾存取權限,才能讀寫您主目錄下的檔案。請在「偏好設定」的「進階」索引標籤中完成此設定。


快速入門

1. 授予配置存取權限

  1. 打開 Snapzy 偏好設定 (Cmd + ,) 並導航到 進階 (Advanced) 索引標籤。
  2. 點擊 設定 config.toml (Set Up config.toml)
  3. 系統將彈出原生檔案對話方塊,提示您選擇或授予配置目錄的存取權限。選擇配置目錄(通常為 ~/.config/snapzy/)並點擊 授予存取權限 (Grant Access)

授予存取權限後,Snapzy 會在以下路徑自動產生預設的 config.toml 檔案:

~/.config/snapzy/config.toml

2. 同期與背景載入

  • 啟動時自動套用: Snapzy 在每次應用程式啟動時剖析並驗證 config.toml
  • 背景自動同步: 應用程式在背景監控 config.toml 檔案的變更。直接在編輯器中儲存的修改會在幾秒鐘內自動完成驗證並套用(已進行防抖處理以避免讀取正在寫入的殘缺檔案)。
  • 手動同步: 您可以點擊進階設定索引標籤中的 同步 config.toml (Sync config.toml) 按鈕來立即重新載入配置。
  • 恢復預設設定: 點擊 恢復預設設定 會覆寫現有的 TOML 檔案,重置為出廠預設值。

完整註釋的 TOML 範例

以下是包含所有可配置項和各屬性註釋說明の完整 config.toml 檔案範本。

# Snapzy TOML 配置結構版本 (必須為 1)
schema_version = 1

# 此檔案所需的最低 Snapzy 版本
snapzy_min_version = "1.20.0"

[general]
language = "system"                # "system" 或語言代碼: "en", "vi", "ja", "ko", "ru", "zh", "zh-tw"
appearance = "system"              # 主題外觀: "system", "light" 或 "dark"
play_sounds = true                 # 擷取或錄製時播放音效
start_at_login = false             # macOS 啟動時自動執行 Snapzy
export_location = "~/Pictures"     # 截圖和影片的本地儲存資料夾 (支援 ~ 路徑展開)

[updates]
check_automatically = true         # 使用 Sparkle 自動檢查更新
download_automatically = false     # 在背景自動下載更新而不顯示提示

[diagnostics]
enabled = true                     # 啟用本地診斷日誌以進行疑難排解
retention_days = 7                 # 診斷日誌檔案保留天數 (1 到 30 天)

[capture]
hide_desktop_icons = false         # 擷取時臨時隱藏桌面圖示
hide_desktop_widgets = false       # 擷取時臨時隱藏桌面小工具

[capture.naming]
screenshot_template = "Snapzy_{year}-{month}-{day}_{hour}-{minute}-{second}_{milliseconds}" # 截圖命名範本
recording_template = "Snapzy_{year}-{month}-{day}_{hour}-{minute}-{second}_{milliseconds}"  # 影片命名範本

[capture.screenshot]
format = "png"                     # 截圖儲存格式: "png", "jpeg" 或 "webp"
include_snapzy = false             # 截圖包含 Snapzy 自身的輔助視窗
show_cursor = false                # 截圖包含 macOS 滑鼠指標

[capture.scrolling]
show_hints = true                  # 在捲動截屏期間顯示引導提示

[capture.ocr]
success_notification = false       # 文字提取 (OCR) 成功時發送系統通知

[capture.object_cutout]
auto_crop = true                   # 自動裁剪摳圖主體周圍的空白邊緣

[capture.after.screenshot]
save = true                        # 自動將截圖儲存到本地輸出資料夾
quick_access = true                # 擷取後在螢幕上顯示快速存取(預覽)面板
copy_file = true                   # 複製已儲存檔案的完整路徑到系統剪貼簿
open_annotate = false              # 擷取後自動在標註編輯器 (Annotate) 中打開
upload_to_cloud = false            # 擷取後立即上傳到配置的雲端儲存

[capture.after.recording]
save = true                        # 自動將錄影儲存到本地輸出資料夾
quick_access = true                # 錄製完成後在螢幕上顯示快速存取面板
copy_file = true                   # 複製影片檔案的完整路徑到系統剪貼簿
open_annotate = false              # 錄製後自動在影片編輯器 (Video Editor) 中打開
upload_to_cloud = false            # 錄製完成後立即上傳到配置的雲端儲存

[recording]
format = "mov"                     # 影片封裝格式: "mov" 或 "mp4"
quality = "high"                   # 影片壓縮品質預設: "high", "medium" 或 "low"
fps = 30                           # 目標影片錄製影格率 (1 到 120)
output_mode = "video"              # 匯出媒體形式: "video" (MP4/MOV) 或 "gif" (動態 GIF)
capture_system_audio = true        # 錄製系統輸出的聲音 (需要安裝虛擬音效卡驅動)
capture_microphone = false         # 錄製外部麥克風聲音
microphone_device_id = ""          # 音訊輸入的 CoreAudio 麥克风設備 UID 字串
remember_last_area = true          # 記住上次錄製區域的座標,用於後續錄製
include_snapzy = false             # 錄影影片中包含 Snapzy 的控制工具列與層
show_cursor = true                 # 錄影影片中包含 macOS 滑鼠指標
highlight_clicks = false           # 錄影時在滑鼠點擊位置繪製高亮環動畫
show_keystrokes = false            # 錄影時在螢幕上懸浮顯示按鍵組合

[recording.mouse_highlight]
size = 50                          # 滑鼠點擊高亮圓環的像素直徑 (20 到 120)
animation_duration = 0.7           # 點擊波紋動畫持續時間 (秒,0.1 到 3.0)
color = "#FF000080"                # 高亮圓環的十六進位顏色代碼 (#RRGGBB 或 #RRGGBBAA)
opacity = 0.5                      # 圓環的透明度 (0.0 到 1.0)
ripple_count = 3                   # 每次點擊產生的波紋層數 (1 到 6)

[recording.keystrokes]
font_size = 18.0                   # 按鍵顯示的字型大小 (磅,10.0 到 48.0)
position = "bottomCenter"          # 顯示位置: "topLeft", "topRight", "bottomLeft", "bottomRight", "bottomCenter" 等
display_duration = 2.0             # 按鍵顯示在螢幕上的停留時間 (秒,0.3 到 10.0)

[recording.annotation_shortcuts]
modifier = "shift"                 # 錄製中調用快捷標註欄的輔助鍵: "shift", "option", "command", "control"
hold_duration = 1.0                # 輔助鍵長按以啟用之時間門檻 (秒,0.1 到 5.0)

[quick_access]
enabled = true                     # 擷取後啟用快速存取預覽面板
position = "bottomRight"           # 面板停靠的螢幕角: "topLeft", "topRight", "bottomLeft", "bottomRight"
auto_dismiss = true                # 啟用倒數計時自動關閉預覽面板
auto_dismiss_delay = 10.0          # 自動關閉等待時間 (秒,3.0 到 30.0)
pause_countdown_on_hover = true    # 滑鼠懸停在面板上時暫停倒數計時關閉
overlay_scale = 1.0                # 預覽面板的整體縮放倍數 (0.75 到 1.5)
drag_drop = true                   # 允許從面板直接拖曳檔案匯出到其他應用程式
actions_order = ["copy", "annotate", "save", "cloud", "delete"] # 快捷按鈕排序順序
enabled_actions = ["copy", "annotate", "save", "cloud", "delete"] # 要顯示的快捷功能列表

[quick_access.slots]
center_top = "copy"                # 映射操作到中央頂部槽位
center_bottom = "annotate"         # 映射操作到中央底部槽位
top_trailing = "save"              # 映射操作到右頂部槽位
top_leading = "cloud"              # 映射操作到左頂部槽位
bottom_leading = "delete"          # 映射操作到左底部槽位
bottom_trailing = ""               # 留空表示不分配

[history]
enabled = true                     # 開啟應用程式內的截圖與影片歷史記錄儲存
retention_days = 30                # 歷史記錄儲存天數限制 (0 表示無限期保留)
max_count = 500                    # 最大歷史記錄儲存條數限制 (0 到 1000)
background_style = "hud"           # 歷史記錄面板背景風格: "hud" (毛玻璃效果) 或 "solid" (不透明)
open_on_launch = false             # 啟動 Snapzy 時自動打開歷史記錄瀏覽器視窗

[history.floating]
enabled = true                     # 在螢幕上顯示歷史記錄懸浮 HUD 條
position = "topCenter"             # 懸浮條的螢幕對齊方式: "topCenter", "bottomCenter", "center"
default_filter = "all"             # 初始過濾類型: "all", "screenshot", "recording", "ocr", "cutout"
max_displayed_items = 10           # 懸浮 HUD 裡的最大預覽卡片數 (3 到 20)
scale = 1.0                        # 歷史記錄懸浮 HUD 的縮放比例 (0.8 到 1.2)
auto_clear_days = 0                # 自動清理早於指定天數的历史條目 (0 到 365)

[cloud]
provider = "aws_s3"                # 雲端儲存提供商: "aws_s3" 或 "cloudflare_r2"
bucket = "my-snapzy-bucket"        # 雲端儲存桶名稱
region = "us-east-1"               # 儲存桶區域代碼 (AWS S3 必須配置)
endpoint = ""                      # 儲存 API 端點 URL 地址 (Cloudflare R2 必須配置)
custom_domain = ""                 # 用於產生共用公共連結的自訂網域名稱
expire_time = "7d"                 # 預簽名連結的有效期/生命週期: "1d", "3d", "7d", "14d", "30d", "60d", "90d", "permanent"
uploads_window_position = "center" # 懸浮雲端上傳狀態面板的螢幕位置: "top", "center", "bottom"

[annotate]
clipboard_image_open_behavior = "ask" # 啟動空編輯器時處理剪貼簿圖片的動作: "ask", "loadAutomatically", "doNothing"
close_after_drag = true            # 透過拖曳完成檔案複製後,自動關閉標註視窗
bring_forward_after_drag = false   # 拖曳規劃完成後,將目標接收軟體視窗移動到前台
quick_properties_sync = true       # 畫筆粗細和顏色屬性在各標註工具之間即時同步

[shortcuts]
enabled = true                     # 全局快捷鍵監聽開關 (註冊快捷鍵所必需)

[shortcuts.global.fullscreen]
enabled = true
key = "3"
modifiers = ["command", "shift"]

[shortcuts.global.area]
enabled = true
key = "4"
modifiers = ["command", "shift"]

[shortcuts.global.areaAnnotate]
enabled = true
key = "7"
modifiers = ["command", "shift"]

[shortcuts.global.scrollingCapture]
enabled = true
key = "6"
modifiers = ["command", "shift"]

[shortcuts.global.recording]
enabled = true
key = "5"
modifiers = ["command", "shift"]

[shortcuts.global.annotate]
enabled = true
key = "A"
modifiers = ["command", "shift"]

[shortcuts.global.videoEditor]
enabled = true
key = "E"
modifiers = ["command", "shift"]

[shortcuts.global.cloudUploads]
enabled = true
key = "L"
modifiers = ["command", "shift"]

[shortcuts.global.shortcutList]
enabled = true
key = "K"
modifiers = ["command", "shift"]

[shortcuts.global.ocr]
enabled = true
key = "2"
modifiers = ["command", "shift"]

[shortcuts.global.objectCutout]
enabled = true
key = "1"
modifiers = ["command", "shift"]

[shortcuts.global.history]
enabled = true
key = "H"
modifiers = ["command", "shift"]

[shortcuts.overlay.area_application_capture]
enabled = true
key = "SPACE"                      # 處於區域截圖覆蓋層時的特殊按鍵控制
modifiers = []

[shortcuts.overlay.recording_application_capture]
enabled = true
key = "SPACE"
modifiers = []

[shortcuts.annotate_tools]
disabled = []
# 綁定鍵盤數字鍵「1」到「8」以快速切換標註繪畫工具
"1" = "pen"
"2" = "arrow"
"3" = "rect"
"4" = "oval"
"5" = "text"
"6" = "blur"

[shortcuts.annotate_actions.copyAndClose]
enabled = true
key = "C"
modifiers = ["command"]

[shortcuts.annotate_actions.toggleSidebar]
enabled = true
key = "B"
modifiers = ["command"]

[shortcuts.annotate_actions.togglePin]
enabled = true
key = "P"
modifiers = ["command"]

[shortcuts.annotate_actions.cloudUpload]
enabled = true
key = "U"
modifiers = ["command"]

配置屬性參考指南

常規項目 ([general])

屬性名稱資料類型預設值允許的選項 / 範圍詳細說明
language字串"system""system", "en", "vi", "ja", "ko", "ru", "zh", "zh-tw"介面顯示的語言配置設定。
appearance字串"system""system", "light", "dark"UI 顏色主題模式選擇。
play_sounds布林值truetrue, false截圖或錄影操作成功時的聲音回饋。
start_at_login布林值falsetrue, false在 macOS 登入時自動啟動程式。
export_location字串"~/Pictures"有效資料夾路徑擷取檔案的本地預設存放目標資料夾。

更新與診斷日誌

屬性名稱資料類型預設值允許的選項 / 範圍詳細說明
updates.check_automatically布林值truetrue, false使用 Sparkle 服務自動在線檢測最新版本。
updates.download_automatically布林值falsetrue, false自動下載新版本,無需使用者確認。
diagnostics.enabled布林值truetrue, false寫入故障診斷用的本地運行日誌記錄。
diagnostics.retention_days整數7130診斷日誌檔案在硬碟上的保留天數上限。

捕獲屏幕和命名規則 ([capture])

屬性名稱資料類型預設值允許的選項 / 範圍詳細說明
hide_desktop_icons布林值falsetrue, false擷取截圖或影片時,臨時隱藏桌面檔案圖示。
hide_desktop_widgets布林值falsetrue, false擷取截圖或影片時,臨時隱藏桌面小工具。
naming.screenshot_template字串"Snapzy_{year}...範本格式字串截圖自動儲存的檔案命名規則設計。
naming.recording_template字串"Snapzy_{year}...範本格式字串錄影自動儲存的檔案命名規則設計。
screenshot.format字串"png""png", "jpeg", "webp"擷取的螢幕影像格式。
screenshot.include_snapzy布林值falsetrue, false允許在截屏中拍下 Snapzy 自身的輔助面板和視窗。
screenshot.show_cursor布林值falsetrue, false在截圖圖片上顯示系統滑鼠指標。
scrolling.show_hints布林值truetrue, false在捲動截屏執行中展示操作指引。
ocr.success_notification布林值falsetrue, false文字提取 (OCR) 成功後發出通知提示。
object_cutout.auto_crop布林值truetrue, false完成對象摳圖後自動裁剪多餘的透明邊緣。

捕獲後后续事件 (After Capture)

屬性名稱資料類型預設值允許的選項 / 範圍詳細說明
capture.after.screenshot.save布林值truetrue, false自動寫入檔案到輸出目標資料夾。
capture.after.screenshot.quick_access布林值truetrue, false擷取後在螢幕上顯示快速存取預覽視窗。
capture.after.screenshot.copy_file布林值truetrue, false將產生檔案的本地絕對路徑複製到系統剪貼簿。
capture.after.screenshot.open_annotate布林值falsetrue, false自動將截圖載入標註編輯器進行標註。
capture.after.screenshot.upload_to_cloud布林值falsetrue, false截圖完成後自動開始上傳雲端儲存。
capture.after.recording.save布林值truetrue, false自動將影片儲存到本地輸出資料夾。
capture.after.recording.quick_access布林值truetrue, false錄製完成後在螢幕上顯示快速存取面板。
capture.after.recording.copy_file布林值truetrue, false将產生影片檔案的本地路徑複製到剪貼簿。
capture.after.recording.open_annotate布林值falsetrue, false錄製結束後,自動載入影片裁剪剪輯面板。
capture.after.recording.upload_to_cloud布林值falsetrue, false影片錄製完成後自動開始上传雲端儲存。

屏幕錄製 ([recording])

屬性名稱資料類型預設值允許的選項 / 範圍詳細說明
format字串"mov""mov", "mp4"影片封裝檔案副檔名。
quality字串"high""high", "medium", "low"影片壓縮清晰度預設級別。
fps整數301120錄製時所需的目标影格率。
output_mode字串"video""video", "gif"最終儲存檔案的格式。
capture_system_audio布林值truetrue, false擷取錄音系統內部播放的聲音。
capture_microphone布言值falsetrue, false擷取錄製外部麥克風輸入的人聲。
microphone_device_id字串""有效音效卡設備 UID錄製所要調用的具體外置麥克風硬體設備。
remember_last_area布林值truetrue, false記住上一次的自訂螢幕錄屏選區座標。
show_cursor布林值truetrue, false將滑鼠光標路徑存入影片畫面。
highlight_clicks布林值falsetrue, false在影片畫面點擊滑鼠時閃爍突出圈。
show_keystrokes布林值falsetrue, false錄屏時,在螢幕下方懸浮顯示按鍵輸入。
mouse_highlight.size雙精度浮點型50.020.0120.0滑鼠點擊波紋環的像素直徑。
mouse_highlight.color字串"#FF000080"十六進位顏色值 (#RRGGBBAA)點擊指示標記的顏色設計。
mouse_highlight.opacity雙精度浮點型0.50.01.0點擊波紋圖層的透明度。
mouse_highlight.ripple_count整數316每次滑鼠點擊在螢幕散發的波紋個數。
keystrokes.font_size雙精度浮點型18.010.048.0組合按鍵字型的磅值大小。
keystrokes.position字串"bottomCenter"螢幕對齊定位詞按鍵懸浮提示層所擺放的位置。
keystrokes.display_duration雙精度浮點型2.00.310.0按鍵指示圖層在螢幕上存在的時間門檻。
annotation_shortcuts.modifier字串"shift"修飾鍵單詞錄製過程中調用標註控制條的觸發輔助按鍵。
annotation_shortcuts.hold_duration雙精度浮點型1.00.15.0長按以完成標註面板調用的觸發秒數。

快速存取預覽層 ([quick_access])

屬性名稱資料類型預設值允許的選項 / 範圍詳細說明
enabled布林值truetrue, false是否在操作後調出快速存取側邊框。
position字串"bottomRight"螢幕角單詞預覽框附著在哪一個螢幕邊緣位置。
auto_dismiss布林值truetrue, false是否開啟預覽面板延時自動漸隱。
auto_dismiss_delay雙精度浮点型10.03.030.0側邊欄隱退前在螢幕上浮現的停留時間。
pause_countdown_on_hover布林值truetrue, false滑鼠移入預覽視窗時自動暫停關閉的倒數計時。
overlay_scale雙精度浮點型1.00.751.5預覽圖層卡片的整體縮放縮尺係數。
drag_drop布林值truetrue, false允許透過拖曳將圖片等直接發送至其他聊天/辦公軟體。
actions_order字串陣列預設值功能組件 UIDs 列表控制排版按鍵的順序次序。
enabled_actions字串陣列預設值功能組件 UIDs 列表實際開啟並可供點擊的快捷功能按鍵。

歷史資料夾 ([history])

屬性名稱資料類型預設值允許的選項 / 範圍詳細說明
enabled布林值truetrue, false是否將檔案建立歷史歸入歸檔記錄儲存。
retention_days整數30090歷史記錄在本地存放的最大時間 (0 表示永不清理)。
max_count整數50001000允許的備份歷史上限行數。
background_style字串"hud""hud", "solid"歷史頁面底板的磨砂半透或實色設計。
open_on_launch布林值falsetrue, false開啟 Snapzy 軟體時自動載入查看歷史頁。
floating.enabled布林值truetrue, false螢幕是否顯示快速浮現歷史 HUD。
floating.position字串"topCenter"對齊單詞歷史浮現 HUD 的對齊與座標設定。
floating.max_displayed_items整數10320快速懸浮 HUD 內最大的歷史記錄項顯示數目。
floating.scale雙精度浮點型1.00.81.2歷史記錄懸浮框大小縮放乘數。

雲端傳輸 ([cloud])

屬性名稱資料類型預設值允許的選項 / 範圍詳細說明
provider字串"aws_s3""aws_s3", "cloudflare_r2"使用的目標雲端網路儲存提供方。
bucket字串""儲存桶字元S3 或者 R2 雲端儲存所歸屬的桶目錄。
region字串"us-east-1"S3 的地區碼資料將被寫入之地理位置名稱代碼 (S3 必須參數)。
endpoint字串""介面地址 URLAPI 連接和存取的目標 endpoint 域 (R2 必須參數)。
custom_domain字串""主機網域名稱綁定以輸出自訂簡潔連結域。
expire_time字串"7d""1d", "3d", "7d", "14d", "30d", "60d", "90d", "permanent"簽發的臨時圖片/影片連接有效期時長設定。
uploads_window_position字串"center""top", "center", "bottom"傳輸狀態 HUD 視窗在螢幕顯示的位置重心。

安全提示 — AWS Access Key, Secret Token 等敏感驗證金鑰資訊絕不會以明文形式寫入 config.toml 中,以防止您不小心將設定檔公開在 GitHub 等公用儲存庫。此類私鑰資訊預設由 macOS 鑰匙圈 (Keychain) 服務進行高強度安全加密儲存。

圖片標註畫板 ([annotate])

屬性名稱資料類型預設值允許的選項 / 範圍詳細說明
clipboard_image_open_behavior字串"ask""ask", "loadAutomatically", "doNothing"打開空白編輯器而剪貼簿內有圖片資料時的匯入回應邏輯。
close_after_drag布林值truetrue, false將圖片透過拖曳完成發送後,是否自動關閉標註面板。
bring_forward_after_drag布林值falsetrue, false完成拖放後,將接收目標檔案的應用程式置於螢幕前台。
quick_properties_sync布林值truetrue, false畫筆參數(大小、顏色)在各類畫筆和線條工具間即時共享。

驗證與配置排錯

Snapzy 在載入 config.toml 檔案時會進行嚴密的語法和資料規則校對:

  • 約束超限: 當您配置的值超越了系統設定的最大/最小允許限度(例如設定 fps = 150overlay_scale = 3.0),Snapzy 將在背景日誌記錄 Warning 警告,並自動將該欄位強制重置為預設值。
  • 類型錯亂: 拼寫錯誤導致的參數格式類型偏差(例如對於布林型屬性參數寫入了普通文字),剖析過程將報錯(Error),Snapzy 會停止載入並直接回復為原有的系統設定。
  • 檢閱問題:config.toml 產生的校對警告和問題清單,您可以直接進入設定面板的**進階(Advanced)**索引標籤下進行查看。

準備好捕捉
你的最佳作品了嗎?

加入開源社群,共同打造 macOS 最佳的螢幕擷取工具。

macOS 13+ · Intel 與 Apple Silicon