Compare commits

3 Commits
Author SHA1 Message Date
mollusk 3e84c3a210 Merge branch 'feature/store-page-button' 2026-05-09 19:35:12 -04:00
molluskandClaude Opus 4.7 2221636e18 Add Store Page button next to Play
Opens https://store.steampowered.com/app/<appid>/ via xdg-open for
the currently rolled game. Toggles visibility in lockstep with Play.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 19:35:10 -04:00
molluskandClaude Opus 4.7 b43eb11924 Use relative path for README screenshot
The previous absolute URL pointed at the Gitea instance and was
proxied by GitHub's camo image cache, which kept serving an old
copy after the screenshot was updated. A relative path lets each
forge (GitHub, Gitea) resolve and serve the image from its own
repo blob, bypassing camo.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 21:17:18 -04:00
2 changed files with 36 additions and 5 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
A small desktop app that picks a random game from your Steam library and lets you launch it directly. Stop staring at your backlog — let the dice decide. A small desktop app that picks a random game from your Steam library and lets you launch it directly. Stop staring at your backlog — let the dice decide.
![Steam Dice screenshot](https://gitbutter.xyz/mollusk/steam-dice/raw/branch/main/screenshot.jpg) ![Steam Dice screenshot](screenshot.jpg)
## Features ## Features
+35 -4
View File
@@ -1157,12 +1157,13 @@ class SteamDice(QMainWindow):
self.image_label.setVisible(False) self.image_label.setVisible(False)
layout.addWidget(self.image_label) layout.addWidget(self.image_label)
# Play button # Action buttons: Play | Store Page
self.play_btn = QPushButton(" Play")
self.play_btn.setIcon(QIcon.fromTheme("media-playback-start"))
play_font = QFont() play_font = QFont()
play_font.setPointSize(11) play_font.setPointSize(11)
play_font.setBold(True) play_font.setBold(True)
self.play_btn = QPushButton(" Play")
self.play_btn.setIcon(QIcon.fromTheme("media-playback-start"))
self.play_btn.setFont(play_font) self.play_btn.setFont(play_font)
self.play_btn.setFixedHeight(34) self.play_btn.setFixedHeight(34)
self.play_btn.setCursor(Qt.CursorShape.PointingHandCursor) self.play_btn.setCursor(Qt.CursorShape.PointingHandCursor)
@@ -1179,7 +1180,31 @@ class SteamDice(QMainWindow):
""") """)
self.play_btn.setVisible(False) self.play_btn.setVisible(False)
self.play_btn.clicked.connect(self._launch_game) self.play_btn.clicked.connect(self._launch_game)
layout.addWidget(self.play_btn)
self.store_btn = QPushButton(" Store Page")
self.store_btn.setIcon(QIcon.fromTheme("applications-internet"))
self.store_btn.setFont(play_font)
self.store_btn.setFixedHeight(34)
self.store_btn.setCursor(Qt.CursorShape.PointingHandCursor)
self.store_btn.setStyleSheet("""
QPushButton {
background-color: #316282;
color: #c6d4df;
border: none;
border-radius: 4px;
padding: 0 16px;
}
QPushButton:hover { background-color: #4082a3; }
QPushButton:pressed { background-color: #1f4257; }
""")
self.store_btn.setVisible(False)
self.store_btn.clicked.connect(self._open_store_page)
action_row = QHBoxLayout()
action_row.setContentsMargins(0, 0, 0, 0)
action_row.addWidget(self.play_btn)
action_row.addWidget(self.store_btn)
layout.addLayout(action_row)
# Status / loading text # Status / loading text
self.status_label = QLabel("Loading library…") self.status_label = QLabel("Loading library…")
@@ -1651,6 +1676,7 @@ class SteamDice(QMainWindow):
self.image_label.setText("Loading…") self.image_label.setText("Loading…")
self.image_label.setVisible(True) self.image_label.setVisible(True)
self.play_btn.setVisible(False) self.play_btn.setVisible(False)
self.store_btn.setVisible(False)
self.status_label.setText("") self.status_label.setText("")
if self.image_thread is not None: if self.image_thread is not None:
@@ -1662,6 +1688,7 @@ class SteamDice(QMainWindow):
def _on_image_loaded(self, pixmap): def _on_image_loaded(self, pixmap):
self.dice_btn.setEnabled(True) self.dice_btn.setEnabled(True)
self.play_btn.setVisible(True) self.play_btn.setVisible(True)
self.store_btn.setVisible(True)
if pixmap.isNull(): if pixmap.isNull():
self.image_label.setText("No image available") self.image_label.setText("No image available")
else: else:
@@ -1677,6 +1704,10 @@ class SteamDice(QMainWindow):
if self.current_appid is not None: if self.current_appid is not None:
subprocess.Popen(["xdg-open", f"steam://rungameid/{self.current_appid}"]) subprocess.Popen(["xdg-open", f"steam://rungameid/{self.current_appid}"])
def _open_store_page(self):
if self.current_appid is not None:
subprocess.Popen(["xdg-open", f"https://store.steampowered.com/app/{self.current_appid}/"])
def closeEvent(self, a0): def closeEvent(self, a0):
if self.genres_thread and self.genres_thread.isRunning(): if self.genres_thread and self.genres_thread.isRunning():
self.genres_thread.stop() self.genres_thread.stop()