diff --git a/Cargo.lock b/Cargo.lock index 43bb10c..e4a8ced 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", diff --git a/README.md b/README.md index 71080b9..c510cd4 100644 --- a/README.md +++ b/README.md @@ -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)
+- [Czkawka CLI](czkawka_cli/README.md)
+- [Czkawka Core](czkawka_core/README.md)
+- [Krokiet GUI (Slint frontend)](krokiet/README.md)
## 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. diff --git a/czkawka_cli/LICENSE b/czkawka_cli/LICENSE new file mode 100644 index 0000000..8836e46 --- /dev/null +++ b/czkawka_cli/LICENSE @@ -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. \ No newline at end of file diff --git a/czkawka_cli/README.md b/czkawka_cli/README.md new file mode 100644 index 0000000..17ffd71 --- /dev/null +++ b/czkawka_cli/README.md @@ -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 \ No newline at end of file diff --git a/czkawka_core/Cargo.toml b/czkawka_core/Cargo.toml index 6aefb4d..09cf537 100644 --- a/czkawka_core/Cargo.toml +++ b/czkawka_core/Cargo.toml @@ -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" diff --git a/czkawka_core/LICENSE b/czkawka_core/LICENSE new file mode 100644 index 0000000..8836e46 --- /dev/null +++ b/czkawka_core/LICENSE @@ -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. \ No newline at end of file diff --git a/czkawka_core/README.md b/czkawka_core/README.md new file mode 100644 index 0000000..6d39322 --- /dev/null +++ b/czkawka_core/README.md @@ -0,0 +1,3 @@ +# Czkawka Core + +Core of Czkawka GUI/CLI and Krokiet projects. diff --git a/czkawka_core/src/common.rs b/czkawka_core/src/common.rs index e4e8c80..cb00661 100644 --- a/czkawka_core/src/common.rs +++ b/czkawka_core/src/common.rs @@ -62,11 +62,20 @@ pub fn print_version_mode() { Ok(meta) => meta.semver.to_string(), Err(_) => "".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."); diff --git a/LICENSE b/czkawka_gui/LICENSE similarity index 100% rename from LICENSE rename to czkawka_gui/LICENSE diff --git a/czkawka_gui/README.md b/czkawka_gui/README.md index e69de29..d688732 100644 --- a/czkawka_gui/README.md +++ b/czkawka_gui/README.md @@ -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/
+Snap package - https://snapcraft.io/czkawka
+Flatpak package - https://flathub.org/apps/com.github.qarmin.czkawka
+ +## 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.
+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" \ No newline at end of file