After 3 months of working as a complete beginner with Rust and GTK, I must say that this combination is quite pleasant to use.
I use Glade to set up graphical elements(just drag and drop) and then code them which really decrease amount of work with GUI.
So far I've only created one application with about 4000 lines of code using GTK https://github.com/qarmin/czkawka/tree/master/czkawka_gui/src.
Hard to argue with that list list... except maybe switch out flameshot for ksnip, and obsidian for Joplin. Add in kooha for simple screen recording, maybe lollipop for music?
Of the smaller more "utility-like" apps... here's a segment from my post install file relating to Rust apps. It may or may not help:
cargo install bat # purdy cat
cargo install bandwhich # display current network utilization by process
# cargo install castor # GTK gemini, gopher, finger client
cargo install czkawka_gui # https://github.com/qarmin/czkawka
cargo install czkawka_cli # remove unnecessary files from your computer.
cargo install du-dust # du alternative; bin is dust
cargo install exa # drop-in replacement for ls
cargo install fd-find # a better find
than find
?
cargo install git-delta # file diffing
cargo install grex # provide pattern... it offers a possible regex
cargo install hyperfine # performance monitor
cargo install procs # procs is a modern replacement for ps
cargo install ripgrep #
rg.. a better grep?
cargo install skim # FZF alternative; bin is
sk
cargo install sd # more intuitive than
sed
cargo install starship # lovely drop-in command prompt
cargo install szyszka # GUI batch file-renamer
cargo install tealdeer # tldr alternative; bin is
tldr
cargo install ytop # purdy htop
cargo install zellij # a terminal workspace -- buggy as of 2021-04-28
cargo install zoxide # fast cd
ing around the filesystem
EDIT: Formatting ... reddit markdown hates backtcks
I use a open source program called czkawka. You can use the command line to find any duplicate files or use their GUI.
​
It support probably since 2.4.0 version, but looks that usage is quite unintuitive for some users - https://github.com/qarmin/czkawka/issues/373#issuecomment-903248098.
Try this https://github.com/qarmin/czkawka/releases
I honestly have NO IDEA if it'll work but it was posted recently on reddit here https://reddit.com/r/DataHoarder/comments/p09av3/czkawka_320_arrives_to_remove_your_duplicate/
I think this is a two-step process.
First, a de-duplicator. Czkawka will have you covered and is fast. You can preview and compare via file hashes.
The second is to do a scan for files older than X and you can manually review them for removal. any scripting or programming language can do this.
So... if I've understood correctly, you want to find duplicates?
If that's the case I saw this tool by a fellow Hoarder not too long ago: https://github.com/qarmin/czkawka
The following works to build and run a macOS GUI. It should theoretically be bundle-able into a MacOS .app package, but I am not familiar enough with Rust to do so.
First: open Terminal.app. Run the following commands, which respectively installs a compiler, the Homebrew package manager, GTK and Rust, and Czkawka.
# xcode-select --install # /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # brew install rust gtk+3 # curl -L https://github.com/qarmin/czkawka/archive/2.0.0.tar.gz | tar -zxvf - # cd czkawka-2.0.0 # cargo run --bin czkawka_gui
Relatively new tool called Czkawka will do it for you:
https://github.com/qarmin/czkawka/releases
​
BTW. I've had similar issue like you due to multiple backups of the same devices. For photos downloaded from smartphones I wrote a simple script renaming photos to a date and time when the photo was taken. Some very old devices didn't save EXIF info properly, but we are talking about 2008 or so and older. All newer devices don't have problems with EXIF data and the script works great. That was a simple was to find duplicates before Czkawka.
​
I hope it helps..
Both CLI and GUI have same core, but due limited time I work mostly on adding features to GUI.
As I wrote in README file, for CLI usage I suggest to use one of this apps - https://github.com/qarmin/czkawka#cli
> Remove support for finding zeroed files > > Why? This was really useful...
I found this. No idea if the workaround works for your purposes, might be worth a try.
You probably need to install gtk libraries because are missing in OS - probably this package will work https://packages.msys2.org/base/mingw-w64-gtk3
You can also use cross compilation instruction from - https://github.com/qarmin/czkawka/blob/9fd3fb376ef7e14f4eda19ba159a591478cfde45/.github/workflows/windows.yml#L150-L238
I think BleachBit is generally what is recommended now, which is open-source.
Personally, I've been more of a fan of czkawka as I prefer to use Rust-based app (primarily since they're often newer so unburdened by old designs) though it isn't like I'm against using python, electron, (insert other unpopular framework here) if it's the best option.
In this case, I mainly need something focused on finding duplicate, large, and other junk files. Czkawka fits that perfectly and allows swapping files with symlink so it's an easy way to deduplicate files safely for me.
I've been using czkawka on Linux but the page says it also runs on Macs. From the GUI you have to click "+ Add" and select the directories. If you don't add some then it won't search that path.
You are looking for something which can compute perceptual hashes of images and then show you the matches.
Haven’t used it in a while, but this tool has an option for computing image similarity - https://github.com/qarmin/czkawka
Looking through their git repo, I'd say that you run a high risk of borking your system with that app. The examples they show would delete parts of user source repositories, among other things.
I'd advise you to get more familiar with where your files end up. As long as you use your package manager as your primary source of apps, you can keep your installation clean without third party tools :)
I have 150k ebooks myself that I consider sorted and organized, and use Calibre. Each one goes through various "automatic" metadata discovery tools through a phased approach and then are imported into my "production" library, where each one is manually checked that the metadata is correct. So essentially my process looks like this:
Honestly, My only gripes with Calibre at this point are its performance when you have a library at this size. Using the UI is... definitely not ideal. Calibre-Web is pretty much required at that point
I'm not sure if czkawka does that exact thing but if it doesn't, its readme mentions other duplicate finders with features it doesn't have, like FSlint, DupeGuru, Bleachbit, and Fclones.
I don't know if Fslint can do this, but you should switch to its active successor, Czkawka, if you want a GUI for duplicate deletion.
To delete files only if they're in a specific directory: press the "Select" button at the bottom, and choose "Select custom", you can now type in "Path" the directory you want. For instance, to select only files inside the Downloads directory: /home/your_username/Downloads/*
If you want to create symlinks instead, you need select the items you want to symlink together, and press the "Symlink" button at the bottom of the screen, but as of today, it keeps the files in the first directory (by alphabetical order, it seems), and creates symlinks in the other(s), with no way to manually decide. The developer is aware of it and may change it in the future.
​
I would also recommend you to check out the excellent command-line program rmlint
, which is extremely powerful, and fast. You can remove files in directory B, but only if they're duplicate of files in directory A this way:
rmlint --keep-all-tagged --must-match-tagged /path/to/directory/B // /path/to/directory/A
Or you can use formatters to do the same thing, but instead replacing the files with symlinks:
rmlint -c sh:symlink --keep-all-tagged --must-match-tagged /path/to/directory/B // /path/to/directory/A
After that, review the file rmlint.sh
that it created to make sure it flagged the correct files, or run rmlint.sh -n
to perform a dry run. Once you're sure it will do what you want, just run rmlint.sh
to start deleting/symlinking.
The only thing that comes to my mind is:
https://github.com/qarmin/czkawka
Also you can use your package manager to clean temp files and files not deleted when uninstalling, in Debian based distro it would be "apt purge" "apt clean" "apt autoremove", you should look for alternatives
Czkawka uses perceptual hash which for similar images gives similar hash.
I wrote about it in instruction - https://github.com/qarmin/czkawka/blob/master/instructions/Instruction.md#similar-images
From the README of the czkawka
project:
- Similar Images - Finds images which are not exactly the same (different resolution, watermarks)
See this comment for how it might have been implemented in detail.
dupeguru also has a similar feature, but it's slower and not as smart.
I use this one : https://github.com/qarmin/czkawka
It has the advantages to be able to match files which are identical AND to be able to find "similar" looking pictures. Quite handy when you have multiple times lower resolution jpeg of the same image (doesn't work with raw files though).
On site https://github.com/qarmin/czkawka/releases there should be file windows_czkawka_gui.zip
and after unpacking it, opening file czkawka_gui.exe
should open app.
I don't think that it is the best softtware to find duplicates photos, but for now I didn't find better(I only used DupeGuru for this, it is still very good app, but I don't like it's GUI)
That depends on what it is specifically about.
It is probably best to create an issue in https://github.com/qarmin/czkawka/issues to see how much support there is for the idea.
​
Of course not all things can be implemented because:
- The functionality will not be used often.
- I have limited time, and the more code I have, the harder it is to manage/test it
- It will introduce too much complexity for other tools.
I can't help without info about OS version, app version, crash info etc.
I also recommend to open issue on Github - https://github.com/qarmin/czkawka/issues
This is my first ever app created with GUI and also first app created with Rust, so I focused on copying FSlint interface which I liked a lot(with a few changes).
For me, the interface is very intuitive because I have been using the program for a long time, but it is probably outdated for many people.
That is why I have created an issue - https://github.com/qarmin/czkawka/issues/1 - where I am collecting proposals on what Czkawka could look like after rework.
As I am unlikely to have a good taste in graphics, I would rather rely on other people's ideas than mine.
For now there is 2 things that is blocking new interface:
- No vision of how each of the available tools should look in the new interface(like similar images or similar music should have one tree view? or more?, what about buttons etc.)
- I don't want to create now an app with GTK3, because in future it will require rewrite to GTK4 which is available now. Due relying on Glade, I must wait for GTK4 support in it.
If anyone would like to add any other frontend (using Rust, of course, and not JavaScript) I wouldn't have any major objections to include the code to the repository.
I would only require two things:
- the code should be in a separate workspace in the main repository, so user should have choice to not compile it (Like Orbtk Frontend - https://github.com/qarmin/czkawka/tree/master/czkawka_gui_orbtk).
- The program must work - i.e. it can be primitive, e.g. it can have only one tab, display only 5 results, do not provide advanced selection and deletion methods, etc., but it must search files and display the results