- Replace .map().unwrap_or(false) with .is_some_and()/.is_ok_and()
- Use path.display() instead of {:?} for user-facing messages
- Replace Option<Option<Vec<String>>> with GamescopeUpdate enum
- Replace manual parent-walking loops with .ancestors() iterators
- Simplify kill()/kill_all() signatures to return () instead of Result
- Use tokio::task::spawn_blocking instead of hand-rolled thread+oneshot
- Read /proc/self/status for UID instead of spawning id subprocess
- Build Exec= line directly in render_desktop instead of string-replace
- Bump PKGBUILD pkgrel to 6
Settings panel now shows the current version and a "Rebuild & Install
Latest" button that:
1. git pull from the embedded source directory (CARGO_MANIFEST_DIR)
2. makepkg -sf in packaging/
3. pkexec pacman -U (graphical polkit auth prompt)
Reports the installed version on success; surfaces the failing step on
error. Update runs off the UI thread so the window stays responsive.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The .font() builder method was silently failing to register the font
for named lookup. Using iced::font::load() as a startup Task ensures
the font is properly loaded before any text rendering occurs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Font version in iced_fonts 0.1.1 maps GearFill to U+F3E2, not U+F3F8.
Using the wrong codepoint rendered as a question-mark placeholder.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- setup.rs: remove raw prefix/expected path labels from install view;
hide URL input when official installer is pre-filled (show green tick
instead), revealing an override field only when needed
- gui.rs: drop raw exe path from scan result rows; add per-state colour
to status indicator (green=running, blue=installed, grey=not installed)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
iced_fonts 0.3 pulls in iced_widget 0.14 / iced_renderer 0.14 which
breaks release builds when used alongside iced 0.13. Pin to 0.1.x
which targets iced 0.12/0.13 and drop the unused iced_aw dependency.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add iced_aw + iced_fonts (bootstrap feature) to load the Bootstrap Icons
font. The settings button and settings header now render the gear-fill
glyph (U+F3F8) via text("\u{F3F8}").font("bootstrap-icons") instead of
the raw ⚙ character which was not in iced's bundled Inter font.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- detect::scan_games_in_prefix() walks drive_c/Program Files and
Program Files (x86) up to depth 4, skipping Windows system dirs,
the launcher's own exe, and already-configured games
- Empty game list now shows "No games added yet." with two actions:
· Scan for games — async scan of the Wine prefix, results appear
as a clickable list with + buttons to add each found exe
· Browse exe… — native file picker (zenity/kdialog) opening in
drive_c/, computes the relative path automatically
- Add-game form gains a Browse… button to pick exe from the prefix
- util::pick_file() added alongside pick_folder()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
GUI dashboard (gui.rs):
- Add detect, diagnose, settings panel, per-launcher games management
- Async Kill with optimistic UI state and rollback on error
- Settings: pick_list for Proton version, browse button for compat dir,
validation, per-launcher version badge
- Detect Installed button with scan results in footer
- Diagnose card with ✓/✗ checklist per launcher
Issue #1 — Use System Proton (proton.rs):
- Extend list_installed() to scan ~/.steam/root/compatibilitytools.d,
~/.local/share/Steam/compatibilitytools.d, and
/usr/share/steam/compatibilitytools.d in addition to the configured
compat dir; deduplicates by name so the same version never appears twice
Issue #4 — Remove Systemd Service (service.rs):
- Replace systemd unit management with XDG autostart:
install() writes ~/.config/autostart/umutray.desktop instead of a
systemd unit and never calls systemctl; uninstall() removes that file;
status() checks whether the autostart entry exists
- Update GUI service_is_installed() to check the XDG autostart path
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>