mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-07 21:29:13 +00:00
Open Configure Window on First Run or from System Tray
- Trigger FRE if no config loaded. Open Configure Window automatically - Else user can manually open config window from App on System Tray
This commit is contained in:
@@ -7,16 +7,12 @@ from src.processor.markdown.markdown_to_jsonl import markdown_to_jsonl
|
|||||||
from src.processor.org_mode.org_to_jsonl import org_to_jsonl
|
from src.processor.org_mode.org_to_jsonl import org_to_jsonl
|
||||||
from src.search_type import image_search, text_search
|
from src.search_type import image_search, text_search
|
||||||
from src.utils.config import SearchType, SearchModels, ProcessorConfigModel, ConversationProcessorConfigModel
|
from src.utils.config import SearchType, SearchModels, ProcessorConfigModel, ConversationProcessorConfigModel
|
||||||
from src.utils.cli import cli
|
|
||||||
from src.utils import state
|
from src.utils import state
|
||||||
from src.utils.helpers import get_absolute_path
|
from src.utils.helpers import get_absolute_path
|
||||||
from src.utils.rawconfig import FullConfig
|
from src.utils.rawconfig import FullConfig
|
||||||
|
|
||||||
|
|
||||||
def configure_server(cmd_args):
|
def configure_server(args):
|
||||||
# Load config from CLI
|
|
||||||
args = cli(cmd_args)
|
|
||||||
|
|
||||||
# Stores the file path to the config file.
|
# Stores the file path to the config file.
|
||||||
state.config_file = args.config_file
|
state.config_file = args.config_file
|
||||||
|
|
||||||
|
|||||||
33
src/main.py
33
src/main.py
@@ -13,6 +13,7 @@ from PyQt6.QtCore import Qt, QThread
|
|||||||
from src.configure import configure_server
|
from src.configure import configure_server
|
||||||
from src.router import router
|
from src.router import router
|
||||||
from src.utils import constants
|
from src.utils import constants
|
||||||
|
from src.utils.cli import cli
|
||||||
|
|
||||||
|
|
||||||
# Initialize the Application Server
|
# Initialize the Application Server
|
||||||
@@ -22,14 +23,30 @@ app.include_router(router)
|
|||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
# Setup Application Server
|
# Setup Base GUI
|
||||||
host, port, socket = configure_server(sys.argv[1:])
|
|
||||||
|
|
||||||
# Setup GUI
|
|
||||||
gui = QtWidgets.QApplication([])
|
gui = QtWidgets.QApplication([])
|
||||||
gui.setQuitOnLastWindowClosed(False)
|
gui.setQuitOnLastWindowClosed(False)
|
||||||
tray = create_system_tray(gui)
|
|
||||||
window = ConfigureWindow()
|
window = ConfigureWindow()
|
||||||
|
tray = create_system_tray(gui, window)
|
||||||
|
tray.show()
|
||||||
|
|
||||||
|
# Load config from CLI
|
||||||
|
args = cli(sys.argv[1:])
|
||||||
|
|
||||||
|
# Trigger First Run Experience, if required
|
||||||
|
if args.config is None:
|
||||||
|
window.show()
|
||||||
|
gui.exec()
|
||||||
|
|
||||||
|
# Reload config after first run
|
||||||
|
args = cli(sys.argv[1:])
|
||||||
|
# Quit if app still not configured
|
||||||
|
if args.config is None:
|
||||||
|
print('Exiting as Khoj is not configured. Configure the application to use it.')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Setup Application Server
|
||||||
|
host, port, socket = configure_server(args)
|
||||||
|
|
||||||
# Start Application Server
|
# Start Application Server
|
||||||
server = ServerThread(app, host, port, socket)
|
server = ServerThread(app, host, port, socket)
|
||||||
@@ -37,8 +54,6 @@ def run():
|
|||||||
gui.aboutToQuit.connect(server.terminate)
|
gui.aboutToQuit.connect(server.terminate)
|
||||||
|
|
||||||
# Start the GUI
|
# Start the GUI
|
||||||
window.show()
|
|
||||||
tray.show()
|
|
||||||
gui.exec()
|
gui.exec()
|
||||||
|
|
||||||
|
|
||||||
@@ -108,7 +123,7 @@ class ConfigureWindow(QtWidgets.QMainWindow):
|
|||||||
self.config_window.layout().removeWidget(self.config_window.layout().itemAt(2).widget())
|
self.config_window.layout().removeWidget(self.config_window.layout().itemAt(2).widget())
|
||||||
|
|
||||||
|
|
||||||
def create_system_tray(gui: QtWidgets.QApplication):
|
def create_system_tray(gui: QtWidgets.QApplication, window: QtWidgets.QMainWindow):
|
||||||
"""Create System Tray with Menu
|
"""Create System Tray with Menu
|
||||||
Menu Actions should contain
|
Menu Actions should contain
|
||||||
1. option to open search page at localhost:8000/
|
1. option to open search page at localhost:8000/
|
||||||
@@ -126,7 +141,7 @@ def create_system_tray(gui: QtWidgets.QApplication):
|
|||||||
menu = QtWidgets.QMenu()
|
menu = QtWidgets.QMenu()
|
||||||
menu_actions = [
|
menu_actions = [
|
||||||
('Search', lambda: webbrowser.open('http://localhost:8000/')),
|
('Search', lambda: webbrowser.open('http://localhost:8000/')),
|
||||||
('Configure', lambda: webbrowser.open('http://localhost:8000/config')),
|
('Configure', window.show),
|
||||||
('Quit', gui.quit),
|
('Quit', gui.quit),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user