pull/1102/head
Rafał Mikrut 7 months ago
parent d4dfd28790
commit b70ab684cd

117
Cargo.lock generated

@ -246,15 +246,15 @@ dependencies = [
[[package]]
name = "async-executor"
version = "1.6.0"
version = "1.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0"
checksum = "fc5ea910c42e5ab19012bab31f53cb4d63d54c3a27730f9a833a88efcf4bb52d"
dependencies = [
"async-lock 2.8.0",
"async-lock 3.1.1",
"async-task",
"concurrent-queue",
"fastrand 2.0.1",
"futures-lite 1.13.0",
"futures-lite 2.0.1",
"slab",
]
@ -272,16 +272,16 @@ dependencies = [
[[package]]
name = "async-global-executor"
version = "2.3.1"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776"
checksum = "9b4353121d5644cdf2beb5726ab752e79a8db1ebb52031770ec47db31d245526"
dependencies = [
"async-channel 1.9.0",
"async-channel 2.1.0",
"async-executor",
"async-io 1.13.0",
"async-lock 2.8.0",
"async-io 2.2.0",
"async-lock 3.1.1",
"blocking",
"futures-lite 1.13.0",
"futures-lite 2.0.1",
"once_cell",
]
@ -311,14 +311,14 @@ version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41ed9d5715c2d329bf1b4da8d60455b99b187f27ba726df2883799af9af60997"
dependencies = [
"async-lock 3.1.0",
"async-lock 3.1.1",
"cfg-if",
"concurrent-queue",
"futures-io",
"futures-lite 2.0.1",
"parking",
"polling 3.3.0",
"rustix 0.38.24",
"rustix 0.38.25",
"slab",
"tracing",
"waker-fn",
@ -336,9 +336,9 @@ dependencies = [
[[package]]
name = "async-lock"
version = "3.1.0"
version = "3.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "deb2ab2aa8a746e221ab826c73f48bc6ba41be6763f0855cb249eb6d154cf1d7"
checksum = "655b9c7fe787d3b25cc0f804a1a8401790f0c5bc395beb5a64dc77d8de079105"
dependencies = [
"event-listener 3.1.0",
"event-listener-strategy",
@ -358,7 +358,7 @@ dependencies = [
"cfg-if",
"event-listener 3.1.0",
"futures-lite 1.13.0",
"rustix 0.38.24",
"rustix 0.38.25",
"windows-sys 0.48.0",
]
@ -385,7 +385,7 @@ dependencies = [
"cfg-if",
"futures-core",
"futures-io",
"rustix 0.38.24",
"rustix 0.38.25",
"signal-hook-registry",
"slab",
"windows-sys 0.48.0",
@ -611,7 +611,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
dependencies = [
"async-channel 2.1.0",
"async-lock 3.1.0",
"async-lock 3.1.1",
"async-task",
"fastrand 2.0.1",
"futures-io",
@ -734,7 +734,7 @@ dependencies = [
"bitflags 2.4.1",
"log",
"polling 3.3.0",
"rustix 0.38.24",
"rustix 0.38.25",
"slab",
"thiserror",
]
@ -746,7 +746,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
dependencies = [
"calloop 0.12.3",
"rustix 0.38.24",
"rustix 0.38.25",
"wayland-backend",
"wayland-client",
]
@ -1301,6 +1301,7 @@ dependencies = [
"log",
"mime_guess",
"once_cell",
"os_info",
"pdf",
"rawloader",
"rayon",
@ -1981,9 +1982,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
[[package]]
name = "form_urlencoded"
version = "1.2.0"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
dependencies = [
"percent-encoding",
]
@ -2076,7 +2077,11 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3831c2651acb5177cbd83943f3d9c8912c5ad03c76afcc0e9511ba568ec5ebb"
dependencies = [
"fastrand 2.0.1",
"futures-core",
"futures-io",
"memchr",
"parking",
"pin-project-lite",
]
@ -3023,9 +3028,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "idna"
version = "0.4.0"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
dependencies = [
"unicode-bidi",
"unicode-normalization",
@ -3598,9 +3603,9 @@ checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670"
[[package]]
name = "lyon_algorithms"
version = "1.0.3"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00a0349cd8f0270781bb93a824b63df6178e3b4a27794e7be3ce3763f5a44d6e"
checksum = "a3bca95f9a4955b3e4a821fbbcd5edfbd9be2a9a50bb5758173e5358bfb4c623"
dependencies = [
"lyon_path",
"num-traits",
@ -4010,9 +4015,9 @@ dependencies = [
[[package]]
name = "open"
version = "5.0.0"
version = "5.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cfabf1927dce4d6fdf563d63328a0a506101ced3ec780ca2135747336c98cef8"
checksum = "90878fb664448b54c4e592455ad02831e23a3f7e157374a8b95654731aac7349"
dependencies = [
"is-wsl",
"libc",
@ -4038,6 +4043,16 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "os_info"
version = "3.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e"
dependencies = [
"log",
"winapi",
]
[[package]]
name = "overload"
version = "0.1.1"
@ -4188,9 +4203,9 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
[[package]]
name = "percent-encoding"
version = "2.3.0"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pico-args"
@ -4291,7 +4306,7 @@ dependencies = [
"cfg-if",
"concurrent-queue",
"pin-project-lite",
"rustix 0.38.24",
"rustix 0.38.25",
"tracing",
"windows-sys 0.48.0",
]
@ -4794,9 +4809,9 @@ dependencies = [
[[package]]
name = "rustix"
version = "0.38.24"
version = "0.38.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ad981d6c340a49cdc40a1028d9c6084ec7e9fa33fcb839cab656a267071e234"
checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e"
dependencies = [
"bitflags 2.4.1",
"errno",
@ -4944,18 +4959,18 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
[[package]]
name = "serde"
version = "1.0.192"
version = "1.0.193"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001"
checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.192"
version = "1.0.193"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1"
checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
dependencies = [
"proc-macro2",
"quote",
@ -5181,7 +5196,7 @@ dependencies = [
"libc",
"log",
"memmap2 0.9.0",
"rustix 0.38.24",
"rustix 0.38.25",
"thiserror",
"wayland-backend",
"wayland-client",
@ -5264,7 +5279,7 @@ dependencies = [
"objc",
"raw-window-handle 0.5.2",
"redox_syscall 0.4.1",
"rustix 0.38.24",
"rustix 0.38.25",
"tiny-xlib",
"wasm-bindgen",
"wayland-backend",
@ -5628,7 +5643,7 @@ dependencies = [
"cfg-if",
"fastrand 2.0.1",
"redox_syscall 0.4.1",
"rustix 0.38.24",
"rustix 0.38.25",
"windows-sys 0.48.0",
]
@ -5784,9 +5799,9 @@ dependencies = [
[[package]]
name = "tinystr"
version = "0.7.4"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5d0e245e80bdc9b4e5356fc45a72184abbc3861992603f515270e9340f5a219"
checksum = "83c02bf3c538ab32ba913408224323915f4ef9a6d61c0e85d493f355921c0ece"
dependencies = [
"displaydoc",
]
@ -6132,9 +6147,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "ureq"
version = "2.8.0"
version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3"
checksum = "7830e33f6e25723d41a63f77e434159dad02919f18f55a512b5f16f3b1d77138"
dependencies = [
"base64",
"flate2",
@ -6148,9 +6163,9 @@ dependencies = [
[[package]]
name = "url"
version = "2.4.1"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
dependencies = [
"form_urlencoded",
"idna",
@ -6233,9 +6248,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
name = "uuid"
version = "1.5.0"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc"
checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
[[package]]
name = "valuable"
@ -6557,9 +6572,9 @@ dependencies = [
[[package]]
name = "webpki-roots"
version = "0.25.2"
version = "0.25.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc"
checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
[[package]]
name = "weezl"
@ -6576,7 +6591,7 @@ dependencies = [
"either",
"home",
"once_cell",
"rustix 0.38.24",
"rustix 0.38.25",
]
[[package]]
@ -6807,7 +6822,7 @@ dependencies = [
"percent-encoding",
"raw-window-handle 0.5.2",
"redox_syscall 0.3.5",
"rustix 0.38.24",
"rustix 0.38.25",
"sctk-adwaita",
"smithay-client-toolkit",
"smol_str",

@ -27,24 +27,12 @@
![Czkawka](https://user-images.githubusercontent.com/41945903/145280350-506f7e94-4db0-4de7-a68d-6e7c26bbd2bf.gif)
## Supported OS
Linux - Ubuntu 22.04+, Fedora 36+, Alpine Linux 3.16+, Debian 12+ and a lot of more
Windows - 7, 8.1, 10, 11
MacOS - 10.15+
If you are looking for older version that use GTK 3 and have support for more OS(like e.g. Ubuntu 20.04), look at [4.1.0](https://github.com/qarmin/czkawka/releases/tag/4.1.0) or older versions.
## How do I use it?
You can find the instructions on how to use Czkawka [**here**](instructions/Instruction.md).
Some helpful tricks you can find [**here**](instructions/Instruction.md#tips-tricks-and-known-bugs)
## Installation
Installation instructions with download links you can find [**here**](instructions/Installation.md).
## Compilation
If you want to try and develop Czkawka or just use the latest available feature, you may want to look at the [**compilation instructions**](instructions/Compilation.md).
## 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)</br>
- [Czkawka CLI](czkawka_cli/README.md)</br>
- [Czkawka Core](czkawka_core/README.md)</br>
- [Krokiet GUI (Slint frontend)](krokiet/README.md)</br>
## Benchmarks
@ -167,19 +155,6 @@ but I gave up on these ideas because they contained Polish characters, which wou
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.
## License
Code is distributed under MIT license.
Icon was created by [jannuary](https://github.com/jannuary) and licensed CC-BY-4.0.
Windows dark theme is used from project [WhiteSur](https://github.com/slypy/whitesur-gtk4-theme) with MIT license.
Some icons were taken from [ReShot](https://www.reshot.com) site and are licensed under Reshot Free License.
The program is completely free to use.
"Gratis to uczciwa cena" - "Free is a fair price"
## Thanks
Big thanks to Pádraig Brady, creator of fantastic FSlint, because without his work I wouldn't create this tool.

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020-2023 Rafał Mikrut
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -0,0 +1,41 @@
# Czkawka CLI
CLI frontend, allows to use Czkawka from terminal.
## Requirements
Precompiled binaries should work without any additional dependencies with Linux(Ubuntu 20.04+), Windows(10+) and macOS(10.15+).
If you decide to compile the app, you probably will be able to run it on even older versions of OS, like Ubuntu 16.04 or Windows 7.
On linux it is even possible with eyra to avoid entirely libc and using fully static rust binary.
If you want to use similar videos tool, you need to install ffmpeg(optional feature, only needed when running).
- mac - `brew install ffmpeg` - https://formulae.brew.sh/formula/ffmpeg
- linux - `sudo apt install ffmpeg`
- windows - `choco install ffmpeg` - or if not working, download from https://ffmpeg.org/download.html#build-windows and unpack to location with `czkawka_cli.exe`
## Compilation
For compilation, you need to have installed Rust via rustup - https://rustup.rs/ and compile it e.g. via
```shell
cargo run --release --bin czkawka_cli
```
on linux to build fully static binary you need to use
```shell
rustup default nightly-2023-11-16 # or any newer nightly that works fine with eyra
cd czkawka_cli
cargo add eyra --rename=std
echo 'fn main() { println!("cargo:rustc-link-arg=-nostartfiles"); }' > build.rs
cd ..
cargo build --release --bin czkawka_cli
```
## Limitations
Not all available features in core are available in CLI.
List of not available features:
- Ability to use/choose referenced directories
- See progress of scanning
## LICENSE
MIT

@ -74,6 +74,7 @@ anyhow = { version = "1.0" }
state = "0.6"
os_info = { version = "3", default-features = false }
rustc_version = "0.4"
log = "0.4.20"
handsome_logger = "0.8"

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020-2023 Rafał Mikrut
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

@ -0,0 +1,3 @@
# Czkawka Core
Core of Czkawka GUI/CLI and Krokiet projects.

@ -62,11 +62,20 @@ pub fn print_version_mode() {
Ok(meta) => meta.semver.to_string(),
Err(_) => "<unknown>".to_string(),
};
let info = os_info::get();
let debug_release = if cfg!(debug_assertions) { "debug" } else { "release" };
let processors = match thread::available_parallelism() {
Ok(t) => t.get(),
Err(_) => 1,
};
info!(
"App version: {}, compiled with {} mode on rustc {rust_version}",
CZKAWKA_VERSION,
if cfg!(debug_assertions) { "debug" } else { "release" },
"App version: {CZKAWKA_VERSION}, {debug_release} mode, rust {rust_version}, os {} {} [{} {}], {processors} cpu/threads",
info.os_type(),
info.version(),
std::env::consts::ARCH,
info.bitness(),
);
if cfg!(debug_assertions) {
warn!("You are running debug version of app which is a lot of slower than release version.");

@ -0,0 +1,68 @@
# Czkawka GUI
Czkawka GUI is a graphical user interface for Czkawka Core written with GTK 4.
## Requirements
Requirements depends on platform that you are using:
### Linux
#### Prebuild binaries
Ubuntu - `sudo apt install libgtk-4 libheif ffmpeg -y`
#### Snap -
none - all needed libraries are bundled in snap - except ffmpeg https://github.com/snapcrafters/ffmpeg/issues/73
#### Flatpak
none - all needed libraries are bundled
### Mac
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install gtk4 adwaita-icon-theme ffmpeg librsvg libheif
```
### 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)
| Program | Minimal version |
|:---------:|:-----------------:|
| Rust | 1.72.1 |
| GTK | 4.6 |
Prebuild binaries - https://github.com/qarmin/czkawka/releases/ </br>
Snap package - https://snapcraft.io/czkawka </br>
Flatpak package - https://flathub.org/apps/com.github.qarmin.czkawka </br>
## Compilation
Compilation of gui is harder that compilation cli or core, because uses gtk4 which is written in C and also requires a lot build and runtime dependencies.
### Linux (Ubuntu, but on other OS should work similar)
```shell
sudo apt install libgtk-4-dev libheif-dev -y
cargo run --release --bin czkawka_gui
```
### Mac
```shell
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install rustup gtk4 adwaita-icon-theme ffmpeg librsvg libheif pkg-config
rustup-init
cargo run --release --bin czkawka_gui
```
### Windows
Currently, it is not possible to compile app natively on Windows, but is possible to cross-compile it from Linux.</br>
You can check for CI for instructions how to cross-compile app(uses prebuilt docker image) - [CI Instructions](../.github/workflows/windows.yml)
## Limitations
Not all available features in core are available in GUI and also there are limitations between platforms:
- Snap versions not allows to use similar videos feature
- Windows version not supports heif and webp files
- Prebuild binaries for mac arm not exists
## License
Code is distributed under MIT license.
Icon was created by [jannuary](https://github.com/jannuary) and licensed CC-BY-4.0.
Windows dark theme is used from project [WhiteSur](https://github.com/slypy/whitesur-gtk4-theme) with MIT license.
Some icons were taken from [ReShot](https://www.reshot.com) site and are licensed under Reshot Free License.
The program is completely free to use.
"Gratis to uczciwa cena" - "Free is a fair price"
Loading…
Cancel
Save