1
0
Fork 0
mirror of synced 2024-05-19 03:43:00 +12:00

Fix grammar-related errors and Ponglish expressions. (#62)

* Fix grammar-related errors and Ponglish expressions.

* Integrate certain README.md fixes from VeryLongNicknameSuchWow's PR by request.
This commit is contained in:
kamilek96 2020-10-12 14:21:19 +00:00 committed by GitHub
parent 23f203a061
commit a4b0b12c30
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,52 +1,55 @@
# Czkawka # Czkawka
Czkawka is simple, fast and easy to use alternative to Fslint, written in Rust. Czkawka is a simple, fast and easy to use alternative to FSlint, written in Rust.
This is my first ever project in Rust so probably a lot of things are not being written in the most optimal way. This is my first ever project in Rust so many things might not be written in the most optimal way.
![Czkawka](https://user-images.githubusercontent.com/41945903/94850792-c200cc80-0427-11eb-99a7-23ab9cf39556.gif) ![Czkawka](https://user-images.githubusercontent.com/41945903/94850792-c200cc80-0427-11eb-99a7-23ab9cf39556.gif)
## Why? ## Why?
In internet exists a lot of tools to find duplicates, empty folders, temporary files etc. but in most cases there are only available on CLI, which is hard to use by users. There's a lot of tools for finding duplicates, empty folders, temporary files etc. on the Internet, but in most cases these are only available as CLI, which is hard to use by users.
GUI FSlint allows to really easy select different files and folders, but is based on old and unsupported Python 2 and GTK 2. GUI FSlint allows selecting different files and folders easily, but is based on old and unsupported Python 2 and GTK 2.
Other tools are mostly written in C/C++ to provide big performance but still needs to be tested a lot if not contains memory leaks, invalid memory reads/write and double frees. Other tools are usually written in C/C++ for high performance but still need to be tested a lot for memory leaks, invalid memory reads/writes and double frees.
But the most important thing for me was to learn Rust and create a program useful for the open source community. But the most important thing for me was to learn Rust and create a program useful for the open source community.
## Features ## Features
- Written in fast and memory safe Rust - Written in fast and memory safe Rust
- CLI frontend, very fast and powerful with rich help - CLI frontend, very fast and powerful with rich help
- GUI GTK frontend - use modern GTK 3 and looks similar to FSlint - GUI GTK frontend - uses modern GTK 3 and looks similar to FSlint
- Light/Dark theme match the appearance of the system - Light/Dark theme match the appearance of the system
- GUI Orbtk frontend(Very early WIP) - alternative GUI with reduced functionality - GUI Orbtk frontend(Very early WIP) - alternative GUI with reduced functionality
- Saving results to file - allows to easily read entries found by tool - Saving results to a file - allows reading entries found by the tool easily
- Rich search option - allows setting absolute included and excluded directories, set of allowed files extensions or excluded items with * wildcard - Rich search option - allows setting absolute included and excluded directories, set of allowed file extensions or excluded items with * wildcard
- Clean Glade file in which UI can be easily modernized - Clean Glade file in which UI can be easily modernized
- Multiple tools to use: - Multiple tools to use:
- Duplicates - Finds duplicates basing on its size(fast), hash(accurate), first 1MB of hash(moderate) - Duplicates - Finds duplicates basing on size(fast), hash(accurate), first 1MB of hash(moderate)
- Empty Folders - Finds empty folders with help of advanced algorithm - Empty Folders - Finds empty folders with the help of advanced algorithm
- Big Files - Finds provided number of the biggest files in given location - Big Files - Finds provided number of the biggest files in given location
- Empty Files - Looks for empty files across disk - Empty Files - Looks for empty files across disk
- Temporary Files - Allows finding temporary files - Temporary Files - Allows finding temporary files
## Usage and requirements ## Usage and requirements
### Requirements ### Requirements
For normal use of the program, the only requirements for is having GTK 3.22+. For normal use of the program, the only requirement is having GTK 3.22+.
For CLI, Orbtk on all OS and GTK GUI on Windows, there is no special requirements. For CLI, Orbtk on all OS and GTK GUI on Windows, there are no special requirements.
Precompiled binaries are here - https://github.com/qarmin/czkawka/releases/ Precompiled binaries are available here - https://github.com/qarmin/czkawka/releases/
You can also application with every single commit here - https://github.com/qarmin/czkawka/actions You can also download the application with different commits here - https://github.com/qarmin/czkawka/actions
If app not working when clicking at it, run it by terminal. If the app does not run when clicking at a launcher, run it through a terminal.
### Cargo ### Cargo
You can really fast install Czkawka from Cargo by typing `cargo install czkawka_gui` You can install Czkawka easily from Cargo by typing `cargo install czkawka_gui`
### Snap, Flatpak, Appimage ### Snap, Flatpak, Appimage
Still WIP, but looking for help Still WIP, but looking for help
### AUR - Arch Linux Package ### AUR - Arch Linux Package
Czkawka is also available in Arch Linux AUR from which it can be simple downloaded and installed on OS. Czkawka is also available in Arch Linux's AUR from which it can be easily downloaded and installed on the system.
```
yay -Syu czkawka-git
```
## Compilation ## Compilation
### Requirements ### Requirements
@ -54,7 +57,7 @@ Rust 1.46 - probably lower also works fine(1.40 is needed by GTK)
GTK 3.22 - for GTK backend GTK 3.22 - for GTK backend
For now only Linux(and maybe also macOS) is supported For now only Linux (and maybe also macOS) is supported
- Install requirements for GTK - Install requirements for GTK
``` ```
@ -62,7 +65,7 @@ apt install -y libgtk-3-dev
``` ```
### Compilation from source ### Compilation from source
- Download source - Download the source
``` ```
git clone https://github.com/qarmin/czkawka.git git clone https://github.com/qarmin/czkawka.git
cd czkawka cd czkawka
@ -71,9 +74,9 @@ cd czkawka
``` ```
cargo run --bin czkawka_gui cargo run --bin czkawka_gui
``` ```
For Linux to Windows cross-building instruction look at the CI. For Linux-to-Windows cross-building instruction look at the CI.
![GUI GTK](https://user-images.githubusercontent.com/41945903/94850801-c5945380-0427-11eb-8d4c-af4946ab02d5.png) ![GUI GTK](https://user-images.githubusercontent.com/41945903/94850801-c5945380-0427-11eb-8d4c-af4946ab02d5.png)
- Run alternative Orbtk GUI(Still WIP, currently stopped due https://github.com/intellij-rust/intellij-rust/issues/5943) - Run alternative Orbtk GUI (Still WIP, currently stopped due https://github.com/intellij-rust/intellij-rust/issues/5943)
``` ```
cargo run --bin czkawka_gui_orbtk cargo run --bin czkawka_gui_orbtk
@ -86,30 +89,30 @@ cargo run --bin czkawka_cli
![CLI](https://user-images.githubusercontent.com/41945903/93716816-0bbcfd80-fb72-11ea-8d31-4c87cc2abe6d.png) ![CLI](https://user-images.githubusercontent.com/41945903/93716816-0bbcfd80-fb72-11ea-8d31-4c87cc2abe6d.png)
## Speed ## Speed
Since Czkawka is written in Rust and aims to be a faster alternative for written in Python - FSlint we need to compare speed of this two tools. Since Czkawka is written in Rust and aims to be a faster alternative to FSlint (written in Python), we need to compare the speed of these two tools.
I checked prepared before directory, without any folder exceptions(I removed all directories from FSlint and Czkawka from other tabs than Include Directory) which contained 176 056 files and 22194 folders and 88436 duplicated files in 52330 groups which took 6,2 GB. I prepared a directory and performed a test without any folder exceptions(I removed all directories from FSlint and Czkawka from other tabs than Include Directory) which contained 176 056 files and 22194 folders and 88436 duplicated files in 52330 groups worth 6,2 GB.
First run reads file entry and save it to cache so this step is mostly limited by disk performance, and with second run cache helps it so searching is sometimes faster(with a small amount of duplicates is even 10x faster). The first run reads every file entry and saves it to cache, so this step is limited mostly by disk performance. In the second run the cache helps it, so searching is sometimes faster (with few duplicates even 10x faster).
Duplicate Checker(Version 0.1.4) Duplicate Checker(Version 0.1.4)
| App| Executing Time | | App| Executing Time |
|:----------:|:-------------:| |:----------:|:-------------:|
| Fslint (First Run)| 284s | | FSlint (First Run)| 284s |
| Fslint (Second Run)| 247s | | FSlint (Second Run)| 247s |
| Czkawka GUI Release(First Run) | 118s | | Czkawka GUI Release(First Run) | 118s |
| Czkawka GUI Release(Second Run) | 120s | | Czkawka GUI Release(Second Run) | 120s |
For Fslint I used Mprof and for Czkawka Heaptrack I used Mprof for FSlint and Heaptrack for Czkawka
| App| Idle Ram | Max Operational Ram Usage | Stabilized after search usage | | App| Idle Ram | Max Operational Ram Usage | Stabilized after search usage |
|:----------:|:-------------:|:-------------:|:-------------:| |:----------:|:-------------:|:-------------:|:-------------:|
| Fslint | 55 MB | 160 MB | 150 MB | | FSlint | 55 MB | 160 MB | 150 MB |
| Czkawka GTK GUI Release | 8 MB | 76 MB | 75 MB | | Czkawka GTK GUI Release | 8 MB | 76 MB | 75 MB |
Differences should be more visible when using slower processor or faster disk. Differences should be more visible when using slower CPU or faster disk.
## Comparsion with FSLint ## Comparsion with FSLint
@ -138,20 +141,20 @@ Contributions to this repository are welcome.
You can help by creating: You can help by creating:
- Bug report - memory leaks, unexpected behavior, crashes - Bug report - 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 by yourself a new feature or fixing bugs, but also important is code quality. If change is bigger, then is good to open new issue to discuss changes. - Pull Requests - implementing a new feature yourself or fixing bugs, but you have to pay attention to code quality. If the change is bigger, then it's a good idea to open a new issue to discuss changes.
Code should be clean and pretty formatted (Clippy and fmt are required in each PR). The code should be clean and well formatted (Clippy and fmt are required in each PR).
Code should also be easy to read so please use as much simplest language as possible without magic numbers and variables with strange names, and try to write unit tests/tests if possible. The code should also be easy to read, so please use the simplest language possible without any magic numbers and variables with strange names. You should also try to write unit tests if possible.
## 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. I chose this name because I wanted to hear people speaking other languages pronounce it.
This name is not as bad as it seems, because I was also thinking about using words like żółć, gżegżółka czy żołądź, but I gave up these ideas because of having Polish characters, which would be a huge difficulty in searching for a project. 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.
## License ## License
Code is distributed under MIT license. Code is distributed under MIT license.
Program is completely free to use. Program is completely free to use.
"Gratis to uczciwa cena" - "Free is a fair price" "Gratis to uczciwa cena" - "Free is a fair price"