Skip to content
This repository was archived by the owner on Aug 20, 2026. It is now read-only.

Commit ed43fb5

Browse files
committed
Add a tray icon
1 parent 13e5dfd commit ed43fb5

4 files changed

Lines changed: 33 additions & 3 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ venv/
77

88
# Ignore List for Files
99
*.log
10-
test.py
10+
test.py
11+
dummy.py

config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
"root_playlist_folder": "playlists",
77
"default_playlist": "default",
88
"colorization_color": "automatic",
9-
"volume_percantage": 15
9+
"volume_percantage": 15,
10+
"minimize_to_tray": false
1011
}

core/settingManager.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ def initUI(self):
5555
self.volume_percantage_edit.setRange(0, 100) # Set min/max range for the volume
5656
self.volume_percantage_edit.setValue(self.settings.get("volume_percantage", 100))
5757

58+
self.tray_checkbox = QCheckBox("Minimize to Tray")
59+
self.tray_checkbox.setChecked(self.settings.get("minimize_to_tray", False))
5860

5961
self.root_playlist_folder_edit = QLineEdit()
6062
self.root_playlist_folder_edit.setPlaceholderText("playlists")
@@ -79,6 +81,7 @@ def initUI(self):
7981
self.use_system_accent_checkbox.setChecked(color == "automatic")
8082
self.use_system_accent_checkbox.stateChanged.connect(self.toggle_colorization_color)
8183

84+
self.general_layout.addRow(QLabel("Minimize to Tray:"), self.tray_checkbox)
8285
self.general_layout.addRow(QLabel("Volume Percentage:"), self.volume_percantage_edit)
8386
self.general_layout.addRow(QLabel("Root Playlist Folder:"), self.root_playlist_folder_edit)
8487
self.general_layout.addRow(QLabel("Default Playlist:"), self.default_playlist_edit)
@@ -150,6 +153,7 @@ def save_settings(self):
150153
self.settings["discord_client_id"] = self.discord_client_id_edit.text()
151154
self.settings["large_image_key"] = self.large_image_key_edit.text()
152155
self.settings["use_playing_status"] = self.use_playing_status_edit.isChecked()
156+
self.settings["minimize_to_tray"] = self.tray_checkbox.isChecked()
153157

154158
# Validate volume input
155159
volume_input = self.volume_percantage_edit.text()

main.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import qdarktheme as qdt, sys, json, platform, logging
22
import utils, darkdetect
33
from time import sleep
4-
from PyQt5.QtWidgets import QApplication
4+
from PyQt5.QtWidgets import QApplication, QSystemTrayIcon, QMenu, QAction
55
from PyQt5.QtCore import QObject, QThread, pyqtSignal, pyqtSlot
66
from PyQt5.QtNetwork import QLocalServer, QLocalSocket
7+
from PyQt5.QtGui import QIcon
78
from core.musicPlayer import MusicPlayer
89
from core.logger import setup_logging
910
from config import ICON_PATH, default_settings
@@ -144,6 +145,29 @@ def main():
144145
player.adjust_volume(player.get_volume)
145146
config = load_config()
146147
color = config.get("colorization_color", "automatic")
148+
tray_icon = QSystemTrayIcon(QIcon(ICON_PATH), app)
149+
tray_icon.show()
150+
tray_menu = QMenu()
151+
152+
open_action = QAction("Open", tray_menu)
153+
open_action.triggered.connect(player.show)
154+
tray_menu.addAction(open_action)
155+
156+
minimize_action = QAction("Minimize", tray_menu)
157+
minimize_action.triggered.connect(player.hide)
158+
tray_menu.addAction(minimize_action)
159+
160+
quit_action = QAction("Quit", tray_menu)
161+
quit_action.triggered.connect(app.quit)
162+
tray_menu.addAction(quit_action)
163+
164+
tray_icon.setContextMenu(tray_menu)
165+
minimize_to_tray = config.get("minimize_to_tray", False)
166+
167+
if minimize_to_tray:
168+
minimize_action.triggered.connect(player.hide)
169+
else:
170+
minimize_action.triggered.connect(player.setVisible)
147171

148172
def handle_color_change(normal, dark, dark_alt, light, light_alt):
149173
current_theme = darkdetect.theme().lower()

0 commit comments

Comments
 (0)