A faithful Windows 95/98 Notepad clone built with Tauri, Svelte 5, Vite, and 98.css.
Experience the nostalgia of classic Windows on your modern machine.
Gosh apps are built with a Linux-first mindset: simplicity, transparency, and user control.
We also provide Windows and macOS builds not as a compromise, but as an on-ramp. Many people are curious about Linux but still live on other platforms day-to-day. If these tools help someone get comfortable and eventually make the jump, we're happy to meet them where they are.
Not Implemented:
Download the latest release for your platform from the Releases page.
sudo apt install libwebkit2gtk-4.1-dev librsvg2-dev patchelf# Clone the repository
git clone https://github.com/goshitsarch-eng/Gosh-Notepad-Clone.git
cd Gosh-Notepad-Clone
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build for your platform
npm run build
npm run dev # Run the app in development mode
npm run dev:ui # Run only the Svelte/Vite frontend
npm run build # Build for current platform
npm run build:ui # Build only the frontend
npm run build:mac # Build for macOS (Apple Silicon)
npm run build:win # Build for Windows x64
npm run build:linux # Build for Linux x64
npm run build:linux-arm64 # Build for Linux ARM64
Gosh-Notepad-Clone/
├── frontend/ # Svelte 5 + Vite frontend
│ ├── index.html # Vite entry HTML
│ ├── vite.config.mjs # Vite configuration
│ ├── svelte.config.mjs # Svelte configuration
│ └── src/
│ ├── App.svelte # UI with menu bar and dialogs
│ ├── main.js # App bootstrap
│ ├── lib/notepad.js # Application logic and state
│ └── styles/
│ └── main.css # Windows 98 styling and dark mode
├── src-tauri/ # Rust backend
│ ├── Cargo.toml # Rust dependencies
│ ├── tauri.conf.json # Tauri configuration
│ ├── capabilities/ # Tauri 2 permissions
│ │ └── default.json # Filesystem and dialog permissions
│ └── src/
│ ├── main.rs # App entry point
│ └── lib.rs # FileResult struct, command handlers, and app initialization
└── package.json # npm scripts and dependencies
This is a Tauri 2 application with two main components:
Rust Backend (src-tauri/) - Native backend handling:
WebView Frontend (frontend/) - Svelte 5 UI handling:
invoke()The Rust backend exposes these commands to the frontend:
| Command | Description |
|---|---|
new_file |
Reset to empty document |
open_file |
Show file picker (filters: .txt, all files), read selected file |
save_file |
Write content to specified path |
save_file_as |
Show save dialog (default: Untitled.txt), write to new file |
print_document |
Trigger browser print dialog via window.print() |
set_window_title |
Update window title bar |
quit_app |
Exit the application |
The app requests the following permissions via src-tauri/capabilities/default.json:
npm run build:mac
Output located in src-tauri/target/release/bundle/dmg/
npm run build:win
Output located in src-tauri/target/release/bundle/nsis/
npm run build:linux # x64
npm run build:linux-arm64 # ARM64
Output located in:
src-tauri/target/release/bundle/appimage/src-tauri/target/release/bundle/deb/| Shortcut | Action |
|---|---|
| Ctrl+N | New file |
| Ctrl+O | Open file |
| Ctrl+S | Save file |
| Ctrl+Shift+S | Save as |
| Ctrl+P | |
| Ctrl+F | Find |
| Ctrl+H | Replace |
| Ctrl+G | Go to line |
| F3 | Find next |
| F5 | Insert time/date |
| Ctrl+A | Select all |
| Ctrl+Z | Undo |
| Ctrl+X | Cut |
| Ctrl+C | Copy |
| Ctrl+V | Paste |
| Del | Delete selection |
| Escape | Close dialogs |
This application is an independent project and is not sponsored by, endorsed by, or affiliated with Microsoft Corporation. It's a personal project created for fun and learning purposes and is not intended to be confused with Microsoft / Windows Notepad. All Microsoft trademarks belong to Microsoft Corporation.
This software is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). It is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability or fitness for a particular purpose. Use at your own risk.
AGPL-3.0 - See LICENSE