You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add new UI mode triggered by comma (,) that shows installed Steam games
with fuzzy search. Games are launched via steam://rungameid/ protocol.
Features:
- SteamScanner service parses appmanifest_*.acf files
- New -l/--steam-library flag for custom Steam library path
- Spanish localization for new strings
Co-Authored-By: Claude Opus 4.5 <[email protected]>
@@ -75,10 +77,11 @@ The entry point is `src/main.py` which:
75
77
76
78
**UIManager** (`src/managers/ui_manager.py`)
77
79
- Manages the wxPython UI frame and controls
78
-
- Handles three UI modes (UIMode enum):
80
+
- Handles four UI modes (UIMode enum):
79
81
- COMMANDS (default): Shows saved commands
80
82
- SNIPPETS (activated by "-"): Shows text snippets
81
83
- CLIPBOARD (activated by "?"): Shows clipboard history
84
+
- STEAM (activated by ","): Shows installed Steam games
82
85
- Toggle back to COMMANDS mode with "."
83
86
- Provides dialogs for adding/editing commands and snippets
84
87
@@ -95,6 +98,10 @@ The entry point is `src/main.py` which:
95
98
-`clipboard_history.py`: Background thread monitoring clipboard with pyperclip
96
99
- Polls every 0.1s, maintains up to 50 items
97
100
- Persists to `clipboard_history.json`
101
+
-`steam_scanner.py`: Scans Steam library for installed games
102
+
- Parses `appmanifest_*.acf` files in steamapps folder
103
+
- Extracts game names and appids
104
+
- Launches games via `steam://rungameid/APPID` URL
98
105
99
106
### Data Model
100
107
@@ -129,6 +136,17 @@ The entry point is `src/main.py` which:
129
136
}
130
137
```
131
138
139
+
**Steam game structure** (in-memory):
140
+
```python
141
+
{
142
+
"name": "game name", # lowercase for matching
143
+
"shortcut": "", # not used for Steam games
144
+
"id": "uuid",
145
+
"appid": "620", # Steam app ID
146
+
"type": "steam"
147
+
}
148
+
```
149
+
132
150
### Search Algorithm
133
151
Commands and clipboard items use difflib.get_close_matches with 0.6 cutoff. Shortcuts provide exact match priority (triggers "match" sound vs "type" sound).
0 commit comments