Add desktop shortcuts for installed games.

This commit is contained in:
Storm Dragon committed 2026-11-05 15:53:23 -05:00
1 parent fbafaed846
commit 40803a7162
4 files changed
+152 -19

No files matched your search

@@ -1,6 +1,6 @@
# Linux Game Manager Core Map
Last refreshed: 2026-10-31
Last refreshed: 2026-11-05
## Top-Level Structure
@@ -9,6 +9,7 @@ Last refreshed: 2026-10-31
- `.launch/`: Per-game launch scripts (`.game`) and runnable entries (`.sh`, usually symlinks).
- `.update/`: Optional per-game update scripts expected to define `run_update()`.
- `.includes/ipfs.sh`: Central associative array of IPFS download URLs, expanded against the configured gateway at startup.
- `.includes/desktop.sh`: Game-specific desktop shortcuts with Desktop Entry and Exec argument escaping.
- `.includes/wickets.sh`: Shared Wickets installer/updater; resolves the latest GitHub release and preserves portable saves.
- `speech/speak_window_title.sh`: Accessibility helper for announcing focused window titles.
- `README.md`: Project summary and high-level behavior notes.
@@ -43,6 +44,10 @@ python3 .codex/skills/linux-game-manager-dev/scripts/audit_game_catalog.py
- `game_launcher` enumerates `.launch/*.sh` entries.
- Entries with first line `#//` are skipped.
- Selected launcher is sourced/executed.
- The launch menu offers Desktop Shortcut in both Yad and dialog. It writes an executable `~/Desktop/linux-game-manager-<Game Name>.desktop`, refuses to overwrite existing files, and returns to the menu. The shortcut runs the manager with `-l` and sets its working directory to the repository root.
- `game_launcher <Game Name>` skips the menu and selects an installed, enabled entry by its exact display name. Missing or disabled entries fail with a message. Launcher discovery uses `scriptRoot` even when called from another working directory.
- `ui_menu --desktop-shortcut` adds the launch-menu buttons and returns status 3 for shortcut creation. Ordinary `ui_menu` calls keep their standard buttons. Both modes preserve cancellation status and discard any cancelled selection.
- Run `bash tests/game_shortcut_tests.sh` for isolated menu, direct-launch, CLI, and Desktop Entry checks; these require Python with PyGObject and `desktop-file-validate`. They do not launch installed games or use real user state. Live keyboard, screen-reader, and real-game acceptance remains separate.
- Monkey Spank runs from its repository directory so relative sound and text assets resolve; its explicit directory assignment also identifies the removal root.
- Text-terminal launchers can fall back to `xterm`, which inherits the requested working directory before executing the game command.
@@ -60,6 +65,7 @@ python3 .codex/skills/linux-game-manager-dev/scripts/audit_game_catalog.py
## CLI Surface
- `-i`: install game
- `-l <Game Name>`: launch an installed, enabled game directly by exact menu name
- `-r`: remove game
- `-u`: update game
- `-t`: show number of available games