diff --git a/Cargo.lock b/Cargo.lock index bc48cf2..f2133d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -559,9 +559,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.0" +version = "3.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f" +checksum = "a3b1be7772ee4501dba05acbe66bb1e8760f6a6c474a36035631638e4415f130" [[package]] name = "by_address" @@ -683,11 +683,10 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730" dependencies = [ - "jobserver", "libc", ] @@ -765,7 +764,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-targets 0.52.2", ] [[package]] @@ -937,9 +936,9 @@ dependencies = [ [[package]] name = "const-field-offset" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6304465f16f463cddc572b737c3df93576edd3a6b53f057bd8beeb29f4ef8dfd" +checksum = "ee299fd3deaafe475c5265e87273a98ce753148e79abe7ba4c0c6f90652e1a17" dependencies = [ "const-field-offset-macro", "field-offset", @@ -947,9 +946,9 @@ dependencies = [ [[package]] name = "const-field-offset-macro" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57aaaad9185d3bcb3afe63549d8ba60b2fb0ea8dc2da83f62dd56805edf56fd1" +checksum = "77c1f041b3982b9d56ee85931d60106643188e04385b7ec3eeeca546247eb18c" dependencies = [ "proc-macro2", "quote", @@ -3248,15 +3247,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" -[[package]] -name = "jobserver" -version = "0.1.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" -dependencies = [ - "libc", -] - [[package]] name = "jpeg-decoder" version = "0.3.1" @@ -5504,9 +5494,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.13" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tempfile" @@ -5557,9 +5547,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -5951,9 +5941,9 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -5966,9 +5956,9 @@ checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" [[package]] name = "unicode-script" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc" +checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" [[package]] name = "unicode-segmentation" @@ -6478,7 +6468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.52.0", + "windows-targets 0.52.2", ] [[package]] @@ -6487,7 +6477,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.2", ] [[package]] @@ -6514,7 +6504,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.2", ] [[package]] @@ -6549,17 +6539,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "d98532992affa02e52709d5b4d145a3668ae10d9081eea4a7f26f719a8476f71" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.1", + "windows_aarch64_msvc 0.52.1", + "windows_i686_gnu 0.52.1", + "windows_i686_msvc 0.52.1", + "windows_x86_64_gnu 0.52.1", + "windows_x86_64_gnullvm 0.52.1", + "windows_x86_64_msvc 0.52.1", ] [[package]] @@ -6576,9 +6566,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "e7269c1442e75af9fa59290383f7665b828efc76c429cc0b7f2ecb33cf51ebae" [[package]] name = "windows_aarch64_msvc" @@ -6594,9 +6584,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "f70ab2cebf332b7ecbdd98900c2da5298a8c862472fb35c75fc297eabb9d89b8" [[package]] name = "windows_i686_gnu" @@ -6612,9 +6602,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "679f235acf6b1639408c0f6db295697a19d103b0cdc88146aa1b992c580c647d" [[package]] name = "windows_i686_msvc" @@ -6630,9 +6620,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "3480ac194b55ae274a7e135c21645656825da4a7f5b6e9286291b2113c94a78b" [[package]] name = "windows_x86_64_gnu" @@ -6648,9 +6638,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "42c46bab241c121402d1cb47d028ea3680ee2f359dcc287482dcf7fdddc73363" [[package]] name = "windows_x86_64_gnullvm" @@ -6666,9 +6656,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "dc885a4332ee1afb9a1bacf11514801011725570d35675abc229ce7e3afe4d20" [[package]] name = "windows_x86_64_msvc" @@ -6684,9 +6674,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "9e440c60457f84b0bee09208e62acc7ade264b38c4453f6312b8c9ab1613e73c" [[package]] name = "winit" diff --git a/README.md b/README.md index b850759..2065035 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ ![com github qarmin czkawka](https://user-images.githubusercontent.com/41945903/102616149-66490400-4137-11eb-9cd6-813b2b070834.png) -**Czkawka** (_tch•kav•ka_ (IPA: [ˈʧ̑kafka]), "hiccup" in Polish) is a simple, fast and free app to remove unnecessary files from your computer. +**Czkawka** (_tch•kav•ka_ (IPA: [ˈʧ̑kafka]), "hiccup" in Polish) is a simple, fast and free app to remove unnecessary +files from your computer. **Krokiet** ((IPA: [ˈkrɔcɛt]), "croquet" in Polish) same as above, but uses Slint frontend. ## Features + - Written in memory-safe Rust - Amazingly fast - due to using more or less advanced algorithms and multithreading - Free, Open Source without ads @@ -15,24 +17,31 @@ - No spying - Czkawka does not have access to the Internet, nor does it collect any user information or statistics - Multilingual - support multiple languages like Polish, English or Italian - Multiple tools to use: - - Duplicates - Finds duplicates based on file name, size or hash - - Empty Folders - Finds empty folders with the help of an advanced algorithm - - Big Files - Finds the provided number of the biggest files in given location - - Empty Files - Looks for empty files across the drive - - Temporary Files - Finds temporary files - - Similar Images - Finds images which are not exactly the same (different resolution, watermarks) - - Similar Videos - Looks for visually similar videos - - Same Music - Searches for similar music by tags or by reading content and comparing it - - Invalid Symbolic Links - Shows symbolic links which point to non-existent files/directories - - Broken Files - Finds files that are invalid or corrupted - - Bad Extensions - Lists files whose content not match with their extension + - Duplicates - Finds duplicates based on file name, size or hash + - Empty Folders - Finds empty folders with the help of an advanced algorithm + - Big Files - Finds the provided number of the biggest files in given location + - Empty Files - Looks for empty files across the drive + - Temporary Files - Finds temporary files + - Similar Images - Finds images which are not exactly the same (different resolution, watermarks) + - Similar Videos - Looks for visually similar videos + - Same Music - Searches for similar music by tags or by reading content and comparing it + - Invalid Symbolic Links - Shows symbolic links which point to non-existent files/directories + - Broken Files - Finds files that are invalid or corrupted + - Bad Extensions - Lists files whose content not match with their extension ![Czkawka](https://user-images.githubusercontent.com/41945903/145280350-506f7e94-4db0-4de7-a68d-6e7c26bbd2bf.gif) ![Krokiet](https://github.com/qarmin/czkawka/assets/41945903/52628a29-ecd6-4692-9ee4-8a680c889193) +Changelog and new releases can be found in [Github releases](https://github.com/qarmin/czkawka/releases) or +in [CHANGELOG.md](CHANGELOG.md). + +More about latest version, you can find [in Medium article](https://medium.com/@qarmin/czkawka-7-0-a465036e8788) + ## Usage, installation, compilation, requirements, license + Each tool uses different technologies, so you can find instructions for each of them in the appropriate file: + - [Czkawka GUI (GTK frontend)](czkawka_gui/README.md)
- [Czkawka CLI](czkawka_cli/README.md)
- [Czkawka Core](czkawka_core/README.md)
@@ -40,9 +49,11 @@ Each tool uses different technologies, so you can find instructions for each of ## Comparison to other tools -Bleachbit is a master at finding and removing temporary files, while Czkawka only finds the most basic ones. So these two apps shouldn't be compared directly or be considered as an alternative to one another. +Bleachbit is a master at finding and removing temporary files, while Czkawka only finds the most basic ones. So these +two apps shouldn't be compared directly or be considered as an alternative to one another. -In this comparison remember, that even if app have same features they may work different(e.g. one app may have more options to choose than other). +In this comparison remember, that even if app have same features they may work different(e.g. one app may have more +options to choose than other). | | Czkawka | Krokiet | FSlint | DupeGuru | Bleachbit | |:------------------------:|:-----------:|:-----------:|:------:|:-----------------:|:-----------:| @@ -72,44 +83,67 @@ In this comparison remember, that even if app have same features they may work d | In active development | Yes | Yes | No | Yes | Yes | ## Other apps -There are many similar applications to Czkawka on the Internet, which do some things better and some things worse: + +There are many similar applications to Czkawka on the Internet, which do some things better and some things worse: + ### GUI + - [DupeGuru](https://github.com/arsenetar/dupeguru) - Many options to customize; great photo compare tool - [FSlint](https://github.com/pixelb/fslint) - A little outdated, but still have some tools not available in Czkawka - [AntiDupl.NET](https://github.com/ermig1979/AntiDupl) - Shows a lot of metadata of compared images -- [Video Duplicate Finder](https://github.com/0x90d/videoduplicatefinder) - Finds similar videos(surprising, isn't it), supports video thumbnails +- [Video Duplicate Finder](https://github.com/0x90d/videoduplicatefinder) - Finds similar videos(surprising, isn't it), + supports video thumbnails ### CLI -Due to limited time, the biggest emphasis is on the GUI version so if you are looking for really good and feature-packed console apps, then take a look at these: -- [Fclones](https://github.com/pkolaczk/fclones) - One of the fastest tools to find duplicates; it is written also in Rust + +Due to limited time, the biggest emphasis is on the GUI version so if you are looking for really good and feature-packed +console apps, then take a look at these: + +- [Fclones](https://github.com/pkolaczk/fclones) - One of the fastest tools to find duplicates; it is written also in + Rust - [Rmlint](https://github.com/sahib/rmlint) - Nice console interface and also is feature packed - [RdFind](https://github.com/pauldreik/rdfind) - Fast, but written in C++ ¯\\\_(ツ)\_/¯ ## Contributions + Contributions to this repository are welcome. You can help by creating: + - Bug reports - memory leaks, unexpected behavior, crashes - Feature proposals - proposal to change/add/delete some features - Pull Requests - implementing a new feature yourself or fixing bugs. - If the change is bigger, then it's a good idea to open a new issue to discuss changes, but issues with label `PR welcome` are already checked and accepted. + If the change is bigger, then it's a good idea to open a new issue to discuss changes, but issues with + label `PR welcome` are already checked and accepted. - Documentation - There is an [instruction](instructions/Instruction.md) which you can improve. - Translations - Instruction how to translate files is available [here](instructions/Translations.md) -- External contributions - App use big number of external libraries like [lofty](https://github.com/Serial-ATA/lofty-rs), [image-rs](https://github.com/image-rs/image) or [symphonia](https://github.com/pdeljanov/Symphonia) so improving this libraries will automatically improve Czkawka +- External contributions - App use big number of external libraries + like [lofty](https://github.com/Serial-ATA/lofty-rs), [image-rs](https://github.com/image-rs/image) + or [symphonia](https://github.com/pdeljanov/Symphonia) so improving this libraries will automatically improve Czkawka You can also help by doing other things: -- Creating text articles - [LinuxUprising](https://www.linuxuprising.com/2021/03/find-and-remove-duplicate-files-similar.html) or [Ubunlog](https://ubunlog.com/en/czkawka-finds-and-removes-empty-and-broken-duplicate-files/) -- Adding Czkawka to repositories - [Alpine Linux](https://pkgs.alpinelinux.org/packages?name=czkawka&branch=edge) or [NixOS](https://github.com/NixOS/nixpkgs/pull/116441) or [OpenMandriva](https://github.com/OpenMandrivaAssociation/czkawka) -- Creating videos - [First Video](https://www.youtube.com/watch?v=CWlRiTD4vDc) or [Spanish Tutorial](https://www.youtube.com/watch?v=V9x-pHJRmKY) + +- Creating text + articles - [LinuxUprising](https://www.linuxuprising.com/2021/03/find-and-remove-duplicate-files-similar.html) + or [Ubunlog](https://ubunlog.com/en/czkawka-finds-and-removes-empty-and-broken-duplicate-files/) +- Adding Czkawka to repositories - [Alpine Linux](https://pkgs.alpinelinux.org/packages?name=czkawka&branch=edge) + or [NixOS](https://github.com/NixOS/nixpkgs/pull/116441) + or [OpenMandriva](https://github.com/OpenMandrivaAssociation/czkawka) +- Creating videos - [First Video](https://www.youtube.com/watch?v=CWlRiTD4vDc) + or [Spanish Tutorial](https://www.youtube.com/watch?v=V9x-pHJRmKY) - Recommending it to others ## Thanks Big thanks to Pádraig Brady, creator of fantastic FSlint, because without his work I wouldn't create this tool. -Thanks also to all the people who create patches for this program, make it available on other systems, create videos, articles about it etc. +Thanks also to all the people who create patches for this program, make it available on other systems, create videos, +articles about it etc. -Also, I really appreciate work of people that create crates on which Czkawka is based and for that I try to report bugs to make it even better. +Also, I really appreciate work of people that create crates on which Czkawka is based and for that I try to report bugs +to make it even better. ## Donations -If you are using the app, I would appreciate a donation for its further development, which can be done [here](https://github.com/sponsors/qarmin). + +If you are using the app, I would appreciate a donation for its further development, which can be +done [here](https://github.com/sponsors/qarmin). diff --git a/krokiet/README.md b/krokiet/README.md index e017354..acd6071 100644 --- a/krokiet/README.md +++ b/krokiet/README.md @@ -12,9 +12,8 @@ frontend(but of course I want implement most of the features from other project) Krokiet should not have any special runtime requirements - it should work on almost any device non-antic device. -Prebuild binaries should work on Windows 10,11, Mac, Ubuntu 22.04/20.04 and similar(libheif version and czkawka_gui requires Ubuntu 22.04+, rest Ubuntu 20.04) - https://github.com/qarmin/czkawka/releases/ - - +Prebuild binaries should work on Windows 10,11, Mac, Ubuntu 22.04/20.04 and similar(libheif version and czkawka_gui +requires Ubuntu 22.04+, rest Ubuntu 20.04) - https://github.com/qarmin/czkawka/releases/ ## Compilation @@ -26,8 +25,13 @@ sudo apt install libfontconfig-dev libfreetype-dev Default compilation is done by `cargo build --release` and should work on most systems. -You need the latest available version of Rust to compile it, because Krokiet aims to support the latest slint versions, -that should provide best experience. +Currently rustc have problems in optimizing code generated by slint(~90000 lines of code with version 7.0.0), so default +release build usually take > 60 minutes. +As workaround you can use this command, which require nightly version of rust: + +``` +RUSTFLAGS="-Zmir-enable-passes=-ScalarReplacementOfAggregates" cargo build --release +``` The only exception is building skia renderer which is non default feature that can be enabled manually if you want to use it, that require on windows msvc compiler(not sure how to exactly install it).