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
17 changes: 11 additions & 6 deletions docs/linux-port/SHOWCASE.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
# Linux port showcase

Files running natively on Linux (Uno Platform, Skia, X11). The screenshots are taken headlessly from a sandboxed
LinuxFiles (the Files app running natively on Linux) (Uno Platform, Skia, X11). The screenshots are taken headlessly from a sandboxed
home directory with synthetic drives (random labels, made-up sizes), so they never show the real machine's files, drives or user name.

Last updated: commit `4b3cf79e6`, 2026-10-05 (see `showcase/captured.txt` for the exact shot list).
The shots use the public "Win11" icon theme, selected the way the app does on a real desktop (kdeglobals `[Icons] Theme=`, GTK settings) inside the sandbox. The theme is copied into the sandbox only and is not part of this repository. Folder icons in the file lists render blank with this theme; the Home and sidebar icons come from it.

Last updated: commit `8d4ccd67b`, 2026-10-05 (see `showcase/captured.txt` for the exact shot list).

## What works today

Taken from the merged state of `linux/main` and [PLAN.md](PLAN.md).
Taken from the merged state of `main` and [PLAN.md](PLAN.md).

- [x] App launches on Linux with the full Files shell: Home page, sidebar, tabs, toolbar, Settings
- [x] Folder listing in Details and Grid/Cards layouts, with sorting and selection
Expand All @@ -18,11 +20,14 @@ Taken from the merged state of `linux/main` and [PLAN.md](PLAN.md).
- [x] Properties window with POSIX permissions, hashes and details pages
- [x] Single instance, `org.freedesktop.FileManager1`, recent files, xattr tags, D-Bus notifications, pkexec elevation
- [x] UDisks2 volumes and GVfs network locations in Drives, sidebar, widgets, format and eject
- [x] Phase 4 complete
- [x] Archive browsing (open a zip like a folder, with the Extract actions in the context menu)
- [x] Grid layout virtualization (wrapping Cards grid instead of a single sideways row)
- [x] Renamed to LinuxFiles

## Not working yet

- [ ] Some UI text still says "Windows" (for example "Open in Windows Terminal")
- [ ] Grid layout shows a single row that scrolls sideways, with oversized icons
- [ ] Network locations stay empty without a GVfs session
- [ ] No native Wayland (runs through XWayland), no AT-SPI accessibility

Expand Down Expand Up @@ -50,14 +55,14 @@ Settings page.

![Context menu](showcase/context-menu.png)

Right-click menu on a file.
Right-click menu on an archive, with Extract and the Win11 icons.

![Properties](showcase/properties.png)

Properties window of a file (a separate window; parts of the main window behind it are stale because the headless X server has no window manager).

## How to regenerate

Run `scripts/linux/showcase.sh` (add `--no-build` to reuse the existing build). It uses `scripts/linux/headless-run.sh`,
Run `scripts/linux/showcase.sh` (add `--no-build` to reuse the existing build; set `SHOWCASE_ICON_THEME=Win11` to render with an installed icon theme, copied read-only into the sandbox). It uses `scripts/linux/headless-run.sh`,
so nothing touches the real display, and rewrites `docs/linux-port/showcase/`. The synthetic drives come from `scripts/linux/showcase-drives.txt`.
Set `SHOWCASE_SKIP="name name"` to record a regressed shot as "not yet working".
2 changes: 1 addition & 1 deletion docs/linux-port/showcase/captured.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
commit: 4b3cf79e6
commit: 8d4ccd67b
date: 2026-10-05
captured: home
captured: folder-details
Expand Down
Binary file modified docs/linux-port/showcase/context-menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/linux-port/showcase/folder-details.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/linux-port/showcase/folder-grid.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/linux-port/showcase/home.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/linux-port/showcase/properties.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/linux-port/showcase/recycle-bin.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/linux-port/showcase/settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 19 additions & 1 deletion scripts/linux/showcase.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#
# Usage: scripts/linux/showcase.sh [--no-build] [-s startup-seconds]
# --no-build reuse the existing build in src/Files.App/bin/Debug/net10.0-desktop
# Env: SHOWCASE_ICON_THEME=<name> renders with that installed icon theme (copied read-only into the sandbox).
# A shot that is missing or identical to the previous frame is recorded as "not yet working".
set -euo pipefail

Expand All @@ -29,7 +30,7 @@ fi
work="${TMPDIR:-/tmp}/files-showcase"
rm -rf "$work"
mkdir -p "$work"
trap 'rm -rf "$work"' EXIT
trap 'chmod -R u+w "$work" 2>/dev/null; rm -rf "$work"' EXIT
shots="$work/shots"
mkdir -p "$shots"

Expand Down Expand Up @@ -83,6 +84,23 @@ printf '[Trash Info]\nPath=%s\nDeletionDate=2026-01-15T09:30:00\n' "$d/old-draft
# Fixed timestamps keep the Date modified column stable
find "$d" "$pics" -exec touch -d '2026-01-10 12:00:00' {} +
SEED
# Optional: SHOWCASE_ICON_THEME=<name> copies that installed icon theme into the sandbox HOME and selects it
# through the same settings the app reads on a real desktop (kdeglobals, gtk-3.0/gtk-4.0 settings.ini).
if [[ -n "${SHOWCASE_ICON_THEME:-}" ]]; then
[[ "$SHOWCASE_ICON_THEME" =~ ^[A-Za-z0-9._-]+$ ]] || { echo "invalid SHOWCASE_ICON_THEME" >&2; exit 2; }
theme_src=""
for base in "$HOME/.local/share/icons" "$HOME/.icons" /usr/local/share/icons /usr/share/icons; do
[[ -d "$base/$SHOWCASE_ICON_THEME" ]] && { theme_src="$base/$SHOWCASE_ICON_THEME"; break; }
done
[[ -n "$theme_src" ]] || { echo "icon theme not found: $SHOWCASE_ICON_THEME" >&2; exit 2; }
cat >>"$seed" <<THEME
mkdir -p "\$home/.local/share/icons" "\$home/.config/gtk-3.0" "\$home/.config/gtk-4.0"
cp -rP "$theme_src" "\$home/.local/share/icons/$SHOWCASE_ICON_THEME"
find "\$home/.local/share/icons/$SHOWCASE_ICON_THEME" -type f -exec chmod a-w {} +
printf '[Icons]\nTheme=%s\n' "$SHOWCASE_ICON_THEME" >"\$home/.config/kdeglobals"
printf '[Settings]\ngtk-icon-theme-name=%s\n' "$SHOWCASE_ICON_THEME" | tee "\$home/.config/gtk-3.0/settings.ini" >"\$home/.config/gtk-4.0/settings.ini"
THEME
fi
chmod +x "$seed"

home="$shots/home"
Expand Down
Loading