Files
nomina/README.md
2026-03-14 20:21:07 +02:00

132 lines
6.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<div align="center">
<br>
# Nomina
**Bulk file renaming for the rest of us.**
Modern, fast, and public domain. Built with Rust and Tauri v2.<br>
Looks like it was made this decade because it was.
<br>
[![License: CC0](https://img.shields.io/badge/license-CC0_1.0-blue?style=flat-square)](https://creativecommons.org/publicdomain/zero/1.0/)
[![Built with Tauri](https://img.shields.io/badge/Tauri_v2-24C8D8?style=flat-square&logo=tauri&logoColor=white)](https://tauri.app)
[![Rust](https://img.shields.io/badge/Rust-F74C00?style=flat-square&logo=rust&logoColor=white)](https://www.rust-lang.org)
[![React](https://img.shields.io/badge/React_19-61DAFB?style=flat-square&logo=react&logoColor=black)](https://react.dev)
[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org)
[![Platform](https://img.shields.io/badge/Windows-0078D6?style=flat-square&logo=windows&logoColor=white)](#)
<br>
*Nobody should have to rename 400 files by hand. Nobody should have to pay for the privilege of not doing that.*
<br>
</div>
## 🌱 Why another renaming tool?
Most bulk rename tools out there work fine. They also look like they were built in 2004 and never touched again. Some of them are great software by great people, and they got the job done for years. But the interfaces feel like operating heavy machinery.
Nomina is an attempt at something different - a renaming tool that feels like a normal, modern app. Dark mode that actually looks good. Animations that aren't janky. A UI that doesn't fight you. And the whole thing is CC0 public domain, which means it belongs to everyone equally and nobody can take that away.
## 🌿 What it does
You pick a folder. You stack renaming rules into a pipeline. You see a live preview of every single change before anything touches the filesystem. When it looks right, you hit rename. If it doesn't look right, you undo.
Nomina has **18 rule types** that chain together in any order:
| | Rule | What it does |
|---|---|---|
| 🔤 | **Replace** | Find and replace text, with regex and case sensitivity options |
| 🔣 | **Regex** | Pattern matching with capture group support |
| ✂️ | **Remove** | Strip characters, words, digits, symbols, accents, or regex matches |
| | **Add** | Insert text anywhere - supports variables like `{name}`, `{date}`, `{index}`, `{folder}` |
| 🔠 | **Case** | 13 modes including smart title case, camelCase, snake_case, kebab-case |
| 🔢 | **Numbering** | Sequential numbers in decimal, hex, roman, alphabetic. Per-folder counters, custom formats |
| 📅 | **Date** | Insert file dates (created, modified, EXIF) in various formats |
| ↔️ | **Move parts** | Extract text by position, word, or regex and reposition it |
| 📎 | **Extension** | Change, remove, normalize, or force file extensions |
| #⃣ | **Hash** | MD5, SHA1, or SHA256 content hashes |
| 📁 | **Folder name** | Pull in parent or grandparent folder names |
| 🌐 | **Transliterate** | Unicode to ASCII ("cafe" from "cafe", that kind of thing) |
| 0⃣ | **Padding** | Leading zeros for proper alphabetical sorting |
| 📏 | **Truncate** | Enforce a maximum filename length |
| 🎲 | **Randomize** | Random hex, alpha, alphanumeric, or UUID strings |
| 🔀 | **Swap** | Flip parts around a delimiter ("Last, First" becomes "First Last") |
| 🧹 | **Sanitize** | Strip illegal chars, normalize unicode, collapse whitespace |
| ✏️ | **Text editor** | Just type whatever you want for each file |
Rules are draggable cards. Reorder them, toggle them on and off, duplicate them, right-click for more options. The preview updates as you go.
## 🍄 Not just renaming
- **Live preview** of every change before anything happens
- **Conflict detection** when two files would collide
- **Full undo** with persistent history across sessions
- **Presets** you can save, load, export as files, and share with anyone
- **Filters** by name pattern, regex, file size, type, and depth
- **Explorer integration** - "Edit in Nomina" in your right-click menu, auto-repairs if you move the exe
- **Accessibility** - screen reader support, keyboard navigation, high contrast, color blind modes, reduced motion (auto-detected from your OS), font scaling
## 🪨 Portable
Single exe. No installer. Put it anywhere. All its data (settings, presets, undo log) lives in a `data` folder next to the binary. Delete the folder, it's gone. Put it on a USB stick, it works. Move it, it works. The optional Explorer context menu is the one thing that touches the registry, and there's a button to cleanly remove it.
## 🍵 Configurable
Dark, light, or match-your-system theme. Adjustable accent color. Zoom from 70% to 150%. Compact mode. Zebra striping. Configurable preview delay, sort order, conflict handling, backup strategy with scheduled cleanup, undo depth, notification preferences. About 80 settings in total, all stored locally next to the exe.
## 🌻 Public domain
Nomina is released under [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/). No rights reserved. No contributor license agreements. No corporate ownership. No "open core" bait-and-switch where the good parts cost money.
The code is a common resource. Fork it, modify it, redistribute it, learn from it, build something better. You don't need to ask, and there's nothing to sign. Software that people need should be free to use, free to study, free to share, and free to improve. That's not a business model - it's just how things should work.
---
<details>
<summary><strong>🔧 Building from source</strong></summary>
<br>
### Prerequisites
- Rust (stable)
- Node.js (LTS)
- Visual Studio Build Tools (Windows)
### Commands
```bash
# install frontend deps
cd ui && npm install
# development
cargo tauri dev
# tests
cargo test -p nomina-core
# release build
cargo tauri build --no-bundle
```
Binary lands at `target/release/nomina.exe`.
### Structure
```
nomina/
crates/
nomina-core/ # rename engine - pure Rust, no UI
nomina/ # Tauri v2 shell, commands, system integration
ui/ # React + TypeScript frontend
```
`nomina-core` is a standalone library that handles renaming logic, pipeline execution, filters, undo, and presets. The `nomina` crate wraps it in a Tauri window. The `ui` folder is the frontend. The engine doesn't depend on the UI, so you could build a CLI or a different frontend on top of it if you wanted.
</details>