jt-filework

Your hands never leave the keyboard.

One letter is one command — copy, move, rename, view, mark — with nothing to hold down and no menu to hunt through. Underneath it: panes that split as far as the work needs, independent tabs in each, real previews, archives you open like folders, remote folders over SFTP, and a report that says which kind of file filled the disk.

全鍵操作,無需離手。

一個按鍵快速執行命令:複製、移動、更名、檢視、標記。不用組合鍵,也不用翻選單。面板可以一直切下去,每個面板有自己的分頁,預覽是真的預覽,壓縮檔按 Enter 就當成資料夾開,遠端資料夾走 SFTP,磁碟用量會告訴你是哪一類檔案把空間吃掉的。

0.6.63 — runs on macOS, Windows and Linux. Installers for all three are under Download. They are not signed yet, so macOS and Windows ask once before opening them; the steps are there too. 823 tests pass.

0.6.63 macOS、Windows、Linux 三個平台都跑得起來。三個平台的安裝檔在下載。目前還沒有簽章,所以 macOS 和 Windows 第一次開啟前會先問一次,步驟也在那裡。823 個測試通過。

jt-filework 0.6.52 on Ubuntu, showing two panes side by side
0.6.52 on Ubuntu. The left pane is where a copy or move will land; the right one has two files marked and the bar on a third, so a command would act on the two. The folder tree follows the focus, and the strip along the bottom shows the keys you can press right now.
0.6.52 在 Ubuntu 上。左邊的面板是複製或移動會放過去的地方;右邊標記了兩個檔案,光棒停在第三個,所以命令會作用在標記的那兩個。樹狀圖跟著焦點走,底下那條顯示現在可以按哪些鍵。

What it does

它做得到什麼

Everything here is built and working, not planned. The full specification lists every feature, every format and every limit, with the numbers.

下面這些都做完了、可以用,不是計畫。每項功能、每種格式、每道上限的數字,完整規格裡都查得到。

Split as far as the work needs

要幾個面板就幾個

A recursive split tree, not two fixed panes. Every pane owns independent tabs, and a tab can be torn off into its own window.

不是固定兩個面板,要幾層就切幾層。每個面板有自己的分頁,分頁也能拉出來變成獨立視窗。

Where you are, and what you chose

光棒是位置,標記是選擇

The bar follows the arrow keys and the mouse; marks are what you picked with Space, a tick box or Ctrl-click, drawn in a colour of their own. A command acts on the marks, or on the row under the bar when nothing is marked — the way CView does it.

光棒跟著方向鍵和滑鼠走;標記是你用 Space、勾選框或 Ctrl 點選挑出來的,用自己的顏色顯示。命令作用在標記上,什麼都沒標記時就作用在光棒那一列,跟 CView 一樣。

What differs between two folders

兩個資料夾差在哪

Only here, only there, different, identical. Subfolders optional. Compared by size and modification time — a rule printed under the table rather than implied.

只在這邊、只在那邊、不一樣、一樣。要不要含子資料夾自己決定。比對用大小跟修改時間,這條規則就寫在表格下面,不用猜。

Where the space went

空間跑去哪了

One walk, two answers: which child folder holds the most, and which kind of file adds up to the most. The second is the half most tools cannot answer.

掃一次給你兩個答案:哪個子資料夾最大,還有哪一類檔案加起來最大。第二個答案大部分工具都給不出來。

An image onto a USB stick

把映像檔寫進 USB 隨身碟

Only removable, external disks that are not carrying the running system are ever offered — a disk it could not read does not appear at all. It reads the disk back afterwards, because a failing or counterfeit stick takes every write and returns something else.

只列可移除、外接、而且沒有裝著現在在跑的系統的磁碟。讀不齊資料的那顆根本不會出現。寫完會讀回來核對,因為快壞掉的或是假的隨身碟,寫進去都收,讀出來是別的東西。

Remote folders

遠端資料夾

SFTP with the host key checked and remembered. Copy, move and delete between a server and this machine, and a file only takes its real name once it has all arrived. A password is held in memory only, dropped on disconnect, and never written to disk.

走 SFTP,主機金鑰會檢查也會記住。伺服器跟本機之間可以複製、移動、刪除,檔案要整個傳完才會換上正式的檔名。密碼只放在記憶體,斷線就丟掉,不會寫進磁碟。

The window never stops

視窗不會卡住

Listing, searching, measuring, comparing, extracting — all on worker threads, all with a running count and a Cancel that works.

列目錄、搜尋、計算、比較、解壓縮,全部丟到背景執行緒跑。進度即時更新,取消按了真的會停。

Screenshots

畫面

Real windows on real machines — macOS, Windows 11 and Ubuntu, the same build from the same source.

真的視窗、真的機器:macOS、Windows 11、Ubuntu,同一份原始碼建出來的同一版。

Archives and disc images

壓縮檔與映像檔

Press Enter on any of these and it opens like a folder, with the same single keys inside: Space marks, C extracts what is marked, X extracts everything.

按 Enter 就當成資料夾開啟,裡面用的還是同一組按鍵:Space 標記、C 解出標記的、X 全部解出。

Format格式 Browse瀏覽 Extract解壓縮 Create建立
ZIP✓✓✓
.tar, .tar.gz, .tgz✓✓✓
.tar.bz2, .tar.xz✓✓—
.gz, .bz2, .xz✓✓—
ISO 9660 (Joliet, Rock Ridge)✓✓—
.7z, .rar———

Every reader treats what is inside an archive as hostile.
No member escapes the folder you chose. One that would land outside it is refused and named — never written, never quietly renamed to fit. However it is spelled: ../, an absolute path, a Windows drive letter, a UNC prefix, backslashes on any platform.
Expansion is measured against bytes that actually arrive, not against what a header claims — a lying header is precisely what a decompression bomb is.

壓縮檔裡的東西一律當成有問題的來看。
檔名不會跑出你選的資料夾。只要解出來會落在資料夾外面,就擋下來並告訴你是哪一個,不寫進去、也不會自己改個名字塞進去。../、絕對路徑、Windows 磁碟機代號、UNC 開頭、任何平台的反斜線,一律同樣處理。
解出來的量照實際讀到的算。不看標頭寫幾個位元組,因為標頭會騙人——那正是解壓縮炸彈的手法。

An unsupported format is not labelled as an archive this build can open, so nothing invites a press of Enter that cannot work.

不支援的格式不會被標成這版打得開的壓縮檔,所以不會有東西引誘你去按 Enter 然後發現沒用。

An .iso also goes the other way: write it to a USB disk from the file's own context menu. Only removable external disks are offered, the write is confirmed twice with the disk named in full, and what was written is read back and compared before it says it is done.

.iso 也可以反過來走:在檔案上按右鍵就能寫進 USB 磁碟。清單只列可移除的外接磁碟,寫入前會確認兩次、兩次都把是哪一顆碟寫清楚,寫完還會整個讀回來比對過才說成功。

The keyboard

鍵盤

Two profiles, both data files rather than code. A binding is a line in a text file, so changing one needs no rebuild — and any of them can be changed in Settings.

兩套設定檔,都是資料檔,不是程式碼。一個綁定就是文字檔裡的一行,改了不用重新編譯,也可以直接在設定裡改。

Enter Open — a folder, an archive's contents, anything else in its own application
← Up one level
G Open — the same as Enter
V View
H View as hex
Alt-X Edit as hex
Q Quick Look
E Edit
C Copy to…
M Move to…
Ins Copy to the other pane
Shift-Ins Move to the other pane
R Rename
D Move to the trash
Shift-Del Delete permanently
F7 New folder
O New file
Space Mark, and move on
* Invert the marks
+ Mark by name pattern, e.g. *.pdf
− Unmark by name pattern
Tab Next area: places, tree, each pane
P or \ Type a path
F Filter
W Search
Esc Leave the filter or the search
S Sort…
Z Measure this folder
A Attributes
T Tree
I Inspector
Alt-R Batch rename
Alt-Z Compress — ZIP, tar.gz or tar
F5 Refresh
Enter 開啟:資料夾、壓縮檔內容,其他檔案用對應的程式開
← 回上一層
G 開啟(同 Enter)
V 檢視
H 以十六進位檢視
Alt-X 以十六進位編輯
Q 快速查看
E 編輯
C 複製到…
M 移動到…
Ins 複製到另一個面板
Shift-Ins 移到另一個面板
R 更名
D 移到資源回收筒
Shift-Del 永久刪除
F7 新增資料夾
O 新增檔案
Space 標記並移到下一列
* 反轉標記
+ 用檔名樣式標記,例如 *.pdf
− 用檔名樣式取消標記
Tab 下一個區域
P 或 \ 輸入路徑
F 篩選
W 搜尋
Esc 離開篩選或搜尋
S 排序…
Z 計算資料夾大小
A 屬性
T 樹狀清單
I 檢視面板
Alt-R 批次更名
Alt-Z 壓縮(ZIP、tar.gz 或 tar)
F5 重新整理

A second profile follows the operating system's own conventions — the shortcuts every other application on that machine uses — for when muscle memory says ⌘C.

另一套設定檔走作業系統原生的操作鍵,也就是那台機器上每個程式都在用的那一套,給習慣按 ⌘C 的人。

Download

下載

Installers for all three platforms, built from the tagged source by the release workflow. They are not signed yet, so macOS and Windows ask once before opening them — the steps are below.

三個平台的安裝檔,由發行流程從打了 tag 的原始碼建置。目前還沒有簽章,所以 macOS 和 Windows 第一次開啟前會先問一次,步驟在下面。

macOS

Apple silicon, macOS 14 or later. A .dmg holding jt-filework.app, with Qt inside.

Apple 晶片,macOS 14 以上。內含 jt-filework.app 的 .dmg,Qt 已包在裡面。

Download 下載

Windows

x64. An .msi installer, or a .zip that needs no installing.

x64。.msi 安裝檔,或不用安裝的 .zip。

Download 下載

Linux

A .deb for Debian and Ubuntu, x86-64, built on Ubuntu 22.04.

給 Debian、Ubuntu 的 .deb,x86-64,在 Ubuntu 22.04 上建置。

Download 下載

Installing a build that is not signed

安裝未簽章的版本

jt-filework does not have an Apple Developer ID or a Windows code-signing certificate yet, so your system cannot tell who made the file and will warn you before opening it. That warning is the system doing its job. Before going past it, check that the file's SHA-256 checksum matches the one in SHA256SUMS on the release page.

jt-filework 還沒有 Apple 開發者 ID,也沒有 Windows 程式碼簽章憑證,所以系統無法確認檔案是誰做的,開啟前會警告你。這個警告是系統在盡它的本分。放行之前,請先核對檔案的 SHA-256 檢查碼,和發行頁面上 SHA256SUMS 裡的是否一致。

macOS

  1. Open the .dmg and drag jt-filework into Applications.
  2. Open jt-filework from Applications. macOS says “jt-filework” Not Opened, because Apple could not verify it. Click Done.
  3. Open System Settings → Privacy & Security, scroll down to Security, and click Open Anyway beside the line about jt-filework.
  4. Confirm with your password or Touch ID, and choose Open Anyway if macOS asks once more.
  1. 開啟 .dmg,把 jt-filework 拖進「應用程式」。
  2. 從「應用程式」開啟 jt-filework。macOS 會顯示「未打開「jt-filework」」,因為 Apple 無法驗證它。按「完成」。
  3. 開啟「系統設定 → 隱私權與安全性」,往下捲到「安全性」,在關於 jt-filework 的那一行旁邊按「強制打開」。
  4. 用密碼或 Touch ID 確認;如果 macOS 再問一次,選「強制打開」。

This is needed once. Do not turn Gatekeeper off, and do not run commands that remove the quarantine attribute from files in general.

只需要做一次。請不要關閉 Gatekeeper,也不要執行那種會把所有檔案的隔離屬性一併移除的指令。

Windows

  1. If the browser says the file is not commonly downloaded, choose to keep it.
  2. Open the .msi. SmartScreen shows Windows protected your PC: click More info, check that the file name is the one you downloaded, then Run anyway.
  3. Allow the installer to make changes when Windows asks, and follow it through. jt-filework is then in the Start menu.
  1. 如果瀏覽器說這個檔案不常被下載,選擇保留。
  2. 開啟 .msi。SmartScreen 會顯示「Windows 已保護您的電腦」:按「其他資訊」,確認檔名是你下載的那一個,再按「仍要執行」。
  3. Windows 詢問是否允許安裝程式變更裝置時選「是」,照著安裝程式走完。之後 jt-filework 就在開始功能表裡。

The .zip needs no installing: unpack it and run jt-filework.exe, and SmartScreen asks the same question the first time. Do not turn SmartScreen off.

.zip 不用安裝:解壓縮後執行 jt-filework.exe,第一次執行時 SmartScreen 會問同樣的問題。請不要關閉 SmartScreen。

Debian and Ubuntu

Debian、Ubuntu

sudo apt install ./jt-filework_<version>_amd64.deb

There is no warning to get past; apt installs the Qt libraries it needs.

沒有需要放行的警告;apt 會一併裝好需要的 Qt 函式庫。

Building

建置

Rust 1.98 (pinned by rust-toolchain.toml) and Qt 6. Build output goes outside the source tree.

Rust 1.98(rust-toolchain.toml 有釘住)跟 Qt 6。建置輸出丟在原始碼樹外面。

macOS

brew install qt cmake
./src/ui/qt6/build.sh release

Linux

sudo apt install build-essential cmake ninja-build pkg-config \
     qt6-base-dev libqt6svg6-dev libgl1-mesa-dev
./src/ui/qt6/build.sh release

Build on the oldest distribution you intend to support: glibc's compatibility runs one way, so a binary built on Ubuntu 22.04 runs on 24.04 and not the reverse. Following the desktop's light/dark setting while running needs Qt 6.5 or newer; on 22.04's Qt 6.2 the theme is read once at launch.

要支援到哪個最舊的發行版,就在那台上面建置。glibc 只往上相容:22.04 編出來的可以在 24.04 上跑,反過來不行。執行中跟著桌面切深淺色要 Qt 6.5 以上,22.04 的 Qt 6.2 只在啟動時看一次。

Windows

MSVC Build Tools, CMake, Qt 6 and NASM — aws-lc-sys, which arrives through the SFTP stack, assembles its own primitives. The full runbook is in docs/DEVELOPMENT_ENVIRONMENT.md.

MSVC Build Tools、CMake、Qt 6,還要 NASM。aws-lc-sys 是跟著 SFTP 進來的相依,它在 Windows 上要自己組譯。完整步驟看 docs/DEVELOPMENT_ENVIRONMENT.md。

Not built yet

尚未完成

Named here rather than left to be discovered.

先講清楚,不要讓人自己踩到才知道。