No description
Find a file
leyoda 1cf17dcde8 yoda: phase 3 — drag-drop toolbar editor in Settings
Migrates the config model from the phase-2 bag-of-bools (ToolbarItems)
to an ordered Vec<ToolbarAction> so the user can pick BOTH the set of
buttons AND their order in the toolbar.

Config (config.rs):
- new ToolbarAction enum with 11 variants (LocationUp, Reload,
  NewFolder, NewFile, Rename, Delete, Cut, Copy, Paste,
  ToggleShowHidden, OpenTerminal) + to_u8/from_u8 for DnD payload
- Config.toolbar: Vec<ToolbarAction>, default = default_toolbar()
  (NewFolder, Rename, Delete, Cut, Copy, Paste — same 6 as phase 2)

Rendering (view()):
- iterate self.config.toolbar in order and emit a tooltip'd icon button
  per entry via the new toolbar_action_ui(action) helper shared with
  the Settings page. Paste stays disabled when clipboard empty.
- No hardcoded groups or auto-dividers anymore — order is 100% user.

Settings page (toolbar_settings_section):
- two stacked lists:
  * 'Toolbar': currently-enabled actions in their Vec order. Each row
    is wrapped in dnd_source (drags a ToolbarActionPayload carrying
    the enum discriminant) + dnd_destination (accepts drops from other
    rows, fires Message::ToolbarReorder { src, target } to move src
    before target in the Vec). A list-drag-handle icon + a minus button
    (ToolbarRemove) per row.
  * 'Available': actions not yet enabled, each with a plus button
    (ToolbarAdd) that pushes to the end of the Vec.
- 'Reset to defaults' button at the bottom (ToolbarReset).

DnD infra (app.rs top):
- TOOLBAR_MIME constant: 'application/x-cosmic-files-toolbar-action'
- ToolbarActionPayload(u8) with AsMimeTypes + AllowedMimeTypes +
  TryFrom<(Vec<u8>, String)> impls — single-byte wire format matching
  the enum discriminant.

Messages:
- ToolbarAdd(ToolbarAction) — append to toolbar vec if absent
- ToolbarRemove(ToolbarAction)
- ToolbarReorder { src, target } — remove src, reinsert before target
- ToolbarReset — restore default_toolbar()

i18n (en + fr):
- new keys: toolbar-available, toolbar-empty-hint, toolbar-reset

Migration: existing installs with a phase-2 ToolbarItems struct in
their config will error at load time (different shape); cosmic_config
falls back to Self::default() which gives the phase-2 minimal-6 set —
a safe reset rather than a broken partial read.
2026-04-24 08:13:30 +02:00
.github Add pull request template 2026-02-13 12:35:27 -07:00
cosmic-files-applet Epoch 1.0.11 version update 2026-04-17 12:54:32 -06:00
debian Epoch 1.0.11 version update 2026-04-17 12:54:32 -06:00
examples example(dialog): switch logger to fix build 2026-04-14 17:47:50 +02:00
i18n yoda: phase 3 — drag-drop toolbar editor in Settings 2026-04-24 08:13:30 +02:00
res Generate translated desktop and metainfo files with xdgen 2026-02-12 14:46:38 -07:00
samples Add mode samples 2025-02-12 10:44:53 -07:00
scripts Remove fs_extra (#655) 2024-11-13 14:36:11 -07:00
src yoda: phase 3 — drag-drop toolbar editor in Settings 2026-04-24 08:13:30 +02:00
.gitignore Add just flamegraph target 2024-11-14 09:28:28 -07:00
build.rs Generate translated desktop and metainfo files with xdgen 2026-02-12 14:46:38 -07:00
Cargo.lock yoda wayland-v5: redirect window_clipboard + cosmic-text to local forks 2026-04-24 07:09:48 +02:00
Cargo.toml yoda wayland-v5: redirect window_clipboard + cosmic-text to local forks 2026-04-24 07:09:48 +02:00
i18n.toml Basic implementation 2024-01-03 15:27:32 -07:00
justfile Merge pull request #1558 from jpttrssn/exclude-trash 2026-03-02 11:49:53 -07:00
LICENSE Initial commit 2024-01-03 13:34:32 -07:00
README.md Remove WIP note from readme 2026-01-13 10:07:50 -07:00
TESTING.md docs (QA): Add file drag-and-drop to regression testing checklist 2025-12-19 13:36:31 -07:00

cosmic-files

File manager for the COSMIC desktop environment

Build the project from source

# Clone the project using `git`
git clone https://github.com/pop-os/cosmic-files
# Change to the directory that was created by `git`
cd cosmic-files
# Build an optimized version using `cargo`, this may take a while
cargo build --release
# Run the optimized version using `cargo`
cargo run --release

Community and Contributing

The COSMIC desktop environment is maintained by System76 for use in Pop!_OS. A list of all COSMIC projects can be found in the cosmic-epoch project's README. If you would like to discuss COSMIC and Pop!_OS, please consider joining the Pop!_OS Chat. More information and links can be found on the Pop!_OS Website.

License

This project is licensed under GPLv3