A modern, beautiful desktop app for renaming files and folders in bulk — with live preview, a flexible rule engine, presets, and a fully bilingual UI (English / فارسی).
🇮🇷 فارسی · Download · Features · Install · Build · Usage · Shortcuts
Grab a pre-built binary from the latest release — no Python install required.
| Platform | File | Notes |
|---|---|---|
| 🖥️ Windows Installer ⭐ | Nomina-Setup-vX.Y.Z.exe |
Run the installer — adds Start Menu & Desktop shortcuts, includes uninstaller |
| 🖥️ Windows Portable | Nomina-vX.Y.Z-windows-x64.zip |
Unzip and run Nomina.exe — no installation needed |
| 🐧 Linux x64 | Nomina-vX.Y.Z-linux-x64.tar.gz |
tar -xzf then ./Nomina/Nomina |
| 🐧 Linux ARM64 | Nomina-vX.Y.Z-linux-arm64.tar.gz |
Same as above, on Raspberry Pi 4/5 or ARM servers |
| 🍎 macOS (Apple Silicon) | Nomina-vX.Y.Z-macos-arm64.zip |
Unzip → drag Nomina.app to Applications. First launch: right-click → Open. Runs on Intel via Rosetta 2 |
Every release ships with a SHA256SUMS.txt so you can verify your download.
Nomina turns the tedious task of renaming dozens — or thousands — of files into a smooth, visual workflow. Drop a folder, stack up rules (prefix, suffix, replace, slice, transform, numbering), and watch the new names update live before a single file is touched on disk.
Crafted with care for clarity and speed. No bloat, no telemetry, no surprises.
| ⚡ Batch Rename | Rename hundreds of files & folders in one sweep |
| 🔍 Live Filter | Quickly narrow down items by name |
| 🎨 Rule Engine | Mix prefix, suffix, replace, remove, slice, case-transform, and numbering |
| 🔄 Live Preview | See every new name update in real time as you tweak rules |
| 🧠 Smart Validation | Detects invalid characters, name conflicts, and reserved names |
| 💾 Presets | Save and reuse your favorite rule combinations |
| 📤 Import / Export Presets | Export presets to a .json file or import from one — share across machines |
| ↩️ Undo | Undo the last rename batch in one click |
| 🔁 Recursive Mode | Optionally scan subfolders when loading a directory |
| 🌐 Bilingual UI | Full English & Persian (RTL) support, switch on the fly |
| 🌗 Dark / Light | Beautiful themes that respect your eyes |
| 🖱️ Drag & Drop | Drop files or a folder anywhere on the window to load them |
| 📋 Clipboard Paste | Ctrl+Shift+V to load a copied path instantly |
| 🛡️ Safe by Default | Nothing is renamed until you hit Rename — preview first, commit later |
| 🎯 Metadata Cleanup | Optional removal of file metadata on rename |
Build complex rename pipelines by combining any of these rules:
- Prefix / Suffix — add text before or after the name
- Replace — find & replace, with optional regex
- Remove — strip out unwanted substrings
- Slice — keep a portion of the original name by index
- Transform — UPPERCASE, lowercase, Title Case, camelCase, kebab-case, snake_case
- Numbering — sequential numbers with custom start, step, and zero-padding
- Extension — change or normalize file extensions
Each rule can be toggled independently and applied to all items or just the selected ones.
- Python 3.10+
- Windows 10/11 (Edge WebView2), Linux (GTK 3 + WebKit2GTK 4.1), or macOS 11+
# 1. Clone the repository
git clone https://github.com/esmail-mkh/nomina.git
cd nomina
# 2. (Recommended) Create a virtual environment
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux / macOS:
source .venv/bin/activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Run the app
python main.py💡 Tip: On first run, Nomina creates its config folder at
Documents/EMKH_Apps/Nomina/(or~/Documents/EMKH_Apps/Nomina/on Linux/macOS) for your presets and settings.
You can produce a standalone, redistributable app for your platform with PyInstaller.
# Install build tooling
pip install pyinstaller pillow
# Generate platform-specific icons from build/icon.svg
python build/make_icons.py
# Build (onedir) — output lands in dist/Nomina/ (or dist/Nomina.app on macOS)
pyinstaller build/nomina.spec --noconfirm --cleanFor smaller binaries, install UPX and add --upx-dir /path/to/upx (Windows + Linux only — macOS skips UPX automatically). The included spec already declares safe exclusion rules.
This repo ships with a manual-dispatch workflow at .github/workflows/release.yml that:
- ✅ Asks for a release version when triggered
- 🛠️ Builds in parallel on Windows x64, Linux x64, Linux ARM64, and macOS ARM64 runners
- 🎨 Generates platform icons from
build/icon.svg - 📦 Compresses with the latest UPX (auto-fetched from upstream)
- 🖥️ Builds a Windows Installer (
.exe) with Inno Setup alongside the portable.zip - 🚀 Publishes a GitHub Release with all archives, the installer, and
SHA256SUMS.txt
To cut a release: Actions → Build & Release → Run workflow → enter version → run.
- Load a folder — click Browse, paste a path, or drag-and-drop a folder onto the window.
- Filter (optional) — narrow the list to what you want to rename.
- Select items (optional) — leave nothing checked to apply to all, or tick specific rows.
- Configure rules — turn on Prefix / Suffix / Replace / Numbering / Transform / etc.
- Preview — the New Name column updates live as you change rules.
- Validate — click Validate to surface any invalid names or conflicts.
- Rename — click Rename to commit changes to disk.
| Shortcut | Action |
|---|---|
Ctrl + Enter |
Load path from input |
Ctrl + Shift + V |
Paste path from clipboard and load |
Ctrl + S |
Execute Rename |
Esc |
Close any open modal |
| Layer | Technology |
|---|---|
| 🐍 Core | Python 3.10+ |
| 🖥️ Window / Bridge | pywebview |
| 🎨 UI | HTML5 · CSS3 · Vanilla JavaScript |
| 📋 Utilities | pyperclip, pathlib, tkinter (folder picker) |
nomina/
├── main.py # Python entry point + pywebview API bridge
├── index.html # Main UI markup
├── style.css # All styling (dark + light themes, RTL support)
├── script.js # UI logic, i18n, rule engine, preview
├── requirements.txt # Python runtime dependencies
├── fonts/ # Bundled fonts (Outfit, IBM Plex Mono, Vazirmatn)
├── build/
│ ├── icon.svg # Source app icon (matches in-app titlebar)
│ ├── make_icons.py # Rasterizes SVG → .ico / .png / .icns
│ └── nomina.spec # PyInstaller spec (onedir, cross-platform, UPX-ready)
├── docs/
│ └── screenshot.png # Used in README preview
└── .github/
└── workflows/
└── release.yml # Manual-dispatch release workflow (Win/Linux/macOS)
This project is licensed under the MIT License — see the LICENSE file for details.
If Nomina saved you time, consider giving it a ⭐ on GitHub — it really helps!
Made with ☕ and a little Python magic.