Skip to content

[WIP] Feat/firmaware upgrade window #237 #966

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 15 commits into
base: master
Choose a base branch
from

Conversation

kacperpaczos
Copy link

Status: WIP, ready for review. So far tested only in VirtualBox – I need help testing on real hardware (USB, Thunderbolt, NVMe/SSD, devices with Secure Boot/TPM, reboot/shutdown scenarios, etc.).

In this PR, I’ve created the Firmware window in mintupdate (GTK3) to get as close as possible to GNOME Firmware’s UX and feature set, while staying within GTK3 limitations.

What’s new:

  • Device details – name, vendor, version + extra fields (Minimum Version, Bootloader Version, Branch, Install Duration, Flashes Left, Lock Status). GUIDs and flags are placed in expanders, GUIDs shown in monospace. Device flags and problems are mapped to readable text.
  • Release list + Release Details dialog – includes Summary, XML-cleaned Description, Vendor, Filename, Size, Protocol, Remote/AppStream ID, License, Flags, Install Duration, Update Message, Categories, Issues, Checksums. LicenseRef-proprietary is displayed as “Proprietary”.
  • Installation flow – confirmation of action type (Upgrade/Downgrade/Reinstall), info about whether the device will be usable during the update. Warnings for Alternate Branch and Full Disk Encryption (FDE). Handles FwupdRequest after install (Action Required / Further Action Required). Post-install prompt for Reboot/Shutdown based on device flags.
  • Install from file (.cab) – GNOME Firmware-like flow: get_details_async(path) → select device → confirm → install_async or CLI fallback.
  • LVFS – enable/disable LVFS remote (modify_remote_async), refresh (refresh_remote_async), and “Upload Device List” (JSON preview + copy + upload via API or CLI fallback).
  • Progress and statusesGtkRevealer + GtkProgressBar, extended mapping for Fwupd.Status (Downloading, Installing, Device Read/Write/Erase/Verify, Waiting for auth/user, etc.).
  • Actions and shortcuts – menubar (for visible accelerators), shortcuts: Ctrl+R (refresh), Ctrl+I (install from file).
  • Fallbacks – where API is unavailable (GIR/fwupd version mismatch), fallback to CLI (fwupdmgr via pkexec). Defensive coding for multiple fwupd/GIR versions.

Limitations:

  • GTK3 – missing some components from libadwaita/GTK4;
  • No coverage on physical hardware yet – this is where I need help.

Modified files:

  • mintupdate/usr/lib/linuxmint/mintUpdate/firmwarewindow.py
  • mintupdate/usr/share/linuxmint/mintupdate/firmware.ui

Thanks for reviewing! Any feedback on UX, GNOME Firmware compatibility, and real hardware testing is very welcome.

…xec, FeatureFlags type fix; UI empty state for releases; menu icon
…stall duration, flashes left, lock status) and populate from Fwupd.Device
…) and progress bar; wire remotes fetch and progress updates
…DE), and post-install reboot/shutdown prompts
…ls formatting; add device-list dialog and wire buttons
…ce-list upload (fallback to CLI); track LVFS remote and report metadata
…aligned layout (sizegroups next); improve UX messages
…lement install-from-file via get_details_async; extend status mapping
@kacperpaczos
Copy link
Author

Fix #237

@mtwebster
Copy link
Member

Hi, please don't include any locale or .pycache files (this PR should only have 3 files changed).

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants