From eb52abf967d0a592d0dc89c313f616a099d574de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mikrut?= Date: Wed, 22 Nov 2023 12:17:14 +0100 Subject: [PATCH] Changelog + mac output --- .github/workflows/mac.yml | 4 ++-- Changelog.md | 1 + krokiet/README.md | 40 +++++++++++++++++++++------------------ 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index a9b8861..e746fcc 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -51,7 +51,7 @@ jobs: - name: Store MacOS Krokiet uses: actions/upload-artifact@v3 with: - name: czkawka_gui-${{ runner.os }}-${{ matrix.toolchain }} + name: krokiet-${{ runner.os }}-${{ matrix.toolchain }} path: target/release/krokiet if: ${{ matrix.type == 'release' }} @@ -76,6 +76,6 @@ jobs: - name: Store MacOS Krokiet Heif uses: actions/upload-artifact@v3 with: - name: czkawka_gui-${{ runner.os }}-${{ matrix.toolchain }}-heif + name: krokiet-${{ runner.os }}-${{ matrix.toolchain }}-heif path: target/release/krokiet if: ${{ matrix.type == 'release' }} \ No newline at end of file diff --git a/Changelog.md b/Changelog.md index c8be051..f96e2b4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,7 @@ ## Version 7.0.0 - ? ### GTK GUI - Added drag&drop support for included/excluded folders - [#1106](https://github.com/qarmin/czkawka/pull/1106) +- Added information where is saved info about scan results - [#1102](https://github.com/qarmin/czkawka/pull/1102) ### CLI - Providing full static rust binary with [Eyra](https://github.com/sunfishcode/eyra) - [#1102](https://github.com/qarmin/czkawka/pull/1102) diff --git a/krokiet/README.md b/krokiet/README.md index a0899f7..f6e41cc 100644 --- a/krokiet/README.md +++ b/krokiet/README.md @@ -6,11 +6,11 @@ C code. Different toolkit means different look, limitations and features, so you should not expect same features like in Gtk 4 frontend(but of course I want implement most of features from other project). -## Requirements +## Usage -Krokiet should not have any special runtime requirements - it should work on almost any OpenGL ES 2 capable device. +Krokiet should not have any special runtime requirements - it should work on almost any device non-antic device. -Alternatively, it can be run with software rendering on computers that don't have graphics card. +Prebuild binaries should work on Windows 10,11, Mac ## Compilation @@ -23,10 +23,10 @@ sudo apt install libfontconfig-dev libfreetype-dev Default compilation is done by `cargo build --release` and should work on most systems. You need the latest available version of Rust to compile it, because Krokiet aims to support the latest slint verions, -that should provide best experience(fixed more bugs/new features). +that should provide best experience. -The only exception is building non default skia renderer, that require on windows msvc compiler(not sure how to exactly -install it). +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). Also skia renderer is written in C++ and uses on platforms like x86_64 and arm64 prebuild binaries, so if you are using different architecture, this library will be build from source, which can take a lot of time and require additional @@ -75,14 +75,15 @@ Slint: Build config: debug; Backend: software ## Different theme -App was created with fluent theme in mind, but is possible to use dark theme by setting `SLINT_STYLE` environment -variable to `fluent-dark` during compilation e.g. +App was created with dark fluent theme in mind, but is possible to use light theme by setting `SLINT_STYLE` environment +variable to `fluent-light` during compilation e.g. ``` SLINT_STYLE=fluent-light cargo run -- --path . ``` -Slint supports also other themes, but they are not officially supported by this app and may be broken. +Slint supports also other themes, but they are not officially supported by this app and may be broken(but looks that +cupertino looks quite good with current style). ``` SLINT_STYLE=cupertino-light cargo run -- --path . @@ -121,25 +122,27 @@ SLINT_STYLE=material-dark cargo run -- --path . - logo - about window - reference folders -- translations(problem is only with interface, messages like "Checking {x} file" can be easily translated from rust side) +- translations(problem is only with interface, messages like "Checking {x} file" can be easily translated from rust + side) ## Why Slint? There are multiple reasons why I decided to use Slint as toolkit for Krokiet over other toolkits. -| Toolkit | Pros | Cons | -|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Gtk 4 | - Hard compilation/cross compilation and bundling all required libraries - mostly on windows
- Cambalache can be used to create graphically gui
- Good gtk4-rs bindings(but sometimes not really intuitive) | - Hard compilation/cross compilation and bundling all required libraries - mostly on windows
- Forcing the use of a specific gui creation style
- Strange crashes, not working basic features, etc.(again, mostly on windows)
- 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
- Very flexible framework
- Typescript/javascript <=> qml interoperability
- Probably the most mature GUI library | - New and limited qt bindings
- Big cross compilation problems and hard to setup on non windows platforms
- Very easy to create and use invalid state in QML(unexpected null/undefined values etc.)
- Commercial license or GPL | -| Slint | - Internal language is compiled to native code
- Live gui preview with Vscode/Vscodium without needing to use rust
- Full rust solution - easy to compile/cross compile, minimal runtime requirements | - Internal .slint language is more limited than QML(javascript flexibility is big pl)
- Out of bounds and similar errors are quietly being corrected instead printing error - this can lead to hard to debug problems
- Commercial license or GPL(is available also different
- Popup windows almost not exists
- Internal widgets are almost not customizable and usually quite limited ) | -| Iced | - ~100% rust code - so compilation is simple
- Elm architecture - simple to understand | - Mostly maintained by one person - slows down fixing bugs and implementing new features
- GUI can be created only from rust code, which really is bad for creating complex GUIs(mostly due rust compile times) and this is also
- Docs are almost non-existent | -| Tauri | - Easy to create ui(at least for web developers) - uses html/css/js
- Quite portable | - Webview dependency - it is not really lightweight and can be hard to compile on some platforms
- Cannot select directory - file chooser only can choose files - small thing but important for me
- Not very performant Rust <=> Javascript communication | +| Toolkit | Pros | Cons | +|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Gtk 4 | - Hard compilation/cross compilation and bundling all required libraries - mostly on windows
- Cambalache can be used to create graphically gui
- Good gtk4-rs bindings(but sometimes not really intuitive) | - Hard compilation/cross compilation and bundling all required libraries - mostly on windows
- Forcing the use of a specific gui creation style
- Strange crashes, not working basic features, etc.(again, mostly on windows)
- 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
- Very flexible framework
- Typescript/javascript <=> qml interoperability
- Probably the most mature GUI library | - New and limited qt bindings
- Big cross compilation problems and hard to setup on non windows platforms
- Very easy to create and use invalid state in QML(unexpected null/undefined values etc.)
- Commercial license or GPL | +| Slint | - Internal language is compiled to native code
- Live gui preview with Vscode/Vscodium without needing to use rust
- Full rust solution - easy to compile/cross compile, minimal runtime requirements
- Static type checks in slint files | - Internal .slint language is more limited than QML(javascript flexibility is hard to )
- Out of bounds and similar errors are quietly being corrected instead printing error - this can lead to hard to debug problems
- Commercial license or GPL(is available also different
- Popup windows almost not exists
- Internal widgets are almost not customizable and usually quite limited) | +| Iced | - ~100% rust code - so compilation is simple
- Elm architecture - simple to understand | - Mostly maintained by one person - slows down fixing bugs and implementing new features
- GUI can be created only from rust code, which really is bad for creating complex GUIs(mostly due rust compile times)
- Docs are almost non-existent | +| Tauri | - Easy to create ui(at least for web developers) - uses html/css/js
- 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 have multiple limitaions in different os
- Cannot select directory - file chooser only can choose files - small thing but important for me
- Not very performant Rust <=> Javascript communication | 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 to not look at Iced which only allows to create GUI from Rust. -GTK and QT also I throw away due cross compilation problems caused mostly by using C/C++ internally. +GTK and QT also I throw away due cross compilation problems caused mostly by using C/C++ internally. Using GTK in +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 I found that creating ui in such language may be simple at start but later any bigger changes cause a lot of runtime @@ -148,6 +151,7 @@ errors. So only Slint left with its cons and pros. ## License + Code is licensed under MIT license but entire project is licensed under GPL-3.0 license, due Slint license restrictions. ## Name