Commit graph

355 commits

Author SHA1 Message Date
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
Jason Rodney Hansen
4b8bbdccf0 Fix for right and middle click in single click mode
There was an issue with the "Single click to open" setting where
right-clicking or middle-clicking on a folder would open it. This makes
it so only a left single click will open it.
2025-03-24 10:36:06 -06:00
Jason Rodney Hansen
9f8539875d Disable drag-select when not in multiple mode 2025-03-22 20:08:02 -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
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
fac5a25a3f
Use press event on gallery header instead of drag event to start window drag, fixes #537 2025-03-13 15:49:51 -06:00
Jason Rodney Hansen
0604df39ca Edit location when clicking on current directory
This makes it so clicking on the name of the current directory (the last
item) in the breadcrumbs puts it into edit mode. Before, it wouldn't do
anything, because you're already in the dir. Now it does something useful. This
change matches the behavior of Gnome Files.
2025-03-09 14:07:05 -06:00
Jeremy Soller
63ab36af8c
Remove accidental println 2025-03-07 09:10:53 -07:00
Jeremy Soller
2228ea35ea
Compact consecutive search locations in history, fixes #759 2025-03-07 08:44:43 -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
Jeremy Soller
c8aa80fb2f
Add operation to permanently delete trash items, fixes #841 2025-03-03 13:44:06 -07:00
Shehriyar Qureshi
2e31d99a0d fix(tab): prevent showing future date in trash items
trash items were showing future dates due to `now + time_deleted`.

Fixed by subtracting `time_deleted` instead
2025-03-01 13:46:23 +05:00
Josh Megnauth
e34dcf1372
Respect military time config from time applet
Closes: #775
2025-02-24 01:02:30 -05:00
Jeremy Soller
cd43d722d6
Merge pull request #816 from ellieplayswow/bugfix/drag-scroll-virtual-cursor-desync
Bugfix to how virtual cursor is calculated before DragEnd when drag-scrolling
2025-02-21 06:49:03 -07:00
johnoye742
42d4213207 Fixes issue #817 with thumbnails
Fixes the issue with thumbnails by explicitly setting the icon widget width to always be the minimum preventing overflow.
2025-02-21 10:47:10 +01:00
ellieplayswow
87b87f9a83 Change calculation of virtual drag area to work with subscription by not relying on mouse movements 2025-02-20 21:31:42 +00: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
169d8ef365 Fixing issue with x-axis desyncing 2025-02-18 13:58:00 +00:00
ellieplayswow
e774ea1774 Fixing issue where swapping between list & grid view 'desync' the virtual cursor 2025-02-18 13:32:54 +00:00
ellieplayswow
4a3b95e615 Fixing some jankiness by decoupling scroll offset vs 'virtual' cursor position & resetting after drag end 2025-02-18 13:14:40 +00:00
ellieplayswow
23596a1646 Implementing 'virtual cursor offset' to help track & dynamically update drag rect 2025-02-18 11:54:39 +00:00
ellieplayswow
df74f085ce Adding in resize listener for gridview 2025-02-18 00:07:22 +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
Jeremy Soller
17b0c665e7
Improve permissions descriptions 2025-02-12 10:45:20 -07:00
Jeremy Soller
e96258917a
Merge pull request #794 from git-f0x/master
Set max height for previews
2025-02-11 09:38:02 -07:00
Jeremy Soller
440308fdea
Adjust style of completions again 2025-02-07 11:01:20 -07:00
Jeremy Soller
bc4f267c60
Do not show completion if already on an existing path 2025-02-07 10:26:19 -07:00
Jeremy Soller
868aa79127
Limit completions to 8 2025-02-07 10:21:49 -07:00