1
0
Fork 0
mirror of synced 2024-05-09 15:02:24 +12:00

Small fixes (#1226)

* Use P instead L

* Cons

* Fix loading invalid item

* 1.75.0
This commit is contained in:
Rafał Mikrut 2024-02-24 11:44:56 +01:00 committed by GitHub
parent 4dbc26e18c
commit e5a0219bc9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 192 additions and 124 deletions

View file

@ -12,7 +12,7 @@ jobs:
linux-cli: linux-cli:
strategy: strategy:
matrix: matrix:
toolchain: [ stable, 1.74.0 ] toolchain: [ stable, 1.75.0 ]
type: [ release ] type: [ release ]
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
steps: steps:

View file

@ -12,7 +12,7 @@ jobs:
linux-krokiet-gui: linux-krokiet-gui:
strategy: strategy:
matrix: matrix:
toolchain: [ stable, 1.74.0 ] toolchain: [ stable, 1.75.0 ]
type: [ release ] type: [ release ]
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
steps: steps:
@ -39,7 +39,7 @@ jobs:
linux-krokiet-gui-heif: linux-krokiet-gui-heif:
strategy: strategy:
matrix: matrix:
toolchain: [ stable, 1.74.0 ] toolchain: [ stable, 1.75.0 ]
type: [ release ] type: [ release ]
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:
@ -69,7 +69,7 @@ jobs:
linux-gui: linux-gui:
strategy: strategy:
matrix: matrix:
toolchain: [ stable, 1.74.0 ] toolchain: [ stable, 1.75.0 ]
type: [ release ] type: [ release ]
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
steps: steps:

96
Cargo.lock generated
View file

@ -559,9 +559,9 @@ dependencies = [
[[package]] [[package]]
name = "bumpalo" name = "bumpalo"
version = "3.15.0" version = "3.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f" checksum = "a3b1be7772ee4501dba05acbe66bb1e8760f6a6c474a36035631638e4415f130"
[[package]] [[package]]
name = "by_address" name = "by_address"
@ -683,11 +683,10 @@ dependencies = [
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.0.83" version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730"
dependencies = [ dependencies = [
"jobserver",
"libc", "libc",
] ]
@ -765,7 +764,7 @@ dependencies = [
"js-sys", "js-sys",
"num-traits", "num-traits",
"wasm-bindgen", "wasm-bindgen",
"windows-targets 0.52.0", "windows-targets 0.52.2",
] ]
[[package]] [[package]]
@ -937,9 +936,9 @@ dependencies = [
[[package]] [[package]]
name = "const-field-offset" name = "const-field-offset"
version = "0.1.3" version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6304465f16f463cddc572b737c3df93576edd3a6b53f057bd8beeb29f4ef8dfd" checksum = "ee299fd3deaafe475c5265e87273a98ce753148e79abe7ba4c0c6f90652e1a17"
dependencies = [ dependencies = [
"const-field-offset-macro", "const-field-offset-macro",
"field-offset", "field-offset",
@ -947,9 +946,9 @@ dependencies = [
[[package]] [[package]]
name = "const-field-offset-macro" name = "const-field-offset-macro"
version = "0.1.3" version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57aaaad9185d3bcb3afe63549d8ba60b2fb0ea8dc2da83f62dd56805edf56fd1" checksum = "77c1f041b3982b9d56ee85931d60106643188e04385b7ec3eeeca546247eb18c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -3248,15 +3247,6 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
[[package]]
name = "jobserver"
version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "jpeg-decoder" name = "jpeg-decoder"
version = "0.3.1" version = "0.3.1"
@ -5504,9 +5494,9 @@ dependencies = [
[[package]] [[package]]
name = "target-lexicon" name = "target-lexicon"
version = "0.12.13" version = "0.12.14"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
[[package]] [[package]]
name = "tempfile" name = "tempfile"
@ -5557,9 +5547,9 @@ dependencies = [
[[package]] [[package]]
name = "thread_local" name = "thread_local"
version = "1.1.7" version = "1.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"once_cell", "once_cell",
@ -5951,9 +5941,9 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
[[package]] [[package]]
name = "unicode-normalization" name = "unicode-normalization"
version = "0.1.22" version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
dependencies = [ dependencies = [
"tinyvec", "tinyvec",
] ]
@ -5966,9 +5956,9 @@ checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291"
[[package]] [[package]]
name = "unicode-script" name = "unicode-script"
version = "0.5.5" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc" checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd"
[[package]] [[package]]
name = "unicode-segmentation" name = "unicode-segmentation"
@ -6478,7 +6468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
dependencies = [ dependencies = [
"windows-core", "windows-core",
"windows-targets 0.52.0", "windows-targets 0.52.2",
] ]
[[package]] [[package]]
@ -6487,7 +6477,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [ dependencies = [
"windows-targets 0.52.0", "windows-targets 0.52.2",
] ]
[[package]] [[package]]
@ -6514,7 +6504,7 @@ version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [ dependencies = [
"windows-targets 0.52.0", "windows-targets 0.52.2",
] ]
[[package]] [[package]]
@ -6549,17 +6539,17 @@ dependencies = [
[[package]] [[package]]
name = "windows-targets" name = "windows-targets"
version = "0.52.0" version = "0.52.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" checksum = "d98532992affa02e52709d5b4d145a3668ae10d9081eea4a7f26f719a8476f71"
dependencies = [ dependencies = [
"windows_aarch64_gnullvm 0.52.0", "windows_aarch64_gnullvm 0.52.1",
"windows_aarch64_msvc 0.52.0", "windows_aarch64_msvc 0.52.1",
"windows_i686_gnu 0.52.0", "windows_i686_gnu 0.52.1",
"windows_i686_msvc 0.52.0", "windows_i686_msvc 0.52.1",
"windows_x86_64_gnu 0.52.0", "windows_x86_64_gnu 0.52.1",
"windows_x86_64_gnullvm 0.52.0", "windows_x86_64_gnullvm 0.52.1",
"windows_x86_64_msvc 0.52.0", "windows_x86_64_msvc 0.52.1",
] ]
[[package]] [[package]]
@ -6576,9 +6566,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]] [[package]]
name = "windows_aarch64_gnullvm" name = "windows_aarch64_gnullvm"
version = "0.52.0" version = "0.52.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" checksum = "e7269c1442e75af9fa59290383f7665b828efc76c429cc0b7f2ecb33cf51ebae"
[[package]] [[package]]
name = "windows_aarch64_msvc" name = "windows_aarch64_msvc"
@ -6594,9 +6584,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]] [[package]]
name = "windows_aarch64_msvc" name = "windows_aarch64_msvc"
version = "0.52.0" version = "0.52.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" checksum = "f70ab2cebf332b7ecbdd98900c2da5298a8c862472fb35c75fc297eabb9d89b8"
[[package]] [[package]]
name = "windows_i686_gnu" name = "windows_i686_gnu"
@ -6612,9 +6602,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]] [[package]]
name = "windows_i686_gnu" name = "windows_i686_gnu"
version = "0.52.0" version = "0.52.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" checksum = "679f235acf6b1639408c0f6db295697a19d103b0cdc88146aa1b992c580c647d"
[[package]] [[package]]
name = "windows_i686_msvc" name = "windows_i686_msvc"
@ -6630,9 +6620,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]] [[package]]
name = "windows_i686_msvc" name = "windows_i686_msvc"
version = "0.52.0" version = "0.52.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" checksum = "3480ac194b55ae274a7e135c21645656825da4a7f5b6e9286291b2113c94a78b"
[[package]] [[package]]
name = "windows_x86_64_gnu" name = "windows_x86_64_gnu"
@ -6648,9 +6638,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]] [[package]]
name = "windows_x86_64_gnu" name = "windows_x86_64_gnu"
version = "0.52.0" version = "0.52.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" checksum = "42c46bab241c121402d1cb47d028ea3680ee2f359dcc287482dcf7fdddc73363"
[[package]] [[package]]
name = "windows_x86_64_gnullvm" name = "windows_x86_64_gnullvm"
@ -6666,9 +6656,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]] [[package]]
name = "windows_x86_64_gnullvm" name = "windows_x86_64_gnullvm"
version = "0.52.0" version = "0.52.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" checksum = "dc885a4332ee1afb9a1bacf11514801011725570d35675abc229ce7e3afe4d20"
[[package]] [[package]]
name = "windows_x86_64_msvc" name = "windows_x86_64_msvc"
@ -6684,9 +6674,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]] [[package]]
name = "windows_x86_64_msvc" name = "windows_x86_64_msvc"
version = "0.52.0" version = "0.52.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" checksum = "9e440c60457f84b0bee09208e62acc7ade264b38c4453f6312b8c9ab1613e73c"
[[package]] [[package]]
name = "winit" name = "winit"

