Szyszka is a simple but powerful and fast bulk file renamer.

Overview

Szyszka

Szyszka is a simple but powerful and fast bulk file renamer.

Szyszka

Features

  • Written in Rust
  • Available for Linux, Mac and Windows
  • Simple GUI created using GTK3
  • Multiple rules which can be freely combined:
    • Replace text
    • Trim text
    • Add text
    • Add numbers
    • Purge text
    • Change letters to upper/lowercase
    • Custom rules
  • Ability to edit, reorder rules and results
  • Handle even hundreds thousands of records

Requirements

Linux

You need to install GTK (it should be available by default on most distributions) and the canberra-gtk-module.

sudo apt install libgtk3-dev libcanberra-gtk-module

MacOS (not tested)

You need to install GTK using brew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install rust gtk+3

Windows

The released zip file contains all dependencies, so it work on Windows 7 SP1+.
If you want to, you can install the GTK runtime from https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases, ensure that its environment variables are set properly and run Szyszka from anywhere.

Installation

Precompiled Binaries

Available at https://github.com/qarmin/szyszka/releases

Snap

https://snapcraft.io/szyszka

snap install szyszka
sudo snap connect szyszka:removable-media # Allows to see files on external devices

Flatpak

TODO

Cargo/Crates.io

https://crates.io/crates/szyszka

cargo install szyszka

Gentoo Linux

szyszka is available on Gentoo's GURU overlay

emerge -av gui-apps/szyszka

Future work

  • Adding Regex support
  • Saving/loading presets
  • Trim x number of characters

Contribution

Contributions are very welcome - bug reports, pull requests, testing etc.
When creating or modifying existing rules, don't forget about updating/adding tests!

Name

Szyszka is Polish word which means Pinecone.

Why such a strange name?

Would you remember another app name like Rename Files Ultra?
Probably not.
But will you remember name Szyszka?
Well... probably also not, but when you hear this name, you will instantly think of this app.

Why?

I know that on Linux, which I primarily use, there is a lot of good file renamers (and even more on Windows), but I couldn't find any that would suit my needs. Available apps install a lot of dependencies, work slowly or just have a very bloated UI.

If you want very simple apps without too much of features, look at Bulky, Thunar Bulk Rename or Nautilus Renamer.

License

MIT

Comments
  • Improve language in README.md

    Improve language in README.md

    Edited some of the README.md to fix typos or reformulate the sentences. It's not perfect yet, since I wasn't always completely sure what was meant by the original author.

    opened by azadad96 2
  • Linux [Ubuntu 20.04 LTS] Error: Failed to load module “canberra-gtk-module

    Linux [Ubuntu 20.04 LTS] Error: Failed to load module “canberra-gtk-module"

    When starting the application, stdout alarms: Failed to load module “canberra-gtk-module”

    I fixed this through installing the dependency sudo apt-get install libcanberra-gtk-module

    And restarted bash with a PATH export like such: LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/gtk-3.0/modules:$LD_LIBRARY_PATH ./szyszka

    opened by simbleau 2
  • Unable to get creation date from file

    Unable to get creation date from file

    On an XFS and NFS-mounted-XFS partition, I'm unable to add any files and the only output when run in the terminal is Unable to get creation date from file

    Adding files from an ext4 partition works fine.

    In the absence of tracking down and fixing the specific problem, I'd love to be able to use the program without the creation date magic replacement variable (or have it just fill zeroes instead of rejecting the file completely).

    opened by ryansalerno 1
  • $(CREAT) = $(MODIF)

    $(CREAT) = $(MODIF)

    hello,

    these two options appear to give the same result. creation date option does not appear to pull from metadata.

    pdf metadata: screenshot-2021-10-15-10-34

    $(creat) result: screenshot-2021-10-15-10-37

    $(modif) result: screenshot-2021-10-15-10-37_1

    opened by noddle6cocoon 1
  • Exchanging file names for numbering reverses order of files

    Exchanging file names for numbering reverses order of files

    I would like to use this program to replace the name of files by a sequence of numbers to shorten the file name. Now there is the issue, that the order of the files will be inverted by default and I have to reorder the files by hand. This is feasible for a small number of files, but not if the mount of files goes into the hundreds or thousands. Is there an option to fix this, like ordering the files ascending instead of descending by clicking "current name" in the header?

    Bildschirmfoto von 2021-08-11 21-02-49

    opened by Sebastian-Hirsch 1
  • Feature request: slugify

    Feature request: slugify

    Three problems:

    • certain programs break when confronted with file names containing non-ASCII (this is especially visible for Windows - eg. username Michał will lead you in trouble, because some files will end in C:\Users\Micha\ and others will end in C:\Users\Michał\)

    • certain programs break when confronted with file names containing colons (it breaks Windows on OS level and causes trouble for rsync) or spaces (these are just poorly written).

    My suggestion is to provide way to normalize file names - using algorithm similar to eg. slug.

    opened by Ginden 1
  • Unable to add files from external drives

    Unable to add files from external drives

    When trying to add files from an external drive it gives me the following error: Unable to get creation date from file X

    Happens when running as root and not. Happens when using appimage as well as compiled from source. OS: Artix (linux 5.12.12.artix1-1)

    opened by agentsars 1
  • Mention tested Windows requirements

    Mention tested Windows requirements

    I've been playing with version 1.0.0 on a fresh Windows 7 SP1 machine and it seems to work fine (except some Windows-specific curiosities like being unable to change case if that's the only rule applied but that's a different issue). I mentioned that in the Windows requirements paragraph and improved it more a bit.

    opened by camaro96masakruje 1
  • Published to Gentoo

    Published to Gentoo

    Hello there I published szyszka on Gentoo's GURU overlay Also i added myself as a watcher for the releases page, so i will keep the package in sync with the upstream releases

    opened by MustafaSalih1993 1
  • Feature Request: Select 'not in tree'

    Feature Request: Select 'not in tree'

    Thanks for the program, it looks great! Sadly, my random use case that popped up right after I saw it isn't covered.

    I'd like to be able to compare duplicates as is, but then, on the selection, have the option to select (and delete) all of the files that are in a selected directory tree. I have multiple copies of the same folder that have diverged and I essentially want to keep one tree as is, and then only keep the files that are different in the second tree.

    opened by rorytm 1
  • $(MODIF) tag in custom rules does not fully work (Windows version)

    $(MODIF) tag in custom rules does not fully work (Windows version)

    I may be your first Windows tester. If that is truly the case, I'm really glad because Rust has recently drawn a lot more attention and this project looks promising. It's nice to see an open source app being also built for Windows :)

    Onto the bug I've noticed in the Windows build: The $(MODIF) tag in the custom rules does not work properly: it is shown in the status view (image 1, below), it tries to rename the file(s) accordingly when I click on the "Start Renaming" button and confirm, but fails, saying "Ignored 1 file(s), because there" (size issues with the results dialog box?) (image 2, below). After this, the same file(s) cannot be added anymore, even after reopening the executable. If the rule is anything other than a custom rule (I've not tested any other tags yet), the batch renaming works perfectly fine and the same file(s) can be re-added without any issues.

    image

    image

    Improvements (in my opinion, at least):

    1. In the Windows build, a command prompt window opens. Perhaps you could hide it from the end user. If not, I personally don't mind.
    2. Bigger text for some elements (e.g. "Status" in the status pane in the lower area)

    Other than that, the app is great! Keep on!

    opened by biru-cs 1
  • Make it posible to shortan filenames to a spesific lench

    Make it posible to shortan filenames to a spesific lench

    i am switching to another file system and it only allowes 255 characters in a file name. it would be cool if there would be a option to do different stuff with different the file is longer or shorter. or to make it posible to trim a file name to a specific lench.

    opened by Manni1000 0
  • Segmentation on Debian 10

    Segmentation on Debian 10

    On debian 10 + Gnome, using the AppImage (release 2.0.0) i get, as soon as I click "Add Folders":

    $ ./linux_szyszka.AppImage 
    Gtk-Message: 20:33:04.767: Failed to load module "canberra-gtk-module"
    Gtk-Message: 20:33:04.768: Failed to load module "canberra-gtk-module"
    /usr/lib/x86_64-linux-gnu/gio/modules/libgioremote-volume-monitor.so: undefined symbol: g_mount_operation_get_is_tcrypt_system_volume
    Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgioremote-volume-monitor.so
    /usr/lib/x86_64-linux-gnu/gio/modules/libgioremote-volume-monitor.so: undefined symbol: g_mount_operation_get_is_tcrypt_system_volume
    Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgioremote-volume-monitor.so
    Errore di segmentazione
    

    libgioremote-volume-monitor.so is not available.

    More, package libgtk3-dev

    apt install libgtk3-dev
    ...
    E: Cannot find package libgtk3-dev
    

    I tried installing libgtk3.0-cil-dev but I don't know if is really the same...

    Flatpack and Snap versions are working fine.

    Thank you, Riccardo

    opened by canonex 2
  • Bulk rename files using names in a text file or spreadsheet

    Bulk rename files using names in a text file or spreadsheet

    I have a folder with almost 2000 files in it, all in alphabetical order and I have a text list what I want them all to be named. It would be nice to be able to select all of the files, verify they are in order, and replace them with the names from the names.txt text list.

    Or a spreadsheet that has the existing name in the first column, and the replacement name in the second column.

    opened by willhubs 0
  • Saving Rule Presets (Feature Request)

    Saving Rule Presets (Feature Request)

    It will be a nice feature to save all the settings in the rule section. Then I never have to setup everything again every time I restart the software. :)

    image

    opened by marcus-universe 0
  • The Flatpak package of szyszka is not able to load canberra-gtk-module, and thus, custom iconography.

    The Flatpak package of szyszka is not able to load canberra-gtk-module, and thus, custom iconography.

    The flatpak package that is available at "http://dl.flathub.org/repo/appstream/com.github.qarmin.szyszka" is unable to load the canberra-gtk-module, which is demonstrated by this log.

    This depicts the problem.

    The snap-package that is available at "http://snapcraft.io/szyszka" is additionally unable to load the canberra-gtk-module, which is demonstrated by the output that is available at "https://github.com/qarmin/szyszka/issues/38#issuecomment-903112786".

    opened by rokejulianlockhart 0
Releases(2.0.0)
Owner
Rafał Mikrut
Rafał Mikrut
A powerful desktop widget app for windows, built with Vue and Tauri.

DashboardX Widgets A powerful desktop widget app for windows, built with Vue and Tauri. Still in development Currently only runs on windows (uses nati

DashboardX Widgets 3 Oct 25, 2023
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Pietro Gagliardi 10.4k Dec 31, 2022
mee6 but its foss

mee6 leveling clone but its free and open source stuff u need: rust + cargo postgres redis discord bot token use the thing: setup stuff in .env build

Ben Richeson 14 Aug 15, 2021
♾️ Fast & Simple AppImage manager

⚠️ Heavily in development (Not working) Leap Fast & Simple AppImage manager What's working Installation (github only, info about app not stored yet) R

lynx 7 Dec 12, 2022
OS-native file dialogs on Linux, OS X and Windows

nfd-rs nfd-rs is a Rust binding to the library nativefiledialog, that provides a convenient cross-platform interface to opening file dialogs on Linux,

Saurav Sachidanand 152 Nov 9, 2022
File system enumerator and monitor for Android.

File system enumerator and file monitor for Android. Built to be compatible with other command line utilties! This tool was created to somewhat automa

Kyle Benac 15 Aug 23, 2022
A tiny, neat C library that portably invokes native file open and save dialogs.

Native File Dialog A tiny, neat C library that portably invokes native file open, folder select and save dialogs. Write dialog code once and have it p

Michael Labbe 1.5k Dec 28, 2022
Unsafe bindings and a safe wrapper for gtk4-layer-shell, automatically generated from a .gir file

gtk4-layer-shell: gtk4-layer-shell-sys: gtk4-layer-shell This is the safe wrapper for gtk4-layer-shell, automatically generated from its .gir file. Fo

null 3 Apr 30, 2023
Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.

Deno Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust. Features Secure by default. No file,

Derek Jones 2 Aug 13, 2022
A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system

ScribeDown Current version: v0.0.1 Feature level: See the roadmap Beautiful, Clean, Writer-Oriented The goal of ScribeDown is to make Markdown the bes

Alex Dumas 4 Dec 20, 2022
Drew's fast Rust AppKit bindings

Drew's fast Rust AppKit bindings Provides select Rust bindings for Apple AppKit framework. This may be compared to, appkit crate cacao objrs_framework

Drew Crawford 2 Oct 28, 2022
⚡ A blazing fast alternative to the default Windows delete.

Turbo Delete A blazing fast alternative to the default Windows delete. Turbodelete is a blazing fast alternative to the default Windows delete functio

Tejas Ravishankar 165 Dec 4, 2022
A fast, zbus-based, permissively licensed AT-SPI library written in pure Rust!

AT-SPI for Rust Higher level, asynchronous Rust bindings to AT-SPI2, using zbus. Part of the Odilia screen reader project. Design Fully documented, wi

Odilia 12 Dec 31, 2022
A simple note taking application written in Rust and GTK4

Rnote A simple note taking application written in Rust and GTK4. Rnote aims to be a simple but functional note taking application for freehand drawing

Felix Zwettler 3.4k Jan 5, 2023
Simple GTK Rust Fuzzer which aims to test all available classes and functions in GTK.

Gtk Rust Fuzzer Simple GTK Rust Fuzzer which aims to test all available classes and functions in GTK. It finds bugs inside GTK functions, GTK exported

Rafał Mikrut 8 Nov 19, 2022
A simple, cross-platform GUI automation module for Rust.

AutoPilot AutoPilot is a Rust port of the Python C extension AutoPy, a simple, cross-platform GUI automation library for Python. For more information,

null 271 Dec 27, 2022
A simple UI framework for Rust built on top of IUP (http://webserver2.tecgraf.puc-rio.br/iup/)

KISS-UI A UI framework for Rust based on the KISS (Keep It Simple, Stupid!) philosophy. Powered by the IUP GUI library for C by Tecgraf, via the bindi

null 342 Jul 11, 2022
Marko Editor is a simple WYSIWYG editor for note taking.

Marko Editor Marko Editor is a simple WYSIWYG editor for note taking written in Rust and GTK 4. It uses Markdown as storage format and can read simple

Michael 49 Jan 6, 2023
A simple news reading GUI app built in Rust

Headlines [WIP] A native GUI app built with Rust using egui. Uses newsapi.org as the source to fetch news articles. This is a WIP and the current stat

creativcoder 89 Dec 29, 2022