Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions .github/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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. Alpha6 prefers native Wayland through the forked Uno 6.7.135-wayland.5 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. Alpha7 prefers native Wayland through the forked Uno 6.7.135-wayland.6 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).

Expand All @@ -13,7 +13,7 @@ Based on [Files](https://github.com/files-community/Files) by the [Files Communi
## Features

- Tabs, Home and sidebar navigation, Details/List/Grid/Cards layouts, sorting and grouped views.
- Copy, move, rename, delete, trash and restore; file clipboard and X11 drag and drop.
- Copy, move, rename, delete, trash and restore; file clipboard and native Wayland or X11 drag and drop.
- Archive browsing and extraction, search, file previews, tags and a Properties window with POSIX permissions.
- UDisks2 drive mounting and ejecting, GVfs network/MTP locations, desktop file launchers and KDE service menus.
- Open with, templates, terminals, desktop portal pickers and FileManager1 integration.
Expand All @@ -23,7 +23,7 @@ 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. WebView and MediaPlayer are unsupported on Wayland, and outgoing drag-and-drop to other applications is not implemented there. Force X11/XWayland with `UNO_SKIA_HOST=x11`; see [Troubleshooting](#troubleshooting).
- 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.
- 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.
Expand All @@ -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-alpha6)
[![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)

> [!NOTE]
> **0.1.0-alpha6 is the sixth 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-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).

Grab the assets from the [0.1.0-alpha6 release page](https://github.com/MemerGamer/LinuxFiles/releases/tag/linux-v0.1.0-alpha6). 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-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.

### Arch Linux (AUR)

Expand All @@ -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 alpha6, 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 alpha6, which supports this opt-in; it will be updated to alpha7 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-alpha6/Files-x86_64.AppImage
curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/linux-v0.1.0-alpha7/Files-x86_64.AppImage
chmod +x Files-x86_64.AppImage
./Files-x86_64.AppImage
```
Expand All @@ -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-alpha6/Files-x86_64.flatpak
curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/linux-v0.1.0-alpha7/Files-x86_64.flatpak
flatpak install --user ./Files-x86_64.flatpak
flatpak run io.github.memergamer.LinuxFiles
```
Expand All @@ -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-alpha6/files-linux-x64.tar.gz
curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/linux-v0.1.0-alpha7/files-linux-x64.tar.gz
tar xzf files-linux-x64.tar.gz
./linux-x64/Files # run it in place
```
Expand Down Expand Up @@ -138,7 +138,7 @@ curl -LO https://github.com/MemerGamer/LinuxFiles/releases/download/nightly/Linu

## Troubleshooting

**Choose a host (alpha6):** `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 (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).

**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).

Expand Down
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,29 @@ LinuxFiles is an independent Linux-only fork of [Files](https://github.com/files

## Unreleased

## 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
https://github.com/MemerGamer/LinuxFiles/issues.

### Highlights

- Drag files out of LinuxFiles into Dolphin, terminals, browsers and file upload controls on Wayland. The native Wayland drag source offers file links and text, displays a drag icon, and reports the target's copy or move action back to LinuxFiles ([Uno 6.7.135-wayland.6](https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.6), [#194](https://github.com/MemerGamer/LinuxFiles/pull/194)). File links identify the files being dragged; they do not add a link drag action to Wayland.
- Drops from other applications into LinuxFiles now receive file paths on Wayland, so a drop carries the paths of files supplied by the source Wayland application ([Uno 6.7.135-wayland.6](https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.6), [#194](https://github.com/MemerGamer/LinuxFiles/pull/194)). Both outgoing drags and incoming drops use the native Wayland host; X11/XWayland keeps its existing drag-and-drop path.
- Previews have Wayland fallbacks: HTML shows text with "Open with default app", and audio/video shows a thumbnail and details with Open. Release notes open in the browser. X11 keeps embedded web and media views ([#192](https://github.com/MemerGamer/LinuxFiles/pull/192)). Use the default application to view or play the file.
- Renaming in the Cards layout no longer shows a large dark box; the editor sits in the filename slot ([#193](https://github.com/MemerGamer/LinuxFiles/pull/193)).
- Uses the forked Uno **6.7.135-wayland.6** packages, verified against committed SHA-256 pins. The Nix flake currently pins alpha6; it will be updated after the alpha7 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.
- Text uses greyscale antialiasing; subpixel (LCD) text is not available on Wayland yet. Some toolbar glyphs have thin strokes that can look soft. Icons at display scales above 100 percent may still be soft.
- Embedded web/media views remain unsupported on Wayland; the preview fallbacks above apply. X11/XWayland outgoing drag keeps the existing X11 path. 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 alpha6 until the alpha7 release assets and hashes are published. Plain Nix installs, AppImage and Flatpak keep root actions disabled.

## 0.1.0-alpha6 - 2026-10-14

Sixth public alpha, focused on resize smoothness, text and icon sharpness on Wayland. Expect rough edges and keep backups. Report issues at
Expand Down
4 changes: 2 additions & 2 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
</ItemGroup>
<!-- Native Wayland host from the MemerGamer/uno fork; see docs/linux-port/wayland-packages.md -->
<PropertyGroup>
<UnoWaylandVersion Condition="'$(UnoWaylandVersion)' == ''">6.7.135-wayland.5</UnoWaylandVersion>
<UnoWaylandVersion Condition="'$(UnoWaylandVersion)' == ''">6.7.135-wayland.6</UnoWaylandVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(FilesUseUnoWayland)' == 'true'">
<RestoreConfigFile Condition="'$(RestoreConfigFile)' == ''">$(MSBuildThisFileDirectory)nuget.wayland.config</RestoreConfigFile>
Expand All @@ -63,7 +63,7 @@
</ItemGroup>
<!-- Uno.Sdk rejects any Uno.WinUI other than its own release (UNOB0005); allow only the reviewed fork cohort with its unchanged 6.7.135 SDK base.
Runs before UnoSdkVersionCheck evaluates its condition, which is the only user of PkgUno_WinUI. -->
<Target Name="_FilesAllowUnoWaylandPackages" BeforeTargets="BeforeBuild;ResolveReferences" Condition="'$(FilesUseUnoWayland)' == 'true' And '$(UnoWaylandVersion)' == '6.7.135-wayland.5' And '$(UnoVersion)' == '6.7.135' And $([System.IO.Path]::GetFileName($(PkgUno_WinUI))) == '$(UnoWaylandVersion)'">
<Target Name="_FilesAllowUnoWaylandPackages" BeforeTargets="BeforeBuild;ResolveReferences" Condition="'$(FilesUseUnoWayland)' == 'true' And '$(UnoWaylandVersion)' == '6.7.135-wayland.6' And '$(UnoVersion)' == '6.7.135' And $([System.IO.Path]::GetFileName($(PkgUno_WinUI))) == '$(UnoWaylandVersion)'">
<PropertyGroup>
<PkgUno_WinUI />
</PropertyGroup>
Expand Down
8 changes: 8 additions & 0 deletions build/uno-wayland-packages.sha256
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,11 @@
6.7.135-wayland.5 35ffdcfc6cda3381376afe6edb1429dde4e8121308b79408d47022b2aaae144b Uno.WinUI.Runtime.Skia.6.7.135-wayland.5.nupkg
6.7.135-wayland.5 7fb7a565de8a62ca109226bf6537644f8335f3eaecc28bec3f219ffca3fd85db Uno.WinUI.Runtime.Skia.X11.6.7.135-wayland.5.nupkg
6.7.135-wayland.5 eb162da7f1a55cdd0c6ed80883c831f8d9eb307dc1bd03412709ac3bf96b0d3e Uno.WinUI.Runtime.Skia.Wayland.6.7.135-wayland.5.nupkg
6.7.135-wayland.6 e26f3684fed7b907258d5b8bdca6d60231ac65b721d119e335899116fcff4459 Uno.WinUI.6.7.135-wayland.6.nupkg
6.7.135-wayland.6 ff717935b75820f60792852f42bc21d9459c36c227346a956b45d747c990470b Uno.WinRT.6.7.135-wayland.6.nupkg
6.7.135-wayland.6 b75f27464d1edd2901069ba4c0c279ca1d8f8ee3817dde8bf955b2727236a730 Uno.Foundation.6.7.135-wayland.6.nupkg
6.7.135-wayland.6 93bba6d2a12b011560a82b8eb8745c2ce1359e8d8020443c4d25f131755f2426 Uno.Foundation.Logging.6.7.135-wayland.6.nupkg
6.7.135-wayland.6 e77d7ee271bde3ff638801bd7b6f088c797642c823ae4bea967880226f0c45f2 Uno.UI.Adapter.Microsoft.Extensions.Logging.6.7.135-wayland.6.nupkg
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
89 changes: 89 additions & 0 deletions docs/linux-port/release-notes/0.1.0-alpha7.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# LinuxFiles 0.1.0-alpha7

Seventh 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

- Drag files out of LinuxFiles into Dolphin, terminals, browsers and file upload controls on Wayland. The native Wayland drag source offers file links and text, displays a drag icon, and reports the target's copy or move action back to LinuxFiles ([Uno 6.7.135-wayland.6](https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.6), [#194](https://github.com/MemerGamer/LinuxFiles/pull/194)). File links identify the files being dragged; they do not add a link drag action to Wayland.
- Drops from other applications into LinuxFiles now receive file paths on Wayland, so a drop carries the paths of files supplied by the source Wayland application ([Uno 6.7.135-wayland.6](https://github.com/MemerGamer/uno/releases/tag/uno-wayland-6.7.135-wayland.6), [#194](https://github.com/MemerGamer/LinuxFiles/pull/194)). Both outgoing drags and incoming drops use the native Wayland host; X11/XWayland keeps its existing drag-and-drop path.
- Previews have Wayland fallbacks: HTML shows text with "Open with default app", and audio/video shows a thumbnail and details with Open. Release notes open in the browser. X11 keeps embedded web and media views ([#192](https://github.com/MemerGamer/LinuxFiles/pull/192)). Use the default application to view or play the file.
- Renaming in the Cards layout no longer shows a large dark box; the editor sits in the filename slot ([#193](https://github.com/MemerGamer/LinuxFiles/pull/193)).
- Uses the forked Uno **6.7.135-wayland.6** packages, verified against committed SHA-256 pins. The Nix flake currently pins alpha6; it will be updated after the alpha7 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 alpha6; plain installs have no root actions):

```sh
nix run github:MemerGamer/LinuxFiles
```

The flake will be updated to alpha7 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 <path to linux-x64>` 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.
- Text uses greyscale antialiasing; subpixel (LCD) text is not available on Wayland yet. Some toolbar glyphs have thin strokes that can look soft. Icons at display scales above 100 percent may still be soft.
- Embedded web/media views remain unsupported on Wayland; the preview fallbacks above apply. X11/XWayland outgoing drag keeps the existing X11 path. 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 alpha6 until the alpha7 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.
Loading
Loading