diff --git a/.github/README.md b/.github/README.md index 5d38f19da904..c1d5d912fdc3 100644 --- a/.github/README.md +++ b/.github/README.md @@ -4,7 +4,7 @@ # LinuxFiles -LinuxFiles is an independent Linux-only file manager built with C#/.NET 10 and Uno Platform's Skia desktop host. Alpha7 prefers native Wayland through the forked Uno 6.7.135-wayland.6 packages and falls back to X11/XWayland, without Windows or Wine. +LinuxFiles is an independent Linux-only file manager built with C#/.NET 10 and Uno Platform's Skia desktop host. Alpha8 prefers native Wayland through the forked Uno 6.7.135-wayland.7 packages and falls back to X11/XWayland, without Windows or Wine. Based on [Files](https://github.com/files-community/Files) by the [Files Community](https://github.com/files-community) and its [contributors](https://github.com/files-community/Files/graphs/contributors), this fork is not affiliated with or endorsed by the Files Community. LinuxFiles has no Windows support or upstream sync. Individual upstream fixes may be brought over selectively with attribution; see the [upstream policy](../docs/linux-port/upstream-policy.md). @@ -23,8 +23,8 @@ See the [showcase](../docs/linux-port/SHOWCASE.md) for screenshots and [packagin ## Known limits -- The native Wayland host is new; please report compositor, scaling, input or packaging issues. Embedded web/media views are unsupported on Wayland: HTML previews show text with "Open with default app", audio/video shows a thumbnail and details with Open, and release notes open in the browser. X11 keeps embedded views and its existing outgoing drag path. Touch-started drags are untested; Wayland has no "link" drag action. Force X11/XWayland with `UNO_SKIA_HOST=x11`; see [Troubleshooting](#troubleshooting). -- AT-SPI accessibility is not implemented. X11/XWayland fallback can show soft text under fractional compositor scaling. +- The native Wayland host is new; please report compositor, scaling, input or packaging issues. Audio/video previews on Wayland and X11 need optional `mpv` (libmpv), with play/pause, seek and volume; nothing is decoded until Play, and network, scripts and playlists are disabled. HTML previews need optional `webkit2gtk-4.1` for scrollable snapshots in WebKit's bubblewrap sandbox, with JavaScript off and no network; without the sandbox they fall back to text ([#198](https://github.com/MemerGamer/LinuxFiles/pull/198)). NixOS packages lack mpv/WebKitGTK and use fallbacks; the release notes page still uses the fallback. Touch-started drags are untested; Wayland has no "link" drag action. X11 drag and drop with other apps: Uno's X11 host now starts drags itself with a drag icon and cursors, and drops from Wayland apps such as Dolphin on KDE arrive on XWayland ([#197](https://github.com/MemerGamer/LinuxFiles/pull/197)). Force X11/XWayland with `UNO_SKIA_HOST=x11`; see [Troubleshooting](#troubleshooting). +- AT-SPI accessibility is not implemented. X11/XWayland fallback can show soft text under fractional compositor scaling. LCD text needs opaque windows and a known subpixel order: compositor monitor info, then fontconfig, KDE `kdeglobals` `XftSubPixel` or GNOME settings; otherwise text stays grayscale, as does rotated text. Set `UNO_SKIA_TEXT_LCD=auto|on|off` (default `auto`) or `UNO_SKIA_TEXT_RGBA=rgb|bgr|vrgb|vbgr|none`. Works with the alpha6 gamma fix (`UNO_SKIA_TEXT_GAMMA=skia` restores the previous gamma rendering); see [Uno 6.7.135-wayland.7](https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.7). - Select-all in folders with around 10,000 items remains slow because of Uno selection handling. - Tags use Linux extended attributes and a local database. Extended-attribute writes can fail on read-only files or unsupported filesystems; alpha4 preserves edits in the database across reloads and restarts, but those edits cannot be written back to the file when xattrs fail. - Release packages target x86_64. arm64 publishing is wired but untested. Network/MTP browsing requires a working GVfs session. @@ -32,12 +32,12 @@ See the [showcase](../docs/linux-port/SHOWCASE.md) for screenshots and [packagin ## Install -[![Latest release](https://img.shields.io/github/v/release/MemerGamer/LinuxFiles?include_prereleases&filter=linux-v*&label=release)](https://github.com/MemerGamer/LinuxFiles/releases/tag/linux-v0.1.0-alpha7) +[![Latest release](https://img.shields.io/github/v/release/MemerGamer/LinuxFiles?include_prereleases&filter=linux-v*&label=release)](https://github.com/MemerGamer/LinuxFiles/releases/tag/linux-v0.1.0-alpha8) > [!NOTE] -> **0.1.0-alpha7 is the seventh public alpha release.** Expect rough edges and missing features, and keep backups of anything you care about. Please report problems in the [issue tracker](https://github.com/MemerGamer/LinuxFiles/issues). +> **0.1.0-alpha8 is the eighth public alpha release.** Expect rough edges and missing features, and keep backups of anything you care about. Please report problems in the [issue tracker](https://github.com/MemerGamer/LinuxFiles/issues). -Grab the assets from the [0.1.0-alpha7 release page](https://github.com/MemerGamer/LinuxFiles/releases/tag/linux-v0.1.0-alpha7). Requirements: x86_64 Linux with Wayland or X11/XWayland; the packages are self-contained, so no .NET install is needed. +Grab the assets from the [0.1.0-alpha8 release page](https://github.com/MemerGamer/LinuxFiles/releases/tag/linux-v0.1.0-alpha8). Requirements: x86_64 Linux with Wayland or X11/XWayland; the packages are self-contained, so no .NET install is needed. ### Arch Linux (AUR) @@ -64,12 +64,12 @@ programs.linuxfiles = { }; ``` -This installs a patched helper, a matching polkit action and trusted deployment manifest, and enables the pkexec wrapper. A session authentication agent is required. The flake pins alpha7, which supports this opt-in. A runtime-capability assertion rejects incompatible or unmarked package overrides. See [Nix packaging details](../docs/linux-port/packaging.md#nix-flake). +This installs a patched helper, a matching polkit action and trusted deployment manifest, and enables the pkexec wrapper. A session authentication agent is required. The flake currently pins alpha7, which supports this opt-in; it will be updated to alpha8 after the release assets and hashes are published. A runtime-capability assertion rejects incompatible or unmarked package overrides. See [Nix packaging details](../docs/linux-port/packaging.md#nix-flake). ### AppImage ```sh -curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/linux-v0.1.0-alpha7/Files-x86_64.AppImage +curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/linux-v0.1.0-alpha8/Files-x86_64.AppImage chmod +x Files-x86_64.AppImage ./Files-x86_64.AppImage ``` @@ -79,7 +79,7 @@ Root actions remain disabled in the AppImage. Administrators can separately [pro ### Flatpak bundle ```sh -curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/linux-v0.1.0-alpha7/Files-x86_64.flatpak +curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/linux-v0.1.0-alpha8/Files-x86_64.flatpak flatpak install --user ./Files-x86_64.flatpak flatpak run io.github.memergamer.LinuxFiles ``` @@ -89,7 +89,7 @@ The bundle needs the `org.freedesktop.Platform//25.08` runtime and a configured ### Tarball ```sh -curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/linux-v0.1.0-alpha7/files-linux-x64.tar.gz +curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/linux-v0.1.0-alpha8/files-linux-x64.tar.gz tar xzf files-linux-x64.tar.gz ./linux-x64/Files # run it in place ``` @@ -138,7 +138,7 @@ curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/nightly/Linu ## Troubleshooting -**Choose a host (alpha7):** `UNO_SKIA_HOST=x11 files` forces X11/XWayland; `UNO_SKIA_HOST=wayland files` requires native Wayland. The default chooses Wayland when available and falls back to X11 when Wayland host probing fails or `WAYLAND_DISPLAY` is unset. Restart Files when switching. See [host and package details](../docs/linux-port/wayland-packages.md). +**Choose a host (alpha8):** `UNO_SKIA_HOST=x11 files` forces X11/XWayland; `UNO_SKIA_HOST=wayland files` requires native Wayland. The default chooses Wayland when available and falls back to X11 when Wayland host probing fails or `WAYLAND_DISPLAY` is unset. Restart Files when switching. See [host and package details](../docs/linux-port/wayland-packages.md). **Soft text or icons with X11/XWayland fallback on niri / xwayland-satellite:** Enable **Detect display scale from the compositor (experimental)** in Settings > Appearance and restart Files to use niri's focused output scale when no Uno, Xft, GDK or Qt scale hint is present and both `NIRI_SOCKET` and `WAYLAND_DISPLAY` are set. Check stderr for `[display-scale]` to see whether IPC or CLI detection succeeded. Detection defaults off and may double-scale on some setups. `FILES_NIRI_SCALE=1` forces it on and `FILES_NIRI_SCALE=0` forces it off, overriding the saved preference. Launch with `UNO_DISPLAY_SCALE_OVERRIDE=1.25 files` to select a scale manually (replace `1.25` with your output scale). The scale is chosen at startup. See [display scale details](../docs/linux-port/appearance-transparency.md#display-scale-on-niri). diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d63b541e1b0..8e0d41645840 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,28 @@ LinuxFiles is an independent Linux-only fork of [Files](https://github.com/files ## Unreleased +## 0.1.0-alpha8 - 2026-10-16 + +Eighth public alpha, focused on sharper text and real media/HTML previews on Wayland and X11. Expect rough edges and keep backups. Report issues at +https://github.com/MemerGamer/LinuxFiles/issues. + +### Highlights + +- Sharper text on opaque windows with subpixel (LCD) antialiasing ([Uno 6.7.135-wayland.7](https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.7)). Subpixel order comes from compositor monitor info, then fontconfig, KDE `kdeglobals` `XftSubPixel` or GNOME settings; otherwise text stays grayscale. Rotated text stays grayscale. Set `UNO_SKIA_TEXT_LCD=auto|on|off` (default `auto`) or override the order with `UNO_SKIA_TEXT_RGBA=rgb|bgr|vrgb|vbgr|none`. Works alongside the alpha6 gamma fix; set `UNO_SKIA_TEXT_GAMMA=skia` to restore the previous gamma rendering. +- Real previews on Wayland and X11 ([#198](https://github.com/MemerGamer/LinuxFiles/pull/198)): audio/video plays via libmpv (optional `mpv` dependency), with play/pause, seek and volume. Nothing is decoded until Play; no network, scripts or playlists. HTML renders as a scrollable snapshot via optional `webkit2gtk-4.1`, with JavaScript off and no network in WebKit's bubblewrap sandbox; without the sandbox it falls back to text. The release notes page still uses the fallback. NixOS packages do not include mpv/WebKitGTK yet, so previews fall back there. +- X11 drag and drop with other apps: Uno's X11 host now starts drags itself (drag icon, copy/move/link cursors, Shift/Escape), and drops from Wayland apps such as Dolphin on KDE arrive on XWayland; before, such a drop was lost and could leave KWin's drag bridge stuck. `UNO_X11_DND_LOG=` traces XDND messages ([#197](https://github.com/MemerGamer/LinuxFiles/pull/197)). +- Uses the forked Uno **6.7.135-wayland.7** packages ([Uno 6.7.135-wayland.7](https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.7)), verified against committed SHA-256 pins. The Nix flake currently pins alpha7; it will be updated after the alpha8 release assets and hashes are published. + +### Known limitations + +- The native Wayland host is new; please report compositor, scaling, input or packaging issues. X11/XWayland remains available with `UNO_SKIA_HOST=x11`. +- Resizing is smoother but not yet perfectly fluid; layout still keeps the UI thread busy during a drag. +- LCD antialiasing needs an opaque window and a known subpixel order; other text, including rotated text, stays grayscale. Some toolbar glyphs have thin strokes that can look soft. Icons at display scales above 100 percent may still be soft. +- Preview backends are optional: audio/video needs mpv, and HTML needs WebKitGTK 4.1 with its bubblewrap sandbox. NixOS packages still use fallbacks, as does the release notes page. Touch-started drags are untested, and Wayland has no "link" drag action. +- Select-all in folders with 10,000 items is still slow due to Uno selection handling. +- AT-SPI accessibility is not implemented. Mica/Acrylic is not implemented on Linux. +- The Nix flake pins alpha7 until the alpha8 release assets and hashes are published. Plain Nix installs, AppImage and Flatpak keep root actions disabled. + ## 0.1.0-alpha7 - 2026-10-15 Seventh public alpha, focused on file drag-and-drop and preview fallbacks on Wayland. Expect rough edges and keep backups. Report issues at diff --git a/Directory.Packages.props b/Directory.Packages.props index 879ed682595d..8af68cfd48ad 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -51,9 +51,9 @@ - 6.7.135-wayland.6 + 6.7.135-wayland.7 - false + true $(MSBuildThisFileDirectory)nuget.wayland.config @@ -65,7 +65,7 @@ - + diff --git a/build/uno-wayland-packages.sha256 b/build/uno-wayland-packages.sha256 index 36d8181b3713..166e2f9407fc 100644 --- a/build/uno-wayland-packages.sha256 +++ b/build/uno-wayland-packages.sha256 @@ -26,3 +26,11 @@ 6.7.135-wayland.6 16830c4efaccdd6dc25bc2904775251d5155d40e49f76115d7f79b674809518e Uno.WinUI.Runtime.Skia.6.7.135-wayland.6.nupkg 6.7.135-wayland.6 840cbb2211ad5a6fec08b67db7a41ad8b2d84892864746dbd3e1cc525a97509d Uno.WinUI.Runtime.Skia.X11.6.7.135-wayland.6.nupkg 6.7.135-wayland.6 2612263e7e88efec40621fbc549f51e1710df41a0a6d391428a019b6cd2c5283 Uno.WinUI.Runtime.Skia.Wayland.6.7.135-wayland.6.nupkg +6.7.135-wayland.7 746a9d0a120fe4fb238980d4da5bb0043a573845908c5eda8b11734a5cd06631 Uno.WinUI.6.7.135-wayland.7.nupkg +6.7.135-wayland.7 4e3b230eac79efcc9fe66b033ff72a0e35c41f307bd220766721a24793c5c608 Uno.WinRT.6.7.135-wayland.7.nupkg +6.7.135-wayland.7 79ca29212d0f3599ca449af1e0f99c1ccba74597bc6c1cdec34bdf74f84c16e2 Uno.Foundation.6.7.135-wayland.7.nupkg +6.7.135-wayland.7 e2275b6721d4edd41531ce6122d99e3424c61f12abc23b28c918e91825ca1986 Uno.Foundation.Logging.6.7.135-wayland.7.nupkg +6.7.135-wayland.7 b16cdff7b4750de38f3914bcb6b8b6d0c1b18b0e71e1d8f99b8ceb7bbf646d90 Uno.UI.Adapter.Microsoft.Extensions.Logging.6.7.135-wayland.7.nupkg +6.7.135-wayland.7 9dc61cd23f0fe2553e388abbd677cf26098a2ce5d085494fdfadb396a02c13b3 Uno.WinUI.Runtime.Skia.6.7.135-wayland.7.nupkg +6.7.135-wayland.7 9c16928041cfb1622529107c7c9a274ffc456dea63e55d7f473b7b15bd85c3b1 Uno.WinUI.Runtime.Skia.X11.6.7.135-wayland.7.nupkg +6.7.135-wayland.7 6f23e3182482caf78734ec5ce7651f9c17b8a356186f68af670ec74eea51c130 Uno.WinUI.Runtime.Skia.Wayland.6.7.135-wayland.7.nupkg diff --git a/docs/linux-port/dnd.md b/docs/linux-port/dnd.md index 6f50cce8435b..1361f8ce1a0e 100644 --- a/docs/linux-port/dnd.md +++ b/docs/linux-port/dnd.md @@ -1,7 +1,8 @@ # Clipboard and drag & drop of files (W-CLIP) Uno 6.7's X11 host cannot publish file lists on the clipboard (`X11ClipboardExtension` offers text, URI and HTML only) and -`X11DragDropExtension.StartNativeDrag` throws `NotImplementedException`. Files works around both on its own X connection. +`X11DragDropExtension.StartNativeDrag` throws `NotImplementedException`. Files uses its own X connection for clipboard file lists, and +for outgoing drags when `FilesUnoX11NativeDrag=false` (the fork packages from `6.7.135-wayland.7` have Uno's own source, below). ## Pieces @@ -36,7 +37,7 @@ and runs a copy or move (cut) through `IFilesystemHelpers.CopyItemsAsync` / `Mov ## Outbound drag (XDND source, version 5) -`BaseLayoutPage.FileList_DragItemsStarting` calls `DesktopFileDragHelper.StartExternalDrag`. The host then follows the pointer with +On X11 with `FilesUnoX11NativeDrag=false`, `BaseLayoutPage.FileList_DragItemsStarting` calls `DesktopFileDragHelper.StartExternalDrag`. The host then follows the pointer with `XQueryPointer` (Uno's window keeps the implicit pointer grab, so no second grab is needed), finds the deepest XDND-aware window under it (skipping windows of this process, where Uno handles the drag), and sends `XdndEnter`, `XdndPosition`, `XdndDrop`/`XdndLeave`. Data is served from the `XdndSelection` selection (`text/uri-list`, `text/plain`). Action is copy, or move while Shift is held; the @@ -54,10 +55,9 @@ X connection (drag icon window from the DragView snapshot, copy/move/link/no-dro grab), routes the pointer back into Uno while it is over the window the drag started in, and offers `text/uri-list` plus the text targets. Files then only has to put the file list into `e.Data`, as on Wayland (`DesktopFileDragHelper.StartDrag`). -Released packages up to `6.7.135-wayland.6` do not contain it, so `FilesUnoX11NativeDrag` (Directory.Packages.props) defaults to -`false` and Files keeps starting its own X11 drag source. Set it to `true` together with the first `UnoWaylandVersion` that includes -the branch; `UNO_X11_NATIVE_DRAG` then skips `StartExternalDrag` on X11. The old source and `DesktopRuntimeGuards` stay as the path -for packages without it. +Packages from `6.7.135-wayland.7` (alpha8) contain it, and `FilesUnoX11NativeDrag` (Directory.Packages.props) defaults to +`true`: `UNO_X11_NATIVE_DRAG` skips `StartExternalDrag` on X11. Build with `-p:FilesUnoX11NativeDrag=false` against older packages +(up to `6.7.135-wayland.6`); Files then starts its own X11 drag source, and that path and `DesktopRuntimeGuards` stay for them. Verified with a LinuxFiles build using `-p:FilesUnoX11NativeDrag=true` and the branch's `Uno.UI.Runtime.Skia.X11.dll`: - private Xvfb with a GTK3 drop target: copy, Shift move, Escape, a rejecting target (no-drop cursor), drop onto a folder in the @@ -114,7 +114,7 @@ under `dbus-run-session` with a private `XDG_RUNTIME_DIR` (the socket path must ## LINUX-TODO -- `LINUX-TODO(dnd)`: (fixed by Uno's X11 source once `FilesUnoX11NativeDrag` is on) no drag icon or cursor feedback outside the window (the pointer is grabbed by Uno's window; changing it needs +- `LINUX-TODO(dnd)`: (fixed by Uno's X11 source since alpha8, `FilesUnoX11NativeDrag`) no drag icon or cursor feedback outside the window (the pointer is grabbed by Uno's window; changing it needs `XChangeActivePointerGrab` on that connection, or the Uno extension point). Dropping on a window that answers `XdndStatus` with "reject" silently does nothing. - `LINUX-TODO(dnd)`: the guard only covers file lists (`FileList_DragItemsStarting`). Drags from the sidebar, tabs and the shelf leave diff --git a/docs/linux-port/release-notes/0.1.0-alpha8.md b/docs/linux-port/release-notes/0.1.0-alpha8.md new file mode 100644 index 000000000000..315d457faaa2 --- /dev/null +++ b/docs/linux-port/release-notes/0.1.0-alpha8.md @@ -0,0 +1,88 @@ +# LinuxFiles 0.1.0-alpha8 + +Eighth public alpha of LinuxFiles, an independent Linux-only fork of [Files](https://github.com/files-community/Files) by the Files Community. Expect rough edges and keep backups of anything you care about. + +## Highlights + +- Sharper text on opaque windows with subpixel (LCD) antialiasing ([Uno 6.7.135-wayland.7](https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.7)). Subpixel order comes from compositor monitor info, then fontconfig, KDE `kdeglobals` `XftSubPixel` or GNOME settings; otherwise text stays grayscale. Rotated text stays grayscale. Set `UNO_SKIA_TEXT_LCD=auto|on|off` (default `auto`) or override the order with `UNO_SKIA_TEXT_RGBA=rgb|bgr|vrgb|vbgr|none`. Works alongside the alpha6 gamma fix; set `UNO_SKIA_TEXT_GAMMA=skia` to restore the previous gamma rendering. +- Real previews on Wayland and X11 ([#198](https://github.com/MemerGamer/LinuxFiles/pull/198)): audio/video plays via libmpv (optional `mpv` dependency), with play/pause, seek and volume. Nothing is decoded until Play; no network, scripts or playlists. HTML renders as a scrollable snapshot via optional `webkit2gtk-4.1`, with JavaScript off and no network in WebKit's bubblewrap sandbox; without the sandbox it falls back to text. The release notes page still uses the fallback. NixOS packages do not include mpv/WebKitGTK yet, so previews fall back there. +- X11 drag and drop with other apps: Uno's X11 host now starts drags itself (drag icon, copy/move/link cursors, Shift/Escape), and drops from Wayland apps such as Dolphin on KDE arrive on XWayland; before, such a drop was lost and could leave KWin's drag bridge stuck. `UNO_X11_DND_LOG=` traces XDND messages ([#197](https://github.com/MemerGamer/LinuxFiles/pull/197)). +- Uses the forked Uno **6.7.135-wayland.7** packages ([Uno 6.7.135-wayland.7](https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.7)), verified against committed SHA-256 pins. The Nix flake currently pins alpha7; it will be updated after the alpha8 release assets and hashes are published. + +Full notes: [CHANGELOG.md](https://github.com/MemerGamer/LinuxFiles/blob/main/CHANGELOG.md). + +## Install + +Requires x86_64 Linux with Wayland or X11/XWayland. Packages are self-contained. + +**Arch (AUR)**, which also installs the optional polkit root helper: + +```sh +yay -S linuxfiles-bin # or paru -S linuxfiles-bin +``` + +**AppImage**: + +```sh +chmod +x Files-x86_64.AppImage && ./Files-x86_64.AppImage +``` + +**Flatpak bundle** (root actions are off in the sandbox): + +```sh +flatpak install --user Files-x86_64.flatpak +flatpak run io.github.memergamer.LinuxFiles +``` + +**Nix** (flake, currently alpha7; plain installs have no root actions): + +```sh +nix run github:MemerGamer/LinuxFiles +``` + +The flake will be updated to alpha8 after the release assets and hashes are published. + +**Tarball**: + +```sh +tar xzf files-linux-x64.tar.gz && ./linux-x64/Files +``` + +To install the tarball for your user, run `scripts/linux/install-local.sh --from ` from a clone of the repository. `files-packaging.tar.gz` is for packagers. + +Native Wayland is preferred when available, with automatic X11 fallback if host probing fails. To force X11/XWayland, fully exit LinuxFiles and relaunch with the environment override: + +```sh +UNO_SKIA_HOST=x11 files +UNO_SKIA_HOST=x11 ./Files-x86_64.AppImage +flatpak run --env=UNO_SKIA_HOST=x11 io.github.memergamer.LinuxFiles +UNO_SKIA_HOST=x11 ./linux-x64/Files +``` + +For source builds, `-p:UseUnoWayland=false` or `scripts/linux/publish.sh --x11` uses upstream X11 packages instead of the Uno fork. + +## Checksums + +Download `SHA256SUMS` into the same folder as your download and run: + +```sh +sha256sum -c --ignore-missing SHA256SUMS +``` + +## Known limits + +- The native Wayland host is new; please report compositor, scaling, input or packaging issues. X11/XWayland remains available with `UNO_SKIA_HOST=x11`. +- Resizing is smoother but not yet perfectly fluid; layout still keeps the UI thread busy during a drag. +- LCD antialiasing needs an opaque window and a known subpixel order; other text, including rotated text, stays grayscale. Some toolbar glyphs have thin strokes that can look soft. Icons at display scales above 100 percent may still be soft. +- Preview backends are optional: audio/video needs mpv, and HTML needs WebKitGTK 4.1 with its bubblewrap sandbox. NixOS packages still use fallbacks, as does the release notes page. Touch-started drags are untested, and Wayland has no "link" drag action. +- Select-all in folders with 10,000 items is still slow due to Uno selection handling. +- AT-SPI accessibility is not implemented. Mica/Acrylic is not implemented on Linux. +- The Nix flake pins alpha7 until the alpha8 release assets and hashes are published. Plain Nix installs, AppImage and Flatpak keep root actions disabled. + +Report problems at https://github.com/MemerGamer/LinuxFiles/issues. + +## Credits + +LinuxFiles is built on [Files](https://github.com/files-community/Files) by the [Files Community](https://github.com/files-community) and its contributors, used under the MIT and Mozilla Public License 2.0 licenses. Changes to inherited files with MPL headers remain MPL-2.0; other code is MIT. This fork is not affiliated with or endorsed by the Files Community or Files team; the supported Files for Windows is at [files.community](https://files.community/). Thanks to [@lextm](https://github.com/lextm), the Uno Platform and SkiaSharp projects, and all contributors. See [NOTICE.md](https://github.com/MemerGamer/LinuxFiles/blob/main/NOTICE.md). + +This release includes AI-assisted development and review with Claude and OpenAI Codex. diff --git a/docs/linux-port/uno-fork-packages/wayland-packages.yml b/docs/linux-port/uno-fork-packages/wayland-packages.yml index b3c5391491de..b2032e2bb666 100644 --- a/docs/linux-port/uno-fork-packages/wayland-packages.yml +++ b/docs/linux-port/uno-fork-packages/wayland-packages.yml @@ -8,7 +8,7 @@ on: version: description: 'Fresh package version (X.Y.Z-wayland.N; never reuse a version)' required: true - default: '6.7.135-wayland.6' + default: '6.7.135-wayland.7' type: string permissions: diff --git a/docs/linux-port/wayland-packages.md b/docs/linux-port/wayland-packages.md index 0624646f7071..d0a15702a275 100644 --- a/docs/linux-port/wayland-packages.md +++ b/docs/linux-port/wayland-packages.md @@ -1,22 +1,22 @@ # Uno Wayland package distribution -The Linux desktop target defaults to `UseUnoWayland=true` (effective switch: `FilesUseUnoWayland`) and pins **6.7.135-wayland.6** in `Directory.Packages.props`. The fork is [MemerGamer/uno, branch wayland/host](https://github.com/MemerGamer/uno/tree/wayland/host); LinuxFiles does not build Uno during restore. Each revision is built once from a reviewed `wayland/host` commit, pinned in the repository pin file and published byte-for-byte as a public release; revision 6 is current. +The Linux desktop target defaults to `UseUnoWayland=true` (effective switch: `FilesUseUnoWayland`) and pins **6.7.135-wayland.7** in `Directory.Packages.props`. The fork is [MemerGamer/uno, branch wayland/host](https://github.com/MemerGamer/uno/tree/wayland/host); LinuxFiles does not build Uno during restore. Each revision is built once from a reviewed `wayland/host` commit, pinned in the repository pin file and published byte-for-byte as a public release; revision 7 is current. ## Release contract -Repository: **MemerGamer/uno** (public). Tag and GitHub Release: **uno-wayland-6.7.135-wayland.6**. For subsequent revisions, replace the version consistently with `X.Y.Z-wayland.N`; never use `latest`, a rolling tag, or replace assets for an existing version. +Repository: **MemerGamer/uno** (public). Tag and GitHub Release: **uno-wayland-6.7.135-wayland.7**. For subsequent revisions, replace the version consistently with `X.Y.Z-wayland.N`; never use `latest`, a rolling tag, or replace assets for an existing version. The release must be published (a public prerelease is fine), with these nine assets, preserving filename case: ```text -Uno.WinUI.6.7.135-wayland.6.nupkg -Uno.WinRT.6.7.135-wayland.6.nupkg -Uno.Foundation.6.7.135-wayland.6.nupkg -Uno.Foundation.Logging.6.7.135-wayland.6.nupkg -Uno.UI.Adapter.Microsoft.Extensions.Logging.6.7.135-wayland.6.nupkg -Uno.WinUI.Runtime.Skia.6.7.135-wayland.6.nupkg -Uno.WinUI.Runtime.Skia.X11.6.7.135-wayland.6.nupkg -Uno.WinUI.Runtime.Skia.Wayland.6.7.135-wayland.6.nupkg +Uno.WinUI.6.7.135-wayland.7.nupkg +Uno.WinRT.6.7.135-wayland.7.nupkg +Uno.Foundation.6.7.135-wayland.7.nupkg +Uno.Foundation.Logging.6.7.135-wayland.7.nupkg +Uno.UI.Adapter.Microsoft.Extensions.Logging.6.7.135-wayland.7.nupkg +Uno.WinUI.Runtime.Skia.6.7.135-wayland.7.nupkg +Uno.WinUI.Runtime.Skia.X11.6.7.135-wayland.7.nupkg +Uno.WinUI.Runtime.Skia.Wayland.6.7.135-wayland.7.nupkg SHA256SUMS ``` @@ -40,7 +40,7 @@ The trust anchor is [build/uno-wayland-packages.sha256](../../build/uno-wayland- For an offline mirror or locally built fork, use `build/fetch-uno-wayland.sh --import /path/to/nupkgs` (`--from` is an alias used by AUR). Only the eight nupkgs are required; if `SHA256SUMS` exists it is cross-checked. Explicit imports verify every supplied package even if the feed already holds a valid copy. The local build must match committed pins: an unreviewed build requires a fresh version and new reviewed pins. Do not repack an existing version or bypass verification with a custom feed. -`--version VERSION` requires a complete committed pin set for that version; use `-p:UnoWaylandVersion=VERSION` consistently for restore/build. `--feed DIR` changes the output location; supply a matching `-p:RestoreConfigFile=/path/to/custom.config` if it differs from the default feed. The SDK version-check exception is restricted to the reviewed `6.7.135-wayland.6` cohort and SDK base `6.7.135`; review that exception when updating versions. +`--version VERSION` requires a complete committed pin set for that version; use `-p:UnoWaylandVersion=VERSION` consistently for restore/build. `--feed DIR` changes the output location; supply a matching `-p:RestoreConfigFile=/path/to/custom.config` if it differs from the default feed. The SDK version-check exception is restricted to the reviewed `6.7.135-wayland.7` cohort and SDK base `6.7.135`; review that exception when updating versions. NuGet's global cache can bypass the verified feed. Run `build/clear-uno-wayland-cache.sh` before a separate restore/build (or use a fresh `NUGET_PACKAGES` directory). The CI workflows do this after restoring their caches; publishing and source AUR do it before publishing. The helper removes only the eight package ID/version directories for the configured cohort, preserving unrelated packages and upstream versions. diff --git a/packaging/linux/aur/linuxfiles/PKGBUILD b/packaging/linux/aur/linuxfiles/PKGBUILD index 095110104f05..011bdc39f415 100644 --- a/packaging/linux/aur/linuxfiles/PKGBUILD +++ b/packaging/linux/aur/linuxfiles/PKGBUILD @@ -14,7 +14,7 @@ makedepends=('dotnet-sdk>=10.0' 'git' 'clang' 'zlib' 'python') optdepends=('polkit: authenticated root actions' 'gvfs: network and MTP locations' 'gnome-disk-utility: format and manage drives' 'mpv: audio and video playback in the preview pane' 'webkit2gtk-4.1: rendered HTML previews') options=('!strip') # .NET single-file/self-contained binaries break when stripped # Generated from build/uno-wayland-packages.sha256; templates require complete pins. -_uno_version=6.7.135-wayland.6 +_uno_version=6.7.135-wayland.7 _uno_base="https://github.com/MemerGamer/uno/releases/download/uno-wayland-$_uno_version" source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/linux-v$pkgver.tar.gz" "$_uno_base/Uno.WinUI.$_uno_version.nupkg" diff --git a/packaging/linux/io.github.memergamer.LinuxFiles.metainfo.xml b/packaging/linux/io.github.memergamer.LinuxFiles.metainfo.xml index 02d6a36c0779..204b6aede45c 100644 --- a/packaging/linux/io.github.memergamer.LinuxFiles.metainfo.xml +++ b/packaging/linux/io.github.memergamer.LinuxFiles.metainfo.xml @@ -28,6 +28,13 @@ + + https://github.com/MemerGamer/LinuxFiles/releases/tag/linux-v0.1.0-alpha8 + +

