Commit graph

314 commits

Author SHA1 Message Date
Gwen Lg
d8a198e836 clean: rename Modifiers message to ModifiersChanged
to be more explicit/accurate.
2025-04-29 20:18:30 +02:00
Tim Dengel
1a66d7b184 Support permanently deleting files and directories using Shift+Del
Add a confirmation dialog to limit risks of data lost.
2025-04-29 20:18:30 +02:00
Jeremy Soller
8ced8b0551
Show all applications that handle any mime types in open with dialog, fixes #568, fixes #226, fixes #721 2025-04-29 09:53:51 -06:00
Daniel
569247acfb
visualise cut items (#954) 2025-04-28 07:35:27 -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
Burkhard Mittelbach
f4b92c73ed Fix move to home location on unmount
Previously this would only work if the root of the unmounted file-system
is open in a tab. This also checks for any sub-path.

fixes: #915
2025-04-02 16:03:49 +02: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
Jason Rodney Hansen
dfa857b1e5 Set title and accept button label for extract dialog 2025-03-23 15:28:18 -06:00
Jason Rodney Hansen
162768af8f Fix toasts for Extract and Compress 2025-03-23 14:30:22 -06:00
Jason Rodney Hansen
5fd7be593a Use Open Folder dialog for Extract To 2025-03-23 14:18:00 -06:00
Jason Rodney Hansen
a657c5e409 Simplify and fix box selection and autoscroll 2025-03-22 18:51:48 -06:00
Jeremy Soller
06fd35db76
Merge pull request #683 from CaelusV/single-click
Add 'Single click to open' settings toggle
2025-03-19 16:25:37 +00:00
Jeremy Soller
6dc24b52e8
Format 2025-03-19 09:55:01 -06:00
Jeremy Soller
ca7b55bf0b
Merge pull request #885 from johnoye742/master
Introduces feature mentioned in #749
2025-03-19 15:54:27 +00:00
johnoye742
c7a411d3de feat: Extract archive to a specified location 2025-03-17 13:01:08 +01:00
Ashley Wulber
4828bae81d
chore: update libcosmic 2025-03-15 11:59:03 -04:00
CaelusV
20e571efab Add 'Single click to open' settings toggle 2025-03-14 03:30:58 +01:00
Jeremy Soller
4e826c6ef0
Merge pull request #872 from johnoye742/master
Removed unused imports
2025-03-10 08:05:00 -06:00
Jeremy Soller
509a0afb98
Merge pull request #869 from ellieplayswow/feature/open-with-subclasses
Bugfix to open-with dialog to use a scrollable with a managed height
2025-03-10 08:04:22 -06:00
ellieplayswow
eac6acc74f Only show one (default) line 2025-03-10 12:51:50 +00:00
johnoye742
8810d0d7ef Removed unused imports 2025-03-10 12:07:32 +01:00
ellieplayswow
1ab7615335 Fixing incorrect height calculation on scrollable 2025-03-10 09:08:37 +00:00
ellieplayswow
7d3b59f72a Use scrollable for open-with dialog and calculate height to ensure open button is visible 2025-03-10 02:15:23 +00:00
Jeremy Soller
c5c1b325f0
Merge pull request #867 from jasonrhansen/broken-favorites
Handle broken favorites in sidebar
2025-03-09 17:00:30 -06:00
ellieplayswow
6ec37975de cargo fmt 2025-03-09 21:14:47 +00:00
ellieplayswow
b288cd0581 simplifying list generation for mime types, applying xdg-mime patch & cargo fmt 2025-03-09 21:13:27 +00:00
ellieplayswow
e3226d8dc2 Adding in new functionality to open / open-with based off of MIME subclasses where needed 2025-03-09 21:12:51 +00:00
Jason Rodney Hansen
6a8f487a35 Handle broken favorites in sidebar 2025-03-09 12:58:47 -06:00
Jason Rodney Hansen
0d76f7819e Improve updating favorites when moving multiple dirs
Now update_favorites only needs to be called a single time after moving
a bunch of files.
2025-03-08 17:11:34 -07:00
Jason Rodney Hansen
08a3ac8620 Update favorites when dir is renamed or moved 2025-03-08 15:17:23 -07:00
Jason Rodney Hansen
cfedaef0cb Implement "Open in new window" for Trash, Recents, Network 2025-03-07 15:33:31 -07:00
Jason Rodney Hansen
7d111169e0 Only show Show Details for Path locations 2025-03-07 14:43:41 -07:00
Jason Rodney Hansen
51c5c6f8e6 Only show Empty Trash when there is trash 2025-03-07 14:35:00 -07:00
Jason Rodney Hansen
97abc76c8d Add open in new tab for Network and Recents 2025-03-07 14:29:00 -07:00
Jeremy Soller
f95762bd44
Type to search or seek (#859)
* WIP: type to search/seek

* Implement type to seek
2025-03-06 20:44:05 -07:00
Shehriyar Qureshi
b71e21d346 fix(app): header actions glitch in preview page
extend actions vec once on first selection only.
2025-03-05 22:26:37 +05:00
Shehriyar Qureshi
eaef410939 fix(app): close preview on single click
match on Preview (the type) to close preview context in single click.

matching on Preview type prevents the equality check failing b/w
ContextPage::Preview(Some,_) and ContextPage::Preview(None,_)
2025-03-04 16:54:38 +05:00
Shehriyar Qureshi
1c6c93c130 Revert "fix(app): close selected preview on single click"
This reverts commit b25d0b5ff7.
2025-03-04 16:54:13 +05:00
Shehriyar Qureshi
b25d0b5ff7 fix(app): close selected preview on single click
set context_page to preview with Some(entity) instead of None when "Show
details" is selected.

Preview of None entity would fail first equality check in
Message::ToggleContextPage as `Preview(None, ..) != Preview(Some, ..)`
.

This fixes the two clicks needed to close Preview of Selected as first
click would update self.context_page from Preview(None,..) to
Preview(Some,..) and next click would pass equality and close Preview.
2025-03-04 14:50:54 +05:00
Jeremy Soller
c8aa80fb2f
Add operation to permanently delete trash items, fixes #841 2025-03-03 13:44:06 -07:00
Jeremy Soller
3cce822ffc
Fix multiple operation progress, fixes #842 2025-03-03 13:05:11 -07:00
Josh Megnauth
e34dcf1372
Respect military time config from time applet
Closes: #775
2025-02-24 01:02:30 -05:00
ellieplayswow
1e5123af17 Fixing issue with scroll speed subscription not working in dev profile, removing speed code as redundant 2025-02-19 19:30:40 +00:00
ellieplayswow
9d60ca1564 Moving autoscroll to a subscription on fixed timer + calculating speed based off of distance to edge 2025-02-19 11:29:19 +00:00
ellieplayswow
7c6df15f08 Adding in new functionality to scroll the file window when dragging outside the viewport of the scrollable 2025-02-17 23:53:12 +00:00
Ashley Wulber
62deeb549b
fix: set the active tab in desktop mode when the window is focused 2025-02-12 13:56:59 -05:00
Vukašin Vojinović
51f41ac9ee improv(preview_view): set max height for previews
This sets the max height of the previews to THUMBNAIL_SIZE, to match text previews.
Prevents the previews from becoming too large when the desktop details window is resized horizontally.
2025-02-07 01:44:01 +01:00
Jeremy Soller
abf95c0189
Add icon size and grid spacing for desktop, fixes #751 2025-02-06 09:26:20 -07:00