Commit graph

343 commits

Author SHA1 Message Date
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
Jeremy Soller
121e9f5cf4
Improve style of completions 2025-02-07 09:53:53 -07:00
Jeremy Soller
6612c5203e
Path completion, fixes #86 2025-02-07 09:14:16 -07: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
Jeremy Soller
06b8132aa3
Set select_focus when selecting by name or path 2025-02-06 09:05:45 -07:00
ellieplayswow
c000eda54b Fixing issue where a tab tries to read lines from a .hidden directory 2025-02-05 20:53:36 +00:00
Josh Megnauth
f1a9befec1
chore(clippy): tab.rs 2025-01-29 00:46:23 -05:00
Jeremy Soller
ceab7835ad
Clean up mime app handling and make it possible to set default application, part of #325 2025-01-24 11:55:56 -07:00
Josh Megnauth
6a6a494012 chore(clippy): mouse_area, controller & more
Fixes lints for:
* src/operation/controller.rs
* src/mouse_area.rs
* src/mounter/mod.rs
2025-01-19 10:55:56 -07:00
Jeremy Soller
3460c2c106
Allow drop to Desktop, fixes #597 2025-01-19 10:54:30 -07:00
Jeremy Soller
f8830814c1
Replace use of blocking function on search results channel, fixes #601 2025-01-16 17:56:13 -07:00
Jason Rodney Hansen
5e65ca6d0b Fix resetting shift select range
Before this fix the following steps would not work correctly:

1. Select a range with shift click.
2. Select a single item that's in the currently selected range, without
   holding shift.
3. Hold shift and click another item to select a new range.

Instead of the item selected in step 2 being the start or end of the
range, the original range from step one is used to get the start or end
of the new range.

This fix makes sure the range gets reset when selecting an item in step
2.
2025-01-14 19:21:24 -07:00