Commit graph

325 commits

Author SHA1 Message Date
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
53143d0abc
Remove nb_items from permanently-delete-warning 2025-05-09 10:25:33 -06:00
Jeremy Soller
037190babd
Remove unused icon sizes argument from preview 2025-04-30 08:27:55 -06:00
Jeremy Soller
dd5fa29e9a
Adjust permanently delete dialog 2025-04-29 18:49:19 -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
160ef5f414 feat: include permanent delete in menu_bar 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
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