Sharper LCD-antialiased text on opaque windows. Audio/video previews use optional mpv, with play/pause, seek and volume; decoding starts at Play, with no network, scripts or playlists. HTML previews use optional WebKitGTK 4.1 for scrollable snapshots in WebKit's bubblewrap sandbox, with JavaScript off and no network; without the sandbox they fall back to text (#198). Both work on Wayland and X11. X11 drag and drop with other apps: Uno's X11 host now starts drags itself with a drag icon and cursors, and drops from Wayland apps such as Dolphin on KDE arrive on XWayland (#197). Uses the forked Uno 6.7.135-wayland.7 packages (https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.7).

+

Known limits: the Wayland host is new. Rotated text stays grayscale. NixOS packages lack mpv/WebKitGTK; previews fall back there, and the release notes page still uses the fallback. Touch-started drags are untested; Wayland has no link drag action. Resizing is not perfectly fluid; select-all with 10,000 items remains slow. AT-SPI and Mica/Acrylic are unsupported. Nix pins alpha7 until alpha8 assets and hashes are published; plain Nix, AppImage and Flatpak keep root actions disabled.

+
+
https://github.com/MemerGamer/LinuxFiles/releases/tag/linux-v0.1.0-alpha7 diff --git a/src/Files.App/Files.App.csproj b/src/Files.App/Files.App.csproj index a9384147ef15..578b1e23fcd4 100644 --- a/src/Files.App/Files.App.csproj +++ b/src/Files.App/Files.App.csproj @@ -20,7 +20,7 @@ - 0.1.0-alpha7 + 0.1.0-alpha8 0.1.0.0 0.1.0.0 false