Add version label and native Wayland support

- Set QT_QPA_PLATFORM=wayland when WAYLAND_DISPLAY is present so the
  app runs natively instead of via XWayland
- Show version string (v0.1.0-<git short hash>) in bottom-left corner
This commit is contained in:
2026-04-02 06:21:24 -04:00
parent 8465124977
commit db56be8bef

View File

@@ -2,15 +2,30 @@
import os
import sys
import random
import subprocess
import requests
# Run natively on Wayland if available, fall back to X11 otherwise
if os.environ.get("WAYLAND_DISPLAY"):
os.environ.setdefault("QT_QPA_PLATFORM", "wayland")
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QLabel
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel
from PyQt6.QtCore import Qt, QThread, pyqtSignal
from PyQt6.QtGui import QPixmap, QFont
VERSION = "v0.1.0"
def _get_version():
try:
short = subprocess.check_output(
["git", "rev-parse", "--short", "HEAD"],
cwd=os.path.dirname(os.path.abspath(__file__)),
stderr=subprocess.DEVNULL,
).decode().strip()
return f"{VERSION}-{short}"
except Exception:
return VERSION
STEAM_API_KEY = "A2B1B59F6F16FA3CD3107378AE737C3D"
STEAM_ID = "76561198000382373"
@@ -129,7 +144,20 @@ class SteamDice(QMainWindow):
self.status_label.setStyleSheet("color: #8f98a0;")
layout.addWidget(self.status_label)
# Dice button
# Bottom row: version (left) | spacer | dice (center) | spacer (right)
bottom_row = QHBoxLayout()
bottom_row.setContentsMargins(0, 0, 0, 0)
version_label = QLabel(_get_version())
ver_font = QFont()
ver_font.setPointSize(8)
version_label.setFont(ver_font)
version_label.setStyleSheet("color: #4a5a6a;")
version_label.setFixedWidth(80)
bottom_row.addWidget(version_label, alignment=Qt.AlignmentFlag.AlignBottom)
bottom_row.addStretch()
self.dice_btn = QPushButton("")
dice_font = QFont()
dice_font.setPointSize(52)
@@ -139,7 +167,12 @@ class SteamDice(QMainWindow):
self.dice_btn.setCursor(Qt.CursorShape.PointingHandCursor)
self.dice_btn.setEnabled(False)
self.dice_btn.clicked.connect(self.roll)
layout.addWidget(self.dice_btn, alignment=Qt.AlignmentFlag.AlignHCenter)
bottom_row.addWidget(self.dice_btn)
bottom_row.addStretch()
bottom_row.addSpacing(80) # mirror version label width to keep dice centered
layout.addLayout(bottom_row)
self._fetch_library()