Master: "idk why you have a Teams/Lutris section. When I am under
session I should be able to select a list of games so you know how to
launch the correct game, currently you lack that list and drop down
option."
Implementation:
- src/games.rs (new module):
* Game struct: { name, exe, args, env, cwd, note }.
* load_all(path) -> Vec<Game>; returns empty list when the file
does not exist (operator has not configured any games yet).
* find(games, name) -> Option<Game> (case-sensitive, O(n)).
* save_all(path, games) for the GUI Add-Game form.
* default_path() -> ~/.config/enboxer/games.yaml.
* Three unit tests (load_missing empty, find_by_name, YAML roundtrip).
- src/lib.rs: pub mod games registered.
- src/session.rs:
* New IPC verb "launch-game NAME": spawns the picked game entry,
records the child PID into Session.spawned_pids so refresh_slots
matches the resulting window via the process-tree walk (Item 3).
* New IPC verb "list-games": returns the joined names so the GUI
can populate the dropdown without a second command.
* launch_game function: tokio::process::Command-equivalent
std::process::Command spawn, child PID captured via child.id(),
dropped (OS keeps the process running; spawned_pids is the
only thing we need).
- examples/games.yaml: shipped with an empty `games: []` plus a
commented-out WoW example so operators have a starting point.
cargo test 103/103 (3 new games tests + the 100 from earlier);
clippy clean.