A terminal-based file manager built with Kotlin, Mosaic, and Mordant.
- Terminal UI — keyboard and mouse-driven file browser with color-coded display
- File Operations — copy, move, delete, trash, rename, create, duplicate, paste
- Visual Mode — multi-file selection with
<Space>andv - Search — incremental file search
- Drag & Drop — mouse-based drag overlay with operation status
- Preview Panel — auto-loading file previews and metadata
- Hidden Files — toggle with
. - SGR Mouse — full mouse support (click, scroll, drag)
- Native Binary — GraalVM native-image build for fast startup
# Run from source (requires JDK 21+)
./gradlew :app:installDist
./app/build/install/app/bin/app
# Build native binary (requires GraalVM 25 JDK + native-image)
./gradlew :app:installDist
export JAVA_HOME=~/.sdkman/candidates/java/25.0.2-graalce
"$JAVA_HOME/bin/native-image" \
--enable-native-access=ALL-UNNAMED \
-cp "$(find app/build/install/app/lib -name '*.jar' | tr '\n' ':')" \
-H:ReflectionConfigurationFiles=app/src/main/resources/META-INF/native-image/turtles/reflect-config.json \
-H:JNIConfigurationFiles=app/src/main/resources/META-INF/native-image/turtles/jni-config.json \
-H:ResourceConfigurationFiles=app/src/main/resources/META-INF/native-image/turtles/resource-config.json \
-H:IncludeResources=".*jnidispatch.*|.*\\.so$|.*\\.dll$|.*\\.dylib$|META-INF/services/.*" \
--no-fallback \
turtles.app.MainKt
./app/build/native/nativeCompile/turtles| Key | Action |
|---|---|
↑/↓ |
Navigate |
Enter |
Open directory |
c |
Copy selected |
x |
Cut selected |
p |
Paste |
d |
Delete selected |
v |
Toggle visual mode |
Space |
Toggle selection |
. |
Toggle hidden files |
/ |
Search |
q / Ctrl+C |
Quit |
Requires JDK 21+ for compilation (JDK 21 GraalCE recommended). Native binary build requires GraalVM 25 JDK with native-image tool installed.