|
1 | 1 | import qdarktheme as qdt, sys, json, platform, logging |
2 | 2 | import utils, darkdetect |
3 | 3 | from time import sleep |
4 | | -from PyQt5.QtWidgets import QApplication |
| 4 | +from PyQt5.QtWidgets import QApplication, QSystemTrayIcon, QMenu, QAction |
5 | 5 | from PyQt5.QtCore import QObject, QThread, pyqtSignal, pyqtSlot |
6 | 6 | from PyQt5.QtNetwork import QLocalServer, QLocalSocket |
| 7 | +from PyQt5.QtGui import QIcon |
7 | 8 | from core.musicPlayer import MusicPlayer |
8 | 9 | from core.logger import setup_logging |
9 | 10 | from config import ICON_PATH, default_settings |
@@ -144,6 +145,29 @@ def main(): |
144 | 145 | player.adjust_volume(player.get_volume) |
145 | 146 | config = load_config() |
146 | 147 | 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) |
147 | 171 |
|
148 | 172 | def handle_color_change(normal, dark, dark_alt, light, light_alt): |
149 | 173 | current_theme = darkdetect.theme().lower() |
|
0 commit comments