diff --git a/PKGBUILD b/PKGBUILD index fe219d8..eb468bd 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -8,7 +8,7 @@ arch=('any') url="https://github.com/silvernode/steam-dice" license=('GPL-2.0-only') depends=('python' 'python-pyqt6' 'python-requests' 'python-keyring' 'xdg-utils') -optdepends=('python-steam: instant genre filter via Steam'\''s local appinfo.vdf cache (otherwise falls back to rate-limited Steam API)') +optdepends=('python-steam: instant genre + tag filters via Steam'\''s local appinfo.vdf cache (without it, genres fall back to the rate-limited Steam API and tag filtering is unavailable)') makedepends=('git') provides=("$_pkgname") conflicts=("$_pkgname") diff --git a/README.md b/README.md index caf53a1..776b0ba 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,14 @@ A small desktop app that picks a random game from your Steam library and lets yo ## Features - Rolls a random game from your Steam library and displays its header art -- **Installed / Not installed / All** filter so you can limit rolls to games you can actually play right now +- Combinable filters in the top row, all AND'd together: + - **Install state** — All / Installed / Not installed, to limit rolls to games you can actually play right now + - **Genre** — official Steam genre (Action, Strategy, RPG, …) + - **Tags** — multi-select popup with a search box; a game must carry every selected tag to survive + - **Friends** — multi-select popup; picks games every selected friend also owns, perfect for "what should we play tonight?" - **Play** button launches the selected game immediately via Steam -- Settings dialog for your API key and Steam ID, persisted across sessions -- Refresh button with a 60-second cooldown to avoid hammering the Steam API +- Settings dialog for your API key and Steam ID, persisted across sessions (API key kept in your system keyring) +- Refresh button with a 60-second cooldown to avoid hammering the Steam API; refreshing also re-fetches selected friends' libraries - Clean Steam-themed dark UI built with PyQt6 - Wayland-native with X11 fallback @@ -19,18 +23,26 @@ A small desktop app that picks a random game from your Steam library and lets yo - Python 3.8+ - [PyQt6](https://pypi.org/project/PyQt6/) - [requests](https://pypi.org/project/requests/) +- [keyring](https://pypi.org/project/keyring/) — used to store your Steam API key in the system keyring +- `xdg-utils` — used to launch games via `steam://` URLs - Steam installed locally (for the "Installed" filter and launching games) -Install dependencies with pip: +**Optional:** [python-steam](https://pypi.org/project/steam/) enables instant genre **and** tag filters by reading Steam's local `appinfo.vdf` cache. Without it, genres fall back to a rate-limited Steam Store API fetch and tag filtering is unavailable (no API fallback exists for tags). + +Install with pip: ```bash -pip install PyQt6 requests +pip install PyQt6 requests keyring +# optional, for instant genre + tag filters +pip install steam ``` -Or with your distro's package manager, e.g. on Void Linux: +Or on Arch (mirrors what the [PKGBUILD](PKGBUILD) installs): ```bash -xbps-install python3-PyQt6 python3-requests +pacman -S python-pyqt6 python-requests python-keyring xdg-utils +# optional +pacman -S python-steam ``` ## Setup @@ -66,10 +78,23 @@ On first launch the settings dialog will open automatically. Enter your API key Once loaded: - Click the **dice** button to roll a random game -- Use the **filter dropdown** to restrict rolls to installed or uninstalled games +- Combine the four filter controls in the top row to narrow the pool: + - **All games / Installed / Not installed** + - **All genres** dropdown — pick one Steam genre + - **Tags ▾** — opens a popup with a search box and checkboxes; selected tags are AND'd, so a game must carry every checked tag + - **Friends ▾** — opens a popup listing your Steam friends; check any number to keep only games every selected friend also owns - Click **Play** to launch the rolled game via Steam -- Click the **refresh** button (⟳) to re-fetch your library (60s cooldown applies) -- Click the **settings** button (⚙) to update your credentials at any time +- Click ⟳ to re-fetch your library (60s cooldown applies); selected friends' libraries refresh too +- Click ⚙ to update your credentials at any time + +### Friends filter prerequisites + +For a friend to appear and contribute to filtering, the **friend's** Steam profile privacy must allow: + +- Friends list visibility (so you can see them in the popup at all) +- Game details visibility (so their owned-game list is fetchable) + +Friends with private game details show as `(private / 0 games)` in the popup and never narrow the result. ## License diff --git a/screenshot.jpg b/screenshot.jpg index d576077..8f422a6 100644 Binary files a/screenshot.jpg and b/screenshot.jpg differ