Finally got windows icon to work

This commit is contained in:
Christoph Stahl 2024-10-02 17:14:02 +02:00
parent 829f7b26d1
commit 7b50882738
2 changed files with 23 additions and 7 deletions

View file

@ -26,7 +26,8 @@ cp ../icons/syng.ico src/
# docker run --volume "$(pwd)/src:/src/" batonogov/pyinstaller-linux:latest "pyinstaller --onefile syng/main.py" # docker run --volume "$(pwd)/src:/src/" batonogov/pyinstaller-linux:latest "pyinstaller --onefile syng/main.py"
# rm -rf src/build # rm -rf src/build
# rm -rf src/dist # rm -rf src/dist
docker run --volume "$(pwd)/src:/src/" batonogov/pyinstaller-windows:latest "pyinstaller --onefile -w -i'.\syng.ico' --add-binary '.\mpv.exe;.' --add-binary '.\vulkan-1.dll;.' --add-binary '.\ffmpeg.exe;.' syng/main.py" # docker run --volume "$(pwd)/src:/src/" batonogov/pyinstaller-windows:latest "pyinstaller --onefile -w -i'.\syng.ico' --add-data='.\syng\static\syng.png;.\static' --add-binary '.\mpv.exe;.' --add-binary '.\vulkan-1.dll;.' --add-binary '.\ffmpeg.exe;.' syng/main.py"
docker run --volume "$(pwd)/src:/src/" batonogov/pyinstaller-windows:latest "pyinstaller -F -w -i'.\syng.ico' --add-data='.\syng.ico;.' --add-binary '.\mpv.exe;.' --add-binary '.\vulkan-1.dll;.' --add-binary '.\ffmpeg.exe;.' syng/main.py"
# cd syng-2.0.1 # cd syng-2.0.1
# wine python -m poetry install -E client # wine python -m poetry install -E client

View file

@ -1,4 +1,5 @@
from io import BytesIO from io import BytesIO
import sys
import logging import logging
from logging.handlers import QueueListener from logging.handlers import QueueListener
from multiprocessing import Process, Queue from multiprocessing import Process, Queue
@ -8,12 +9,22 @@ import os
import builtins import builtins
from functools import partial from functools import partial
import random import random
from typing import Any, Optional from typing import TYPE_CHECKING, Any, Optional
import multiprocessing import multiprocessing
import secrets import secrets
import string import string
import signal import signal
try:
if not TYPE_CHECKING:
from ctypes import windll
appid = "rocks.syng.Syng.2.0.1"
windll.shell32.SetCurrentProcessExplicitAppUserModelID(appid)
except ImportError:
pass
from PyQt6.QtCore import QTimer from PyQt6.QtCore import QTimer
from PyQt6.QtGui import QCloseEvent, QIcon, QPixmap from PyQt6.QtGui import QCloseEvent, QIcon, QPixmap
from PyQt6.QtWidgets import ( from PyQt6.QtWidgets import (
@ -379,13 +390,12 @@ class SyngGui(QMainWindow):
super().__init__() super().__init__()
self.setWindowTitle("Syng") self.setWindowTitle("Syng")
if os.name != "nt":
rel_path = os.path.dirname(__file__) rel_path = os.path.dirname(__file__)
qt_img = QPixmap(os.path.join(rel_path, "static/syng.png")) qt_img = QPixmap(os.path.join(rel_path, "static", "syng.png"))
self.qt_icon = QIcon(qt_img) self.setWindowIcon(QIcon(qt_img))
self.setWindowIcon(self.qt_icon)
self.syng_server: Optional[Process] = None self.syng_server: Optional[Process] = None
# self.syng_client: Optional[subprocess.Popen[bytes]] = None
self.syng_client: Optional[Process] = None self.syng_client: Optional[Process] = None
self.syng_client_logging_listener: Optional[QueueListener] = None self.syng_client_logging_listener: Optional[QueueListener] = None
@ -553,9 +563,14 @@ class LoggingLabelHandler(logging.Handler):
def run_gui() -> None: def run_gui() -> None:
base_dir = os.path.dirname(__file__)
if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"):
base_dir = sys._MEIPASS
signal.signal(signal.SIGINT, signal.SIG_DFL) signal.signal(signal.SIGINT, signal.SIG_DFL)
app = QApplication([]) app = QApplication([])
app.setWindowIcon(QIcon(os.path.join(base_dir, "syng.ico")))
app.setApplicationName("Syng") app.setApplicationName("Syng")
app.setDesktopFileName("rocks.syng.Syng") app.setDesktopFileName("rocks.syng.Syng")
window = SyngGui() window = SyngGui()