FShot
FShot 是以 Python 實作的桌面截圖工具,主打全域快捷鍵、系統匣常駐、多頁籤編輯與快速複製/存檔。目前支援 Windows 與 macOS;平台權限與驗收方式請閱讀 Cross-Platform Notes。
Current Status
- Windows: 主要功能已實作並經手動測試調整。
- macOS: 已實作 Quartz 全域快捷鍵、螢幕擷取、焦點視窗、視窗/控制項選取與游標擷取。
- Linux: 僅保留基本架構與部分通用能力,尚未作為主要目標平台。
Quick Start
桌面應用程式
一般使用者建議從 GitHub Releases 下載:
- Windows 10/11 x64:單一可攜式
FShot-<版本>-windows-x64.exe,不需要 Python。 - Apple Silicon Mac:
FShot-<版本>-macos-arm64.dmg,開啟後將FShot.app拖入 Applications;不支援 Intel Mac。
這些個人專案版本沒有 Authenticode 或 Apple Developer ID 等可信任發行者簽章,也未經 Apple notarization。Windows 可能顯示 SmartScreen 警告;macOS 第一次開啟時需到「系統設定 → 隱私權與安全性」選擇「仍要打開」,並授予「螢幕錄製」與「輔助使用」權限。下載後可用同一個 Release 內的 SHA256SUMS.txt 核對檔案。完整步驟請閱讀 Windows 安裝說明 或 macOS 安裝說明。
從 PyPI 執行
FShot 可從 PyPI 安裝。不需安裝即可使用 uvx 執行最新正式版本:
uvx fshot
第一次執行會從 PyPI 下載套件並建立 uv 快取環境,後續會重用快取。臨時試用建議使用 uvx,若要長期使用則安裝為 uv tool。
使用 uv 從 PyPI 安裝:
uv tool install fshot
fshot
安裝後可直接執行 fshot;更新至 PyPI 最新版本:
uv tool upgrade fshot
使用 uv tool install 安裝時,FShot 啟動後會在背景每日檢查一次 PyPI。系統匣選單可手動「檢查更新…」或停用自動檢查;發現新版時可選擇更新並重新啟動、稍後處理或略過該版本。更新前若有尚未儲存的截圖,FShot 會先要求確認。打包版則檢查 GitHub Release 並開啟下載頁面,不會自行覆寫未簽章的 EXE 或 App。uvx 與原始碼開發環境只提供手動更新指引。
若要直接從 GitHub 測試 main 的最新開發成果:
uv tool install --force "fshot @ git+https://github.com/codemee/fshot.git@main"
從原始碼啟動開發環境:
uv sync
uv run fshot
程式啟動後會隱藏主視窗並留在系統匣。雙擊系統匣圖示可顯示編輯視窗,右鍵選單可退出。
工具列的主題按鈕可單擊循環切換「跟隨系統 → 淺色 → 深色」;預設跟隨作業系統配色,選擇會保留至下次啟動。太陽代表淺色、月亮代表深色,分隔排列的太陽與月亮代表跟隨系統。
語言按鈕可單擊循環切換「跟隨系統 → 繁體中文 → English」,並保留使用者選擇;圖示分別為 文/A、中 與 En。
工具列按鈕的提示文字會依目前語言顯示,具備快捷鍵的動作也會在提示中列出對應按鍵。
畫線與箭頭共用同一個畫線工具。畫線按鈕旁的下拉面板可分別將線條起點與終點設為無箭頭、箭頭或實心圓,兩端樣式可任意組合。
工具列的鍵盤圖示可設定四種截圖方式及「重複前一次擷取」的全域快捷鍵。每組可選 Ctrl、Shift、Alt 與 A–Z 字母;Shift 必須搭配 Ctrl 或 Alt。「使用預設」會將面板中的五組欄位恢復為預設值;按 OK 且系統註冊成功後才會套用並保留設定,Cancel 不會變更目前快捷鍵。
圖片也可透過拖放或剪貼簿加入編輯器:拖放圖片會以完整檔名建立頁籤、保留來源路徑並在修改後寫回原檔;直接貼上影像或從檔案管理器複製圖片後貼上,會以截圖時間格式建立新的未存檔頁籤。成功存檔後會記住檔案所在資料夾,其他尚未存檔的頁籤會從該資料夾開啟儲存交談窗。Windows/Linux 使用 Ctrl+V,macOS 使用 Command+V。
Windows Shortcuts
Ctrl+Shift+Q: 重複前一次的截圖方式(矩形區域與選取的視窗/控制項會沿用前次目標,可在設定面板自訂)Ctrl+Shift+A: 擷取目前焦點視窗Ctrl+Shift+R: 擷取矩形區域Ctrl+Shift+F: 擷取全螢幕Ctrl+Shift+W: 選取視窗或控制項後擷取
macOS 使用相同的 Ctrl+Shift 字母組合。獨立 App 請授權 FShot.app;透過 uv/uvx 執行時,系統設定中的授權對象通常是啟動指令所在的 App,例如「終端機」、iTerm2 或 IDE。授權後請完全結束並重新開啟 FShot 或該宿主 App。
編輯工具快捷鍵:
Alt+P: 自由畫筆Alt+L: 線條Alt+R: 矩形Alt+T: 文字Alt+M: 馬賽克Alt+C: 線條粗細與顏色Ctrl++/Ctrl+=: 放大Ctrl+-: 縮小Ctrl+0: 重設縮放F2: 直接在目前標籤頁重新命名已存檔的檔案(macOS 使用Return)
已存檔的標籤頁也可直接雙擊名稱進入重新命名;副檔名會保留不變。
Project Docs
- PRD: 原始產品需求。
- Architecture: 專案結構、主要模組與資料流。
- Cross-Platform Notes: Windows/macOS/Linux 差異與 macOS 後續實作重點。
Development
uv sync
uv run pytest -q
uv run python -m compileall src tests
若 FShot 正在執行,compileall 有時會因 __pycache__ 或 executable 被鎖而失敗;先關閉或停止 fshot.exe 後再重跑。
桌面應用程式打包
FShot 使用 PyInstaller,而且必須在目標作業系統上建置;Windows runner 產生 x64 單一 EXE,Apple Silicon macOS runner 產生包含 FShot.app 與 Applications 捷徑的 arm64 DMG。專案不建立 Intel Mac 版本。
本機建置:
uv sync
uv run python scripts/build_app.py
輸出位於 dist/。發布 GitHub Release 後,Package desktop apps 工作流程會自動在 Windows 與 macOS 原生 runner 執行測試和打包,再將 EXE、DMG 與 SHA256SUMS.txt 附加至該 Release。打包流程不使用 Authenticode、Apple Developer ID 或 notarization 憑證,因此發行檔仍會遇到前述 SmartScreen/Gatekeeper 提示。開發與手動補發細節請參閱 Desktop Packaging。
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fshot-0.0.14.tar.gz.
File metadata
- Download URL: fshot-0.0.14.tar.gz
- Upload date:
- Size: 50.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3db3c5bf74f5eec4a3b8cac5c4a64462d1b9c9a55f92f2737b8a7db5792e3ff9
|
|
| MD5 |
a934c795b55814ba4b15d50db348c129
|
|
| BLAKE2b-256 |
ca4ae8106bf63b8fe77a963880f462aa014623ce2bf8f20b9db3bb833247a1bf
|
Provenance
The following attestation bundles were made for fshot-0.0.14.tar.gz:
Publisher:
publish-pypi.yml on codemee/fshot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fshot-0.0.14.tar.gz -
Subject digest:
3db3c5bf74f5eec4a3b8cac5c4a64462d1b9c9a55f92f2737b8a7db5792e3ff9 - Sigstore transparency entry: 2500158953
- Sigstore integration time:
-
Permalink:
codemee/fshot@20b92d27bf71cbfe3170439c439d362c2716871b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/codemee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@20b92d27bf71cbfe3170439c439d362c2716871b -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file fshot-0.0.14-py3-none-any.whl.
File metadata
- Download URL: fshot-0.0.14-py3-none-any.whl
- Upload date:
- Size: 55.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d402654d7f6324f3a6f5ae7411053b716cb8479976d1bd9490f9593bc83bb75
|
|
| MD5 |
593574d1387841f7e28b83ae6f22a664
|
|
| BLAKE2b-256 |
8dd7078d9fefedaab53920222a493ca0c0f8b482a8ad634d9e72d008bf88da90
|
Provenance
The following attestation bundles were made for fshot-0.0.14-py3-none-any.whl:
Publisher:
publish-pypi.yml on codemee/fshot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fshot-0.0.14-py3-none-any.whl -
Subject digest:
0d402654d7f6324f3a6f5ae7411053b716cb8479976d1bd9490f9593bc83bb75 - Sigstore transparency entry: 2500158994
- Sigstore integration time:
-
Permalink:
codemee/fshot@20b92d27bf71cbfe3170439c439d362c2716871b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/codemee
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@20b92d27bf71cbfe3170439c439d362c2716871b -
Trigger Event:
workflow_dispatch
-
Statement type: