Commit graph

385 commits

Author SHA1 Message Date
Ashley Wulber
a4e3bf3eea
fix: limit concurrent thumbnail generation (#1138) 2025-08-13 11:00:07 -06:00
Jeremy Soller
4f015eec7a
Only scroll to focused object on resize, fixes #1097 2025-07-31 10:04:34 -06:00
Jeremy Soller
67884d2800
Do not apply image size limit to all files 2025-07-30 15:52:21 -06:00
Jeremy Soller
5736fbb271
Remove unnecessary debug 2025-07-30 15:48:53 -06:00
Mitchel Stewart
293350092c
thumbnail: Support jxl and plumbing for future formats. (#1058)
* add plumbing for additional thumbnailers

* remove bad logging and fmt

* fix bad logging message

* add decoding ram limits

* add configuration for thumbs

* cleanups

* fix rebase fails
2025-07-30 15:45:53 -06:00
Josh Megnauth
64c8506dd2 Decode URL encoded recents bookmark
File paths are URL encoded in the recently-used.xbel file. Paths with
spaces (or whatever) need to be decoded or else the Recents tab skips
those entries.
2025-07-28 15:27:51 -06:00
Ashley Wulber
6d9e6c1d20 fix(desktop): use the window id for context menus 2025-07-25 15:47:37 -04:00
Jeremy Soller
a6e369df0f
Enable context menu popups in dialog, close context menu when location changes 2025-07-24 11:34:41 -06:00
Jeremy Soller
605f44763b
On wayland, place context menus into popups, fixes #1090 2025-07-24 10:51:46 -06:00
Ashley Wulber
5dad1f0d26 fix: exit early from thumbnail generation if file is too big 2025-07-17 10:14:54 -06:00
Ashley Wulber
a7a519b14c cleanup 2025-07-15 13:15:45 -06:00
Ashley Wulber
08367c9ea6 feat: handle opening network location in new window 2025-07-15 13:15:45 -06:00
Ashley Wulber
c7e9828d7b feat: retry opening network locations after mounting 2025-07-15 13:15:45 -06:00
Jeremy Soller
e1d3010145
Watch for drag event while scrolling 2025-07-10 14:00:31 -06:00
Jeremy Soller
7524487ba7
Significantly optimize drag select performance 2025-07-10 13:57:41 -06:00
Jeremy Soller
b7c9ed8dff
Implement auto scroll in mouse area, improves performance 2025-07-10 11:52:42 -06:00
Jeremy Soller
5e4d4523f4
Only build widgets for visible items 2025-07-10 10:52:57 -06:00
Ashley Wulber
10f234bf79 fix(grid dnd): offset dnd icon by grid item padding 2025-07-10 10:20:53 -06:00
Ashley Wulber
319fa5faec fix(dnd): use zero offset for dnd icons 2025-07-09 15:29:04 -06:00
Jeremy Soller
15e1337e63
Preserve search time when normalizing, fixes #1062 2025-07-09 15:26:49 -06:00
Mitchel Stewart
e04f17b97d thumbnail: create thumbnail folder and fix bad cache 2025-07-08 09:18:18 -06:00
Jason Rodney Hansen
489eb2a066 Add caching for thumbnails based and freedesktop.org spec 2025-07-07 08:59:06 -06:00
Ashley Wulber
e4ffec63a1 refactor: apply limit on the number of persisted sort names 2025-07-03 19:34:48 +00:00
Ashley Wulber
01bf55865c feat: persist sort options for each location 2025-07-03 15:13:11 +00:00
Ashley Wulber
6a2bd1faf1 fix: add eject button for context menus on mount point 2025-07-01 00:25:58 +00:00
Jeremy Soller
b7d3d16d28
Fix compilation without gfvs feature 2025-06-18 20:54:58 -06:00
ellieplayswow
1ad5ec0398
drastically speed up gvfs mount directory listings (#1003)
* feat(gvfs): use gio::enumerate_children to iterate gvfs dirs and split some logic to avoid native fs:: methods

* feat(gvfs): allow thumbnails for GvfsPath + create ItemMetadata::file_size method

* feat(gvfs): fix up details panel + cargo fmt

* fixing panic with really large directories

* cargo fmt
2025-06-18 20:39:42 -06:00
Gwen Lg
b0e89cd5e3
fix some typos in comment or var name (#1027)
indicated by `typos` tool : https://github.com/crate-ci/typos/
2025-06-18 16:40:55 -06:00
Joshua Megnauth
ec685bd185
Save/simplify show hidden items (#1026)
Closes: #1022, #605
See: #982
Original PR: #36

This commit reimplements saving the "show hidden" files setting. I
simplified the implementation by making the toggle global. My original
PR (#36) implemented per tab show hidden, but that complicates saving
configs which is why (I think?) why the saving the toggle was scrapped.
2025-06-18 16:35:39 -06:00
Ashley Wulber
720caa5dba feat: menubar popups 2025-06-18 12:11:15 -04:00
Jeremy Soller
1a5a4501ee
Desktop will not show DnD indicator, fixes #981 2025-05-20 16:12:54 -06:00
Jeremy Soller
051001b9ea
Implement setting permissions, fixes #325 2025-05-16 09:39:53 -06:00
Jeremy Soller
a34f727913
Fall back to permanently delete on remote shares, part of #909 2025-05-15 11:30:35 -06:00
Jeremy Soller
3b34ba8907
Add reload folder key binding, fixes #146 2025-05-15 10:55:11 -06:00
Jeremy Soller
d0fb166cf6
Use gio to read display names for gvfs mounts, fixes #174 2025-05-15 10:00:44 -06:00
ellieplayswow
16c8c0df30 bugfix(zoom): use global modifiers for checking if ctrl is used for zoom instead of mouse area events
example(copy): fixing copy example to use correct Method type
2025-04-30 13:57:33 -06:00
Jeremy Soller
037190babd
Remove unused icon sizes argument from preview 2025-04-30 08:27:55 -06:00
Jeremy Soller
4f7d13f391
Merge branch 'permanently-delete' of https://github.com/gwen-lg/cosmic-files 2025-04-29 18:39:11 -06:00
Jeremy Soller
5573e36400
Copy to external drives when drag and dropping, part of #828 2025-04-29 18:07:57 -06:00
Jeremy Soller
dd98622cfa Reduce features used on remote filesystems
This attempts to detect remote filesystems on Linux using the
/proc/self/mountinfo file and checking the filesystem against a
hardcoded list of remote filesystems. Remote filesystems will not
thumbnail, read file data to determine mime types, or calculate
directory sizes.
2025-04-29 14:51:11 -06:00
Gwen Lg
95aba7c74e Add context menu management of permanently deleting files and folders
The action replace move-to-trash when shift modifier is active, like on
other desktop environement.
Use modifiers value stored in Tab struct as needed to forward to context_menu
creation.
Started from work of Tim Dengel <tim.dengel.debian@gmail.com>
2025-04-29 20:18:30 +02:00
Gwen Lg
e220268954 Add ModifiersChanged message on Tab and keep value
The message is forwarded from app/dialog Message, and used to
keep the value of the status of modifiers in Tab.
2025-04-29 20:18:30 +02:00
Daniel
569247acfb
visualise cut items (#954) 2025-04-28 07:35:27 -06:00
19MisterX98
2d22b6d516
fix #878 (#951) 2025-04-26 18:12:31 -06:00
Jeremy Soller
90fc680666
Handle error from trash::os_limited::is_empty 2025-04-21 13:34:16 -06:00
Joshua Megnauth
bc1b68153b
perf: Only enumerate trash items when necessary (#604)
Closes: #310

Depends on Byron/trash-rs#120 which implements a function that only
checks if the trash is empty or not instead of parsing each item.
2025-04-21 13:33:03 -06:00
Ashley Wulber
eea916d783
feat: responsive menu bar (#938) 2025-04-15 18:04:07 -06:00
Jason Hansen
5e21c7cf99
Use icu for date and time localization (#934)
* Use icu for date and time localization

* Handle military time config in dialog
2025-04-14 08:59:32 -06:00
Michael Murphy
79aa8f887a
feat: use io_uring / IOCP when available for async file IO (#911)
Spawns a single thread for handling async file IO on the [compio runtime](https://github.com/compio-rs/compio).
It is a completion-based IO runtime that can dynamically select a polling mechanism at runtime. It defaults to
io_uring on Linux, IOCP on Windows, and the polling crate everywhere else. On Linux systems where io_uring is
unavailable or disabled, it will fall back to the polling crate.

This eliminates most of the threads that were needed previously. It significantly reduced the amount of memory
needed in the recursive Context to get a good transfer rate for each copy operation—from a 4 MB buffer to 128 KB.
Copies on a nvme drive are somewhat faster with the async IO changes, and use less CPU than before.

Although it uses a single thread for non-blocking tasks, it still manages to 100% max out my nvme drive's
activity for the whole duration of multiple long transfers. But it would be possible to enable compio's
dispatcher to spread operations across worker threads if necessary.

All but the extract and compress operations were updated to be async. I had to switch the `CondVar` in the
`Controller` to a `tokio::sync::Notify` to prevent the IO thread from being put to sleep when an operation is paused.
Fixed a deadlock in the `operation_copy` test function that was performing an operation without concurrently pulling
from the channel in the operation. Reduced the rate that `Message::None` is sent from a subscription to trigger a UI
redraw, and fixed it to not run when operations are paused.
2025-04-09 15:15:07 -06:00
Josh Megnauth
42cad87825
feat: Open multiple files with one/multiple apps
Opening multiple selected paths should:
* Launch one app that supports all of the file paths e.g. an image
  viewer that allows cycling through the selected images
* Launch multiple instances of an app if the app doesn't handle multiple
  URLs, such as nsxiv
* Launch different apps for a heterogeneous mix of URLs while taking
  into account the two rules above. For example, launching a mix of
  paths of images, videos, and text should open the correct apps
2025-03-27 02:08:38 -04:00