View file

@ -1,10 +1,12 @@
![com github qarmin czkawka](https://user-images.githubusercontent.com/41945903/102616149-66490400-4137-11eb-9cd6-813b2b070834.png) ![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. **Krokiet** ((IPA: [ˈkrɔcɛt]), "croquet" in Polish) same as above, but uses Slint frontend.
## Features ## Features
- Written in memory-safe Rust - Written in memory-safe Rust
- Amazingly fast - due to using more or less advanced algorithms and multithreading - Amazingly fast - due to using more or less advanced algorithms and multithreading
- Free, Open Source without ads - 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 - 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 - Multilingual - support multiple languages like Polish, English or Italian
- Multiple tools to use: - Multiple tools to use:
- Duplicates - Finds duplicates based on file name, size or hash - Duplicates - Finds duplicates based on file name, size or hash
- Empty Folders - Finds empty folders with the help of an advanced algorithm - 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 - Big Files - Finds the provided number of the biggest files in given location
- Empty Files - Looks for empty files across the drive - Empty Files - Looks for empty files across the drive
- Temporary Files - Finds temporary files - Temporary Files - Finds temporary files
- Similar Images - Finds images which are not exactly the same (different resolution, watermarks) - Similar Images - Finds images which are not exactly the same (different resolution, watermarks)
- Similar Videos - Looks for visually similar videos - Similar Videos - Looks for visually similar videos
- Same Music - Searches for similar music by tags or by reading content and comparing it - 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 - Invalid Symbolic Links - Shows symbolic links which point to non-existent files/directories
- Broken Files - Finds files that are invalid or corrupted - Broken Files - Finds files that are invalid or corrupted
- Bad Extensions - Lists files whose content not match with their extension - 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) ![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) ![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 ## Usage, installation, compilation, requirements, license
Each tool uses different technologies, so you can find instructions for each of them in the appropriate file: 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)</br> - [Czkawka GUI (GTK frontend)](czkawka_gui/README.md)</br>
- [Czkawka CLI](czkawka_cli/README.md)</br> - [Czkawka CLI](czkawka_cli/README.md)</br>
- [Czkawka Core](czkawka_core/README.md)</br> - [Czkawka Core](czkawka_core/README.md)</br>
@ -40,9 +49,11 @@ Each tool uses different technologies, so you can find instructions for each of
## Comparison to other tools ## 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 | | | 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 | | In active development | Yes | Yes | No | Yes | Yes |
## Other apps ## 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 ### GUI
- [DupeGuru](https://github.com/arsenetar/dupeguru) - Many options to customize; great photo compare tool - [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 - [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 - [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 ### 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 - [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++ ¯\\\_(ツ)\_/¯ - [RdFind](https://github.com/pauldreik/rdfind) - Fast, but written in C++ ¯\\\_(ツ)\_/¯
## Contributions ## Contributions
Contributions to this repository are welcome. Contributions to this repository are welcome.
You can help by creating: You can help by creating:
- Bug reports - memory leaks, unexpected behavior, crashes - Bug reports - memory leaks, unexpected behavior, crashes
- Feature proposals - proposal to change/add/delete some features - Feature proposals - proposal to change/add/delete some features
- Pull Requests - implementing a new feature yourself or fixing bugs. - 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. - Documentation - There is an [instruction](instructions/Instruction.md) which you can improve.
- Translations - Instruction how to translate files is available [here](instructions/Translations.md) - 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: 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 text
- Creating videos - [First Video](https://www.youtube.com/watch?v=CWlRiTD4vDc) or [Spanish Tutorial](https://www.youtube.com/watch?v=V9x-pHJRmKY) 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 - Recommending it to others
## Thanks ## Thanks
Big thanks to Pádraig Brady, creator of fantastic FSlint, because without his work I wouldn't create this tool. 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 ## 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).

View file

@ -3,7 +3,7 @@ name = "czkawka_cli"
version = "7.0.0" version = "7.0.0"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"] authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2021" edition = "2021"
rust-version = "1.74.0" rust-version = "1.75.0"
description = "CLI frontend of Czkawka" description = "CLI frontend of Czkawka"
license = "MIT" license = "MIT"
homepage = "https://github.com/qarmin/czkawka" homepage = "https://github.com/qarmin/czkawka"

View file

@ -428,7 +428,7 @@ pub struct CommonCliItems {
long_help = "List of checked files with provided extension(s). There are also helpful macros which allow to easy use a typical extensions like:\nIMAGE(\"jpg,kra,gif,png,bmp,tiff,hdr,svg\"),\nTEXT(\"txt,doc,docx,odt,rtf\"),\nVIDEO(\"mp4,flv,mkv,webm,vob,ogv,gifv,avi,mov,wmv,mpg,m4v,m4p,mpeg,3gp\") or\nMUSIC(\"mp3,flac,ogg,tta,wma,webm\")\n " long_help = "List of checked files with provided extension(s). There are also helpful macros which allow to easy use a typical extensions like:\nIMAGE(\"jpg,kra,gif,png,bmp,tiff,hdr,svg\"),\nTEXT(\"txt,doc,docx,odt,rtf\"),\nVIDEO(\"mp4,flv,mkv,webm,vob,ogv,gifv,avi,mov,wmv,mpg,m4v,m4p,mpeg,3gp\") or\nMUSIC(\"mp3,flac,ogg,tta,wma,webm\")\n "
)] )]
pub allowed_extensions: Vec<String>, pub allowed_extensions: Vec<String>,
#[clap(short = 'L', long, help = "Excluded file extension(s)", long_help = "List of extensions, that will be removed from search.\n ")] #[clap(short = 'P', long, help = "Excluded file extension(s)", long_help = "List of extensions, that will be removed from search.\n ")]
pub excluded_extensions: Vec<String>, pub excluded_extensions: Vec<String>,
#[clap(flatten)] #[clap(flatten)]
pub file_to_save: FileToSave, pub file_to_save: FileToSave,

View file

@ -3,7 +3,7 @@ name = "czkawka_core"
version = "7.0.0" version = "7.0.0"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"] authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2021" edition = "2021"
rust-version = "1.74.0" rust-version = "1.75.0"
description = "Core of Czkawka app" description = "Core of Czkawka app"
license = "MIT" license = "MIT"
homepage = "https://github.com/qarmin/czkawka" homepage = "https://github.com/qarmin/czkawka"

View file

@ -3,7 +3,7 @@ name = "czkawka_gui"
version = "7.0.0" version = "7.0.0"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"] authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2021" edition = "2021"
rust-version = "1.74.0" rust-version = "1.75.0"
description = "GTK frontend of Czkawka" description = "GTK frontend of Czkawka"
license = "MIT" license = "MIT"
homepage = "https://github.com/qarmin/czkawka" homepage = "https://github.com/qarmin/czkawka"

View file

@ -1,52 +1,74 @@
# Czkawka GUI # Czkawka GUI
Czkawka GUI is a graphical user interface for Czkawka Core written with GTK 4. Czkawka GUI is a graphical user interface for Czkawka Core written with GTK 4.
![Screenshot from 2023-11-26 12-43-32](https://github.com/qarmin/czkawka/assets/41945903/722ed490-0be1-4dac-bcfc-182a4d0787dc) ![Screenshot from 2023-11-26 12-43-32](https://github.com/qarmin/czkawka/assets/41945903/722ed490-0be1-4dac-bcfc-182a4d0787dc)
## Requirements ## Requirements
Requirements depend on your platform. Requirements depend on your platform.
Prebuilt binaries are available here - https://github.com/qarmin/czkawka/releases/ Prebuilt binaries are available here - https://github.com/qarmin/czkawka/releases/
### Linux ### Linux
#### Prebuild binaries #### Prebuild binaries
Ubuntu - `sudo apt install libgtk-4 libheif libraw ffmpeg -y`
#### Snap - Ubuntu - `sudo apt install libgtk-4 libheif libraw ffmpeg -y`
none - all needed libraries are bundled in snap [except ffmpeg](https://github.com/snapcrafters/ffmpeg/issues/73) - https://snapcraft.io/czkawka
#### Snap -
none - all needed libraries are bundled in
snap [except ffmpeg](https://github.com/snapcrafters/ffmpeg/issues/73) - https://snapcraft.io/czkawka
#### Flatpak #### Flatpak
none - all needed libraries are bundled - https://flathub.org/apps/com.github.qarmin.czkawka
none - all needed libraries are bundled - https://flathub.org/apps/com.github.qarmin.czkawka
### Mac ### Mac
``` ```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install gtk4 adwaita-icon-theme ffmpeg librsvg libheif libraw brew install gtk4 adwaita-icon-theme ffmpeg librsvg libheif libraw
``` ```
### Windows ### Windows
All needed libraries should be bundled in zip (except ffmpeg which you need download and unpack to location with `czkawka_gui.exe` - https://ffmpeg.org/download.html#build-windows)
You can also install the app via msys2 (webp and heif should work here) - https://www.msys2.org/#installation (czkawka package - https://packages.msys2.org/base/mingw-w64-czkawka) All needed libraries should be bundled in zip (except ffmpeg which you need download and unpack to location
with `czkawka_gui.exe` - https://ffmpeg.org/download.html#build-windows)
You can also install the app via msys2 (webp and heif should work here) - https://www.msys2.org/#installation (czkawka
package - https://packages.msys2.org/base/mingw-w64-czkawka)
``` ```
pacman -S mingw-w64-x86_64-czkawka-gui pacman -S mingw-w64-x86_64-czkawka-gui
``` ```
and you can create a shortcut to `C:\msys64\mingw64\bin\czkawka_gui.exe` and you can create a shortcut to `C:\msys64\mingw64\bin\czkawka_gui.exe`
## Compilation ## Compilation
Compiling the gui is harder than compiling cli or core, because it uses gtk4 which is written in C and also requires a lot build and runtime dependencies.
Compiling the gui is harder than compiling cli or core, because it uses gtk4 which is written in C and also requires a
lot build and runtime dependencies.
### Requirements ### Requirements
| Program | Minimal version |
|:---------:|:-----------------:| | Program | Minimal version |
| Rust | 1.74.0 | |:-------:|:---------------:|
| GTK | 4.6 | | Rust | 1.75.0 |
| GTK | 4.6 |
### Linux (Ubuntu, but on other OS should work similar) ### Linux (Ubuntu, but on other OS should work similar)
```shell ```shell
sudo apt install libgtk-4-dev libheif-dev libraw-dev -y sudo apt install libgtk-4-dev libheif-dev libraw-dev -y
cargo run --release --bin czkawka_gui cargo run --release --bin czkawka_gui
# Or with support for heif and libraw # Or with support for heif and libraw
cargo run --release --bin czkawka_gui --features "heif,libraw" cargo run --release --bin czkawka_gui --features "heif,libraw"
``` ```
### Mac ### Mac
```shell ```shell
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install rustup gtk4 adwaita-icon-theme ffmpeg librsvg libheif libraw pkg-config brew install rustup gtk4 adwaita-icon-theme ffmpeg librsvg libheif libraw pkg-config
@ -55,21 +77,33 @@ cargo run --release --bin czkawka_gui
# Or with support for heif and libraw # Or with support for heif and libraw
cargo run --release --bin czkawka_gui --features "heif,libraw" cargo run --release --bin czkawka_gui --features "heif,libraw"
``` ```
### Windows ### Windows
Currently, there is are no instructions on how to compile the app on Windows natively.</br> Currently, there is are no instructions on how to compile the app on Windows natively.</br>
You can check for CI for instructions how to cross-compile the app from linux to windows (uses prebuilt docker image) - [CI Instructions](../.github/workflows/windows.yml)</br> You can check for CI for instructions how to cross-compile the app from linux to windows (uses prebuilt docker
There exists a mingw recipe which you can try to convert for your purposes - https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-czkawka/PKGBUILD image) - [CI Instructions](../.github/workflows/windows.yml)</br>
There exists a mingw recipe which you can try to convert for your
purposes - https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-czkawka/PKGBUILD
## Limitations ## Limitations
Not all available features and/or components implemented here, this is the list of limitations: Not all available features and/or components implemented here, this is the list of limitations:
- Snap versions does not allow to use the similar videos feature - Snap versions does not allow to use the similar videos feature
- Windows version does not support heif and webp files with prebuilt binaries - Windows version does not support heif and webp files with prebuilt binaries
- Prebuilt binaries for mac arm do not exist - Prebuilt binaries for mac arm do not exist
- On Windows, text may appear very small on high resolution displays, a solution is to manually change DPI scaling for this app, see : - On Windows, text may appear very small on high resolution displays, a solution is to manually change DPI scaling for
- recommended fix: [#787#issuecomment-1292253437](https://github.com/qarmin/czkawka/issues/787#issuecomment-1292253437) (modify gtk.css), this app, see :
- or this workaround: [#867#issuecomment-1416761308](https://github.com/qarmin/czkawka/issues/863#issuecomment-1416761308) (modify windows DPI settings for this app (this works too but the text is a bit blurry)). - recommended
fix: [#787#issuecomment-1292253437](https://github.com/qarmin/czkawka/issues/787#issuecomment-1292253437) (modify
gtk.css),
- or this
workaround: [#867#issuecomment-1416761308](https://github.com/qarmin/czkawka/issues/863#issuecomment-1416761308) (
modify windows DPI settings for this app (this works too but the text is a bit blurry)).
## License ## License
Code is distributed under MIT license. Code is distributed under MIT license.
Icon was created by [jannuary](https://github.com/jannuary) and licensed CC-BY-4.0. Icon was created by [jannuary](https://github.com/jannuary) and licensed CC-BY-4.0.
@ -83,12 +117,16 @@ The program is completely free to use.
"Gratis to uczciwa cena" - "Free is a fair price" "Gratis to uczciwa cena" - "Free is a fair price"
## Name ## Name
Czkawka is a Polish word which means _hiccup_. Czkawka is a Polish word which means _hiccup_.
I chose this name because I wanted to hear people speaking other languages pronounce it, so feel free to spell it the way you want. I chose this name because I wanted to hear people speaking other languages pronounce it, so feel free to spell it the
way you want.
This name is not as bad as it seems, because I was also thinking about using words like _żółć_, _gżegżółka_ or _żołądź_, This name is not as bad as it seems, because I was also thinking about using words like _żółć_, _gżegżółka_ or _żołądź_,
but I gave up on these ideas because they contained Polish characters, which would cause difficulty in searching for the project. but I gave up on these ideas because they contained Polish characters, which would cause difficulty in searching for the
project.
At the beginning of the program creation, if the response concerning the name was unanimously negative, I prepared myself At the beginning of the program creation, if the response concerning the name was unanimously negative, I prepared
myself
for a possible change of the name of the program, and the opinions were extremely mixed. for a possible change of the name of the program, and the opinions were extremely mixed.

View file

@ -1,12 +1,13 @@
# Compiling Czkawka from sources # Compiling Czkawka from sources
This instruction is outdated and will be removed in one of next version, please look at README.md files in each module folder for more up to date instructions. This instruction is outdated and will be removed in one of next version, please look at README.md files in each module
folder for more up to date instructions.
- [Czkawka GUI (GTK frontend)](../czkawka_gui/README.md)</br> - [Czkawka GUI (GTK frontend)](../czkawka_gui/README.md)</br>
- [Czkawka CLI](../czkawka_cli/README.md)</br> - [Czkawka CLI](../czkawka_cli/README.md)</br>
- [Czkawka Core](../czkawka_core/README.md)</br> - [Czkawka Core](../czkawka_core/README.md)</br>
- [Krokiet GUI (Slint frontend)](../krokiet/README.md)</br> - [Krokiet GUI (Slint frontend)](../krokiet/README.md)</br>
## Requirements ## Requirements
If you only want the terminal version without a GUI, just skip all the packages with `gtk` in their names. If you only want the terminal version without a GUI, just skip all the packages with `gtk` in their names.
@ -19,7 +20,7 @@ New versions of GTK fixes some bugs, so e.g. middle button selection will work o
| Program | Min | What for | | Program | Min | What for |
|---------|--------|--------------------------------------------------------------------------------------| |---------|--------|--------------------------------------------------------------------------------------|
| Rust | 1.74.0 | The minimum version of rust does not depend on anything, so it can change frequently | | Rust | 1.75.0 | The minimum version of rust does not depend on anything, so it can change frequently |
| GTK | 4.6 | Only for the `GTK` backend | | GTK | 4.6 | Only for the `GTK` backend |
#### Debian / Ubuntu #### Debian / Ubuntu

View file

@ -3,7 +3,7 @@ name = "krokiet"
version = "7.0.0" version = "7.0.0"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"] authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2021" edition = "2021"
rust-version = "1.74.0" rust-version = "1.75.0"
description = "Slint frontend of Czkawka Core" description = "Slint frontend of Czkawka Core"
license = "GPL-3.0-only" license = "GPL-3.0-only"
homepage = "https://github.com/qarmin/czkawka" homepage = "https://github.com/qarmin/czkawka"

View file

@ -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. 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 ## 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. 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, Currently rustc have problems in optimizing code generated by slint(~90000 lines of code with version 7.0.0), so default
that should provide best experience. 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 +nightly build --release
```
The only exception is building skia renderer which is non default feature that can be enabled manually if you want to 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). use it, that require on windows msvc compiler(not sure how to exactly install it).
@ -109,13 +113,13 @@ SLINT_STYLE=material-dark cargo run -- --path .
There are multiple reasons why I decided to use Slint as toolkit for Krokiet over other toolkits. There are multiple reasons why I decided to use Slint as toolkit for Krokiet over other toolkits.
| Toolkit | Pros | Cons | | Toolkit | Pros | Cons |
|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Gtk 4 | - Good Linux support </br> - Cambalache can be used to create graphically gui </br> - Good gtk4-rs bindings(but sometimes not really intuitive) | - Hard compilation/cross compilation and bundling all required libraries - mostly on windows </br> - Forcing the use of a specific gui creation style </br> - Strange crashes, not working basic features, etc.(again, mostly on windows) </br> - Forcing to use bugged/outdated but dynamically loaded version of libraries on linux (e.g. 4.6 on Ubuntu 22.04) - not all fixes are backported | | Gtk 4 | - Good Linux support </br> - Cambalache can be used to create graphically gui </br> - Good gtk4-rs bindings(but sometimes not really intuitive) | - Hard compilation/cross compilation and bundling all required libraries - mostly on windows </br> - Forcing the use of a specific gui creation style </br> - Strange crashes, not working basic features, etc.(again, mostly on windows) </br> - Forcing to use bugged/outdated but dynamically loaded version of libraries on linux (e.g. 4.6 on Ubuntu 22.04) - not all fixes are backported |
| Qt | - QML support - simplify creating of gui from code it is easy to use and powerful </br> - Very flexible framework <br/> - Typescript/javascript <=> qml interoperability </br> - Probably the most mature GUI library | - New and limited qt bindings <br/> - Hard to cross-compile <br/> - Very easy to create and use invalid state in QML(unexpected null/undefined values, messed properties bindings etc.) <br/> - Commercial license or GPL | | Qt | - QML support - simplify creating of gui from code it is easy to use and powerful </br> - Very flexible framework <br/> - Typescript/javascript <=> qml interoperability </br> - Probably the most mature GUI library | - New and limited qt bindings <br/> - Hard to cross-compile <br/> - Very easy to create and use invalid state in QML(unexpected null/undefined values, messed properties bindings etc.) <br/> - Commercial license or GPL |
| Slint | - Internal language is compiled to native code <br/> - Live gui preview with Vscode/Vscodium without needing to use rust <br/> - Full rust solution - easy to compile/cross compile, minimal runtime requirements </br> - Static type checks in slint files | - Internal .slint language is more limited than QML <br/> - Out of bounds and similar errors are quietly being corrected instead printing error - this can lead to hard to debug problems <br/> - Only GPL is only available open-source license <br/> - Popup windows almost not exists <br/> - Internal widgets are almost not customizable and usually quite limited | | Slint | - Internal language is compiled to native code <br/> - Live gui preview with Vscode/Vscodium without needing to use rust <br/> - Full rust solution - easy to compile/cross compile, minimal runtime requirements </br> - Static type checks in slint files | - Internal .slint language is more limited than QML <br/> - Out of bounds and similar errors are quietly being corrected instead printing error - this can lead to hard to debug problems <br/> - Only GPL is only available open-source license <br/> - Popup windows almost not exists <br/> - Internal widgets are almost not customizable and usually quite limited </br> - Creating big/good looking with custom widgets gui is very hard |
| Iced | - ~100% rust code - so compilation is simple </br> - Elm architecture - simple to understand | - Mostly maintained by one person - slows down fixing bugs and implementing new features </br> - GUI can be created only from rust code, which really is bad for creating complex GUIs(mostly due rust compile times) </br> - Docs are almost non-existent | | Iced | - ~100% rust code - so compilation is simple </br> - Elm architecture - simple to understand | - Mostly maintained by one person - slows down fixing bugs and implementing new features </br> - GUI can be created only from rust code, which really is bad for creating complex GUIs(mostly due rust compile times) </br> - Docs are almost non-existent |
| Tauri | - Easy to create ui(at least for web developers) - uses html/css/js</br>- Quite portable | - Webview dependency - it is not really lightweight and can be hard to compile on some platforms and on Linux e.g. webRTC not working</br>- Cannot select directory - file chooser only can choose files - small thing but important for me</br>- Not very performant Rust <=> Javascript communication (less problematic with [Tauri 2](https://github.com/tauri-apps/tauri/pull/7170#issuecomment-1583279023) ) | | Tauri | - Easy to create ui(at least for web developers) - uses html/css/js</br>- Quite portable | - Webview dependency - it is not really lightweight and can be hard to compile on some platforms and on Linux e.g. webRTC not working</br>- Cannot select directory - file chooser only can choose files - small thing but important for me</br>- Not very performant Rust <=> Javascript communication (less problematic with [Tauri 2](https://github.com/tauri-apps/tauri/pull/7170#issuecomment-1583279023)) </br> - Uses Javascript/Typescript which is a lot of harder to update/maintain than rust due being less strict |
Since I don't have time to create really complex and good looking GUI, I needed a helper tool to create GUI not from Since I don't have time to create really complex and good looking GUI, I needed a helper tool to create GUI not from
Rust(I don't want to use different language, because this will make communication with czkawka_core harder) so I decided Rust(I don't want to use different language, because this will make communication with czkawka_core harder) so I decided
@ -126,7 +130,8 @@ Czkawka was a reason why I started to find other toolkits.
Tauri - I don't really like to use Javascript because I already used it with Qt(C++) + QML + Typescript combination and Tauri - I don't really like to use Javascript because I already used it with Qt(C++) + QML + Typescript combination and
I found that creating ui in such language may be simple at start but later any bigger changes cause a lot of runtime I found that creating ui in such language may be simple at start but later any bigger changes cause a lot of runtime
errors. errors. Despite these problems, my next project(closed source), will just use Tauri + slint, because actually in that
case it is rather the best option.
So only Slint left with its cons and pros. So only Slint left with its cons and pros.

View file

@ -198,7 +198,7 @@ pub fn connect_changing_settings_preset(app: &MainWindow) {
app.global::<Callabler>().on_changed_settings_preset(move || { app.global::<Callabler>().on_changed_settings_preset(move || {
let app = a.upgrade().unwrap(); let app = a.upgrade().unwrap();
let current_item = app.global::<Settings>().get_settings_preset_idx(); let current_item = app.global::<Settings>().get_settings_preset_idx();
let loaded_data = load_data_from_file::<SettingsCustom>(get_config_file(current_item + 1)); let loaded_data = load_data_from_file::<SettingsCustom>(get_config_file(current_item));
match loaded_data { match loaded_data {
Ok(loaded_data) => { Ok(loaded_data) => {
set_settings_to_gui(&app, &loaded_data); set_settings_to_gui(&app, &loaded_data);