diff --git a/docs/linux-port/SHOWCASE.md b/docs/linux-port/SHOWCASE.md index 77a3f62fe96d..561310384963 100644 --- a/docs/linux-port/SHOWCASE.md +++ b/docs/linux-port/SHOWCASE.md @@ -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 @@ -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 @@ -50,7 +55,7 @@ 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) @@ -58,6 +63,6 @@ Properties window of a file (a separate window; parts of the main window behind ## 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". diff --git a/docs/linux-port/showcase/captured.txt b/docs/linux-port/showcase/captured.txt index f2c7ee287583..d2070e7c4e69 100644 --- a/docs/linux-port/showcase/captured.txt +++ b/docs/linux-port/showcase/captured.txt @@ -1,4 +1,4 @@ -commit: 4b3cf79e6 +commit: 8d4ccd67b date: 2026-10-05 captured: home captured: folder-details diff --git a/docs/linux-port/showcase/context-menu.png b/docs/linux-port/showcase/context-menu.png index e0565e695591..ec032c5aee30 100644 Binary files a/docs/linux-port/showcase/context-menu.png and b/docs/linux-port/showcase/context-menu.png differ diff --git a/docs/linux-port/showcase/folder-details.png b/docs/linux-port/showcase/folder-details.png index d993c33965bc..39a7655adc32 100644 Binary files a/docs/linux-port/showcase/folder-details.png and b/docs/linux-port/showcase/folder-details.png differ diff --git a/docs/linux-port/showcase/folder-grid.png b/docs/linux-port/showcase/folder-grid.png index a50648241dae..6244332701b0 100644 Binary files a/docs/linux-port/showcase/folder-grid.png and b/docs/linux-port/showcase/folder-grid.png differ diff --git a/docs/linux-port/showcase/home.png b/docs/linux-port/showcase/home.png index d769ac257ecc..0d2532527de4 100644 Binary files a/docs/linux-port/showcase/home.png and b/docs/linux-port/showcase/home.png differ diff --git a/docs/linux-port/showcase/properties.png b/docs/linux-port/showcase/properties.png index 7352bedfcf00..48f698946536 100644 Binary files a/docs/linux-port/showcase/properties.png and b/docs/linux-port/showcase/properties.png differ diff --git a/docs/linux-port/showcase/recycle-bin.png b/docs/linux-port/showcase/recycle-bin.png index c2c75c4b5983..02174dc6b58a 100644 Binary files a/docs/linux-port/showcase/recycle-bin.png and b/docs/linux-port/showcase/recycle-bin.png differ diff --git a/docs/linux-port/showcase/settings.png b/docs/linux-port/showcase/settings.png index 9ef6d5e64053..adcbdef2de5a 100644 Binary files a/docs/linux-port/showcase/settings.png and b/docs/linux-port/showcase/settings.png differ diff --git a/scripts/linux/showcase.sh b/scripts/linux/showcase.sh index 017d93d1003d..7459788a7e64 100755 --- a/scripts/linux/showcase.sh +++ b/scripts/linux/showcase.sh @@ -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= 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 @@ -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" @@ -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= 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" <"\$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"