A powerful text-based editor built with Casciian that combines traditional text editing with spreadsheet capabilities. CasWrite supports multiple overlapping windows, mouse operations, and can open both text files and CSV/table files simultaneously.
- Text Editing: Open and edit text files in dedicated editor windows with full editing capabilities
- Table Support: Open CSV and TSV files in spreadsheet-like table windows
- Multiple Windows: Work with multiple files simultaneously in overlapping windows
- Rich Menus:
- File Menu: New, Open, Open as Table, Save, Save As, Exit
- Edit Menu: Undo, Redo, Cut, Copy, Paste, Clear, Find, Replace, Go to Line
- System Menu: Shell access for running OS commands
- Window Menu: Tile, Cascade, Close All, Next, Previous window management
- Table Menu: Table-specific operations for CSV/spreadsheet files
- Mouse Support: Full mouse support for window management and text selection
- Terminal-Based: Runs in any Xterm-compatible terminal
CasWrite can serve as:
- A default text editor for Linux (similar to nano or vim but with GUI-like features)
- A CSV/table data viewer and editor
- A multi-file text editing environment
- A combination text and data editor in a single application
- Java 21 or later
- Gradle 9.2.1 or later (included via wrapper)
- For native image compilation: GraalVM Java 25 with native-image
- For packaging: fpm (installed via
gem install fpm)
./gradlew clean buildThis creates a JAR file in build/libs/caswrite-<version>.jar
After building, you can run CasWrite in several ways:
./gradlew installDist
./build/install/caswrite/bin/caswrite# Open a text file
./build/install/caswrite/bin/caswrite myfile.txt
# Open a CSV file (automatically opens in table view)
./build/install/caswrite/bin/caswrite data.csvjava -jar build/libs/caswrite-<version>.jar
java -jar build/libs/caswrite-<version>.jar myfile.txtThe DEB and RPM packages require a native binary. You need GraalVM Java 25 with native-image installed.
You can install GraalVM using SDKMAN:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 25.0.0.r25-graalceOr download directly from GraalVM Downloads.
- Ensure GraalVM Java 25 is installed and configured
- Run:
./gradlew nativeCompileThis creates a native executable at build/native/nativeCompile/caswrite
Important: The packages require a native binary. You must first compile the native binary using GraalVM (see above).
# Install fpm and dependencies
sudo apt-get install ruby ruby-dev build-essential rpm
sudo gem install fpmAfter compiling the native binary, build both DEB and RPM packages:
./gradlew buildPackagesOr build individually:
./gradlew buildDeb # Creates DEB package in build/distributions/deb/
./gradlew buildRpm # Creates RPM package in build/distributions/rpm/The packages will include only:
/usr/bin/caswrite- Native executable binary
Debian/Ubuntu:
sudo dpkg -i build/distributions/deb/caswrite_0.1.0-1_amd64.deb
sudo apt-get install -f # Install dependencies if neededRedHat/CentOS/Fedora:
sudo rpm -ivh build/distributions/rpm/caswrite-0.1.0-1.x86_64.rpmAfter installation, you can run the application:
caswrite
caswrite myfile.txt
caswrite data.csvCasWrite supports standard keyboard shortcuts:
- Alt+F: File menu
- Alt+E: Edit menu
- Alt+S: System menu
- Alt+W: Window menu
- Alt+T: Table menu
- F3: Find
- Ctrl+S: Save (in editor windows)
- Ctrl+Q: Quit
- Ctrl+X: Cut
- Ctrl+C: Copy
- Ctrl+V: Paste
This template is designed to be a starting point for your own Casciian-based application:
- Modify features: Update
CasWrite.javato add new menu items or functionality - Add file type support: Extend the file opening logic to support additional formats
- Customize menus: Add new menus or modify existing menu items
- Update metadata:
- Edit
build.gradleto update group, description, URLs, and maintainer information - Update
gradle.propertiesto set your version
- Edit
- Update documentation: Modify this README to describe your specific application
caswrite/
├── build.gradle # Gradle build configuration
├── settings.gradle # Gradle settings
├── gradle.properties # Project version and properties
├── src/
│ └── main/
│ └── java/
│ └── io/github/crramirez/caswrite/
│ └── CasWrite.java # Main application class
└── README.md
Apache License 2.0 - Copyright 2025 Carlos Rafael Ramirez
- Casciian 1.1 - Java Text User Interface library