Kristen McWilliam ea3c3e719e
fix(Linux): specify application id (#154522)
This change sets the program name to the application ID, which helps various
systems like GTK and desktop environments map this running application to its
corresponding .desktop file. This ensures better integration by allowing the
application to be recognized beyond its binary name.

Notably, this is necessary on Wayland to map the running application window to
the desktop file, and therefore apply the correct icon.

I've tested that this works in both GNOME & KDE Wayland sessions.

Partially addresses https://github.com/flutter/flutter/issues/53229

Resolves https://github.com/flutter/flutter/issues/154521

## Icon Association

### Task switcher

The task switcher shows the application's icon in the bottom-middle. Before it only showed a generic Wayland icon.

| Before 	| After 	|
|--------	|-------	|
| ![before1](https://github.com/user-attachments/assets/6f9392f3-c6ff-4ea4-b71b-7186949e2afd) |![after1](https://github.com/user-attachments/assets/e70d394a-a880-42c9-8409-6b975fb59ce1) |

### Window Decorations

KDE shows the application's icon on the window decorations, at the top-left.  Before it only showed a generic Wayland icon.

| Before 	| After 	|
|--------	|-------	|
| ![before2](https://github.com/user-attachments/assets/8076ccf8-79c7-4a60-b12b-2fe1ccf9c393) | ![after2](https://github.com/user-attachments/assets/7a96def2-030c-45c4-9c3f-403256b5da07) |
2024-09-12 20:52:50 +00:00
..

This directory contains templates for flutter create.

The *_shared subdirectories provide files for multiple templates.

  • app_shared for app and skeleton.
  • plugin_shared for (method channel) plugin and plugin_ffi.

For example, there are two app templates: app (the counter app) and skeleton (the more advanced list view/detail view app).

  ┌────────────┐
  │ app_shared │
  └──┬──────┬──┘
     │      │
     │      │
     ▼      ▼
┌─────┐    ┌──────────┐
│ app │    │ skeleton │
└─────┘    └──────────┘

Thanks to app_shared, the templates for app and skeleton can contain only the files that are specific to them alone, and the rest is automatically kept in sync.