2
0
mirror of https://github.com/qarmin/czkawka synced 2024-11-04 12:00:29 +00:00
Commit Graph

445 Commits

Author SHA1 Message Date
Thomas Andreas Jung
e3457edab2
Use one implementation for all hash calculations (#268)
All implementations are the same they only differ by hasher and the file read
limit.
2021-02-22 10:52:21 +01:00
Thomas Andreas Jung
0f12897687
Support the hash type parameter in the CLI (#267)
https://github.com/qarmin/czkawka/issues/266
2021-02-21 05:59:07 +01:00
Thomas Andreas Jung
1e94587de8
Ignore duplicates if those are hard links (#234)
This is a proof of concept.

```
$ echo a > hardlinks/a
$ cp hardlinks/{a,b}
$ ln hardlinks/{a,c}
$ cargo run --bin czkawka_cli dup -m 1 --directories $(pwd)/hardlinks -f /dev/stderr > /dev/null
-------------------------------------------------Files with same hashes-------------------------------------------------
Found 1 duplicated files which in 1 groups which takes 2 B.

---- Size 2 B (2) - 2 files
/home/thomas/Development/czkawka/hardlinks/a
/home/thomas/Development/czkawka/hardlinks/b
```

Open:
- Windows support
- Probably this should be a cli option
2021-02-20 12:28:06 +01:00
krzysdz
4c205ce098
Windows taskbar progress support (#264)
* Initial Windows taskbar progress support

* Changes to COM (un)init

It turns out winapi exposes IIDs through a `uuidof()` function of interfaces, so the copied one can be removed.

* Don't return error codes

Now the `TaskbarProgress` functions fail silently.
The `TaskbarProgress` struct now will always be created (even in case of errors in initialisation), but it won't do anything.

* Fix builds for other systems

* Formatted code

* Fix progress shown after the operation finished

A progress update was received after the stop event.
Also `as_ref()` was removed in many places (I don't even know why it was there).

* Remove redundant call to hide

It's already called by the `glib_stop_receiver` receiver.

* Release the ITaskbarList3 and call CoUninitialize at exit

Because objects moved to closures used as fallbacks in GTK have [static lifetimes](https://gtk-rs.org/docs-src/tutorial/closures#closures), the `TaskbarProgress` will never be dropped.
To workaround this problem a `release` function is called when the main window is closed. This function behaves like `drop`, but sets the struct in a valid "empty" state, so that calling `release`/`drop` again won't cause problems.

* Don't set the NORMAL state manually

Because only NOPROGRESS and INDETERMINATE states are used, there is no need to set the NORMAL state when changing the progress value.

Now `set_progress_value` will also change the `TaskbarProgress::current_state` if such situation occurs.

> Unless [SetProgressState](https://docs.microsoft.com/en-us/windows/desktop/api/shobjidl_core/nf-shobjidl_core-itaskbarlist3-setprogressstate)
> has set a blocking state (TBPF_ERROR or TBPF_PAUSED) for the window, a call to **SetProgressValue** assumes the TBPF_NORMAL
> state even if it is not explicitly set. A call to **SetProgressValue** overrides and clears the TBPF_INDETERMINATE state.

See the [SetProgressValue documentation](https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-itaskbarlist3-setprogressvalue#how-the-taskbar-button-chooses-the-progress-indicator-for-a-group)
2021-02-20 12:24:36 +01:00
Dan Dascalescu
db255a87d4
Improve English (#260) 2021-02-20 09:57:11 +01:00
Dan Dascalescu
c035514a0e
Improve English for "Ask in future" button (#261) 2021-02-20 09:56:23 +01:00
krzysdz
2e7c5c2dcb
Fix Winows theme in CI (#265)
The admin-gtk3-dark-osx theme contains relative symlinks, which after copying only this theme are no longer valid.
The -L (--dereference) option makes cp always follow symbolic links, so that all of them are replaced with files they pointed to.
2021-02-20 09:55:36 +01:00
endolith
3ad1dfacbe
README: Fix a typo (#255) 2021-02-11 19:04:39 +01:00
Thomas Andreas Jung
03d41e173f
Keep original file if replacing duplicate with hardlink fails (#253)
If the user could not create a hard link (due to permissions or
different block devices) then czkawka lost the duplicate file.

```
$ mkdir hardlink
$ cd hardlink
$ echo a > a
$ cp a b
$ chown thetestuser:thetestuser a
$ ls -il .

25169246 -rw-rw-r-- 1 thetestuser thetestuser 2 Feb  7 11:18 a
25169641 -rw-rw-r-- 1 thomas      thomas      2 Feb  7 11:18 b

$ cargo run --bin czkawka_cli dup --directories $(pwd) -m 1 -f
test101.result --delete-method HARD

[...]
-------------------------------WARNINGS--------------------------------
Failed to link /home/thomas/Development/czkawka/hardlink/b ->
/home/thomas/Development/czkawka/hardlink/a
---------------------------END OF WARNINGS-----------------------------

$ ls -il .
25169246 -rw-rw-r-- 1 thetestuser thetestuser 2 Feb  7 11:18 a
```

Now czkawka keeps all files and the warning provides more information
why czkawka can't replace the duplicate with a hard link.

```
$ cargo run --bin czkawka_cli dup --directories $(pwd) -m 1 -f
test101.result --delete-method HARD

-------------------------------WARNINGS--------------------------------
Failed to link /home/thomas/Development/czkawka/hardlink/b ->
/home/thomas/Development/czkawka/hardlink/a (Operation not permitted (os
error 1))
---------------------------END OF WARNINGS-----------------------------
[...]

25169246 -rw-rw-r-- 1 thetestuser thetestuser 2 Feb  7 11:18 a
25169641 -rw-rw-r-- 1 thomas      thomas      2 Feb  7 11:18 b
```
2021-02-11 19:04:23 +01:00
Rafał Mikrut
10156ccfd3 Uncomment code about saving similar images result to file 2021-02-09 17:29:49 +01:00
Rafał Mikrut
df44f9c342
Update list of checked images (#252) 2021-02-06 14:24:15 +01:00
Rafał Mikrut
9bb574235a
Add checking for broken music opt-in (#249) 2021-02-05 19:07:20 +01:00
Thomas Andreas Jung
3ffa55b008
Add delete method to replace duplicate files with hard links (#236)
This results in the same space saving but keeps the "deleted" files around.

$ mkdir hardlink
$ cd hardlink
$ echo a > a
$ cp a b
$ ln a c
$ touch -t 01010000 a
$ ls -il --time-style=full-iso .
25169323 -rw-rw-r-- 2 thomas thomas 2 2021-01-01 00:00:00.000000000 +0100 a
25169558 -rw-rw-r-- 1 thomas thomas 2 2021-01-31 18:11:08.298161098 +0100 b
25169323 -rw-rw-r-- 2 thomas thomas 2 2021-01-01 00:00:00.000000000 +0100 c

$ czkawka_cli dup --directories $(pwd)/hardlink -m 1 -f hardlink.result --delete-method HARD

$ ls --time-style=full-iso -li hardlink
25169323 -rw-rw-r-- 3 thomas thomas 2 2021-01-01 00:00:00.000000000 +0100 a
25169323 -rw-rw-r-- 3 thomas thomas 2 2021-01-01 00:00:00.000000000 +0100 b
25169323 -rw-rw-r-- 3 thomas thomas 2 2021-01-01 00:00:00.000000000 +0100 c
2021-02-05 17:59:34 +01:00
Sbgodin
f490a1169c
Typos corrected in README.md (#248) 2021-02-05 17:00:24 +01:00
Rafał Mikrut
ea474c2af0 Fix typo in window progress 2021-02-03 20:23:28 +01:00
Rafał Mikrut
9f3da0e70f
Add support for CRC32 and XXH3 hash (#243) 2021-02-03 19:59:06 +01:00
Rafał Mikrut
7d8334bb0c
Add template for multiple hashes (#240) 2021-02-03 18:11:04 +01:00
Alexis Lefebvre
2f09b6ce8f
README: Allow Snap to access to external drives (#218) 2021-02-03 16:04:36 +01:00
Rafał Mikrut
8dcb718843 Restore snap confinement 2021-02-03 16:03:52 +01:00
Rafał Mikrut
2c2004b316
Change progress dialog to progress window (#229) 2021-01-25 18:23:42 +01:00
Rafał Mikrut
b8049efe62
Remove checking for ico in similar images (#227) 2021-01-25 11:32:10 +01:00
Rafał Mikrut
49ddc041ee
Add about dialog (#226) 2021-01-24 12:01:02 +01:00
Rafał Mikrut
052590d246 Update README and app metadata 2021-01-23 20:22:05 +01:00
Mek101
c46df07b11
Added the packages required to build the cli version on void linux to the README (#225)
Added the packages required to build the cli version on void linux to the README
2021-01-23 20:21:13 +01:00
Rafał Mikrut
bb7bf12354 Release 2.3.2 2021-01-21 20:52:43 +01:00
Rafał Mikrut
42af724681
Add support for moving selection by keyboard to update similar image preview (#223) 2021-01-21 07:24:28 +01:00
Rafał Mikrut
69090755df Release 2.3.1 2021-01-20 15:41:44 +01:00
Proprietary Chrome-chan
a5d37eba4e
Add Flatpak support (#203)
* Make a flatpak manifest, the permissions are not set properly.

* Move to separate flatpak dir

* Rewrite in yaml

* Update sources

* Update flatpak to 2.3.0

* Remove PulseAudio support

* Add metainfo file

* Use the right files

* Update metadata file

* Polish manifest and improve metadata

* Improve metadata

* Switch to metainfo

* Fix version number

Co-authored-by: Lionir <git@thelion.website>
2021-01-20 14:14:53 +01:00
bellrise
5751d8a723
Spicing up the markdown files (#222)
* Spicing up the README

- Making it more readable
- Better English, easier to read
- Hiding links
- Fixing the absolute hideous tables which were impossible to read in the raw readme

* Fixed some things, not a lot though.
2021-01-20 11:16:56 +01:00
Alexis Lefebvre
7fdc8ea3fc
README: Fix typo "dotation" to "donation" (#219) 2021-01-20 11:06:00 +01:00
Rafał Mikrut
13fbd9f7c6 Remove snap plugs 2021-01-16 16:59:24 +01:00
Rafał Mikrut
6bdd0cce7c Use snap classic confinement.
Czkawka needs to have access to all available for user data, but snap prevents from it when using sandbox.
2021-01-16 16:33:27 +01:00
Rafał Mikrut
e8942609ff Use Gnome 3.28 instead 3.34 in snap build 2021-01-15 19:40:10 +01:00
Rafał Mikrut
ea63f3e35d Fix snapcraft build 2021-01-15 17:35:53 +01:00
Rafał Mikrut
943f8f78f1 Release 2.3.0 2021-01-15 16:49:13 +01:00
Rafał Mikrut
e1beaeed28
Decrease ram usage (#212) 2021-01-15 12:41:45 +01:00
Rafał Mikrut
390a570833 Update GIF in README 2021-01-15 11:07:22 +01:00
Rafał Mikrut
cc8d42e0ff
Add support for finding broken zip and audio files (#210) 2021-01-15 11:04:52 +01:00
Rafał Mikrut
0c10a6a0ba
Sort Results by path where it is possible (#211) 2021-01-15 10:43:23 +01:00
Rafał Mikrut
56763846ac
Add missing popover info for invalid symlinks (#209) 2021-01-14 20:38:29 +01:00
Rafał Mikrut
6cb92871ff
Use the oldest available OS in Linux and Mac CI and the newest on Windows (#206) 2021-01-14 13:26:43 +01:00
Rafał Mikrut
7ec665ab7a
Add cache for duplicate (#205) 2021-01-14 12:17:15 +01:00
Rafał Mikrut
6e89bcb507
Add cache for broken files (#204) 2021-01-13 16:03:05 +01:00
Rafał Mikrut
eeaaea20cc
Add broken files support (#202) 2021-01-12 20:06:12 +01:00
Rafał Mikrut
1a011644bf
Remove save workaround and fix crashes (#200) 2021-01-12 13:48:34 +01:00
Rafał Mikrut
b41a22a021
Fix error when closing dialog progress by X (#199) 2021-01-12 11:51:54 +01:00
Rafał Mikrut
da4bdd19e2 Release 2.2.0 2021-01-11 12:26:03 +01:00
Rafał Mikrut
80bbc9ba85
Move image cache to cache from config dir (#197) 2021-01-11 09:54:23 +01:00
Rafał Mikrut
7992ba30de
Fix included/excluded files which contains commas (#195) 2021-01-10 20:44:10 +01:00
Rafał Mikrut
ff85453394
Split Gui code into multiple files (#194) 2021-01-10 20:12:08 +01:00