Why build itPor que construir
Dolphin gets a lot right: devices that browse like folders, KDE Connect, a clean split between model and view. I wanted those ideas on a fast Rust core wearing the Ryoku design system.
Kappa is an independent community project. It is not an official Ryoku app.
O Dolphin acerta muita coisa: dispositivos que navegam como pastas, KDE Connect, separação limpa entre modelo e visão. Eu queria essas ideias num núcleo Rust rápido, vestindo o design system do Ryoku.
O Kappa é um projeto comunitário independente. Não é um app oficial do Ryoku.
A file manager should feel like the desktop, not a guest on it.Um gerenciador de arquivos deve parecer o desktop, não um convidado.
What it doesO que faz
- 01
Rust coreNúcleo em Rust
Async scanning, inotify watching, FreeDesktop trash and on-the-fly metadata.Varredura assíncrona, inotify, lixeira FreeDesktop e metadados na hora.
- 02
Tabs and split viewAbas e visão dividida
Two folders side by side with a draggable divider. F3 toggles it.Duas pastas lado a lado com divisor arrastável. F3 alterna.
- 03
Transfers with progressTransferências com progresso
Speed, time left, pause and Esc to cancel, even for multi-gigabyte files.Velocidade, tempo restante, pausa e Esc para cancelar, mesmo em arquivos de vários gigas.
- 04
Safe by defaultSeguro por padrão
Delete goes to the trash; scripts ask before opening; archives resist zip-slip and bombs.Apagar vai para a lixeira; scripts pedem confirmação; arquivos resistem a zip-slip e bombas.
- 05
Phone and cloudCelular e nuvem
KDE Connect, KIO-Fuse, and Google Drive or OneDrive mounted through rclone.KDE Connect, KIO-Fuse e Google Drive ou OneDrive montados via rclone.
- 06
Own appearanceAparência própria
Follow the Ryoku theme or use a Kappa-only palette, without touching the desktop.Siga o tema do Ryoku ou use uma paleta só do Kappa, sem mexer no desktop.
ScreensTelas



Two decoupled layersDuas camadas desacopladas
The Rust core handles scanning, search, places and file operations, and prints JSON through a small command-line interface. The QML interface reads it with Quickshell.Io.Process.
Search cancels instantly through an AtomicBool, and transfers stream JSON progress events that the interface turns into a progress card.
O núcleo em Rust cuida de varredura, busca, locais e operações de arquivo, e imprime JSON por uma CLI pequena. A interface QML lê isso com Quickshell.Io.Process.
A busca cancela na hora por um AtomicBool, e as transferências emitem eventos JSON de progresso que a interface transforma em um cartão de progresso.
Opening things safelyAbrindo as coisas com segurança
Opening a script, program or .desktop launcher asks first, judged by the file content and not only its name. Extraction is hardened against zip-slip, hostile links and decompression bombs.
Cloud remotes come from your own rclone config. Kappa never touches the credentials.
Abrir um script, programa ou lançador .desktop pede confirmação antes, julgando o conteúdo do arquivo e não só o nome. A extração é blindada contra zip-slip, links hostis e bombas de descompressão.
Os remotes de nuvem vêm do seu próprio rclone. O Kappa nunca toca nas credenciais.
