72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
# Copyright 2017 Mycroft AI Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
import sys
|
|
import signal
|
|
import io
|
|
import os.path
|
|
import curses
|
|
from mycroft.util import get_ipc_directory
|
|
from .text_client import (
|
|
load_settings, save_settings, simple_cli, gui_main,
|
|
start_log_monitor, start_mic_monitor, connect_to_mycroft,
|
|
ctrl_c_handler
|
|
)
|
|
from mycroft.configuration import Configuration
|
|
|
|
sys.stdout = io.StringIO()
|
|
sys.stderr = io.StringIO()
|
|
|
|
|
|
def custom_except_hook(exctype, value, traceback):
|
|
print(sys.stdout.getvalue(), file=sys.__stdout__)
|
|
print(sys.stderr.getvalue(), file=sys.__stderr__)
|
|
sys.stdout, sys.stderr = sys.__stdout__, sys.__stderr__
|
|
sys.__excepthook__(exctype, value, traceback)
|
|
|
|
|
|
sys.excepthook = custom_except_hook # noqa
|
|
|
|
|
|
def main():
|
|
# Monitor system logs
|
|
config = Configuration.get()
|
|
if 'log_dir' in config:
|
|
log_dir = os.path.expanduser(config['log_dir'])
|
|
start_log_monitor(os.path.join(log_dir, 'skills.log'))
|
|
start_log_monitor(os.path.join(log_dir, 'voice.log'))
|
|
else:
|
|
start_log_monitor("/var/log/mycroft/skills.log")
|
|
start_log_monitor("/var/log/mycroft/voice.log")
|
|
|
|
# Monitor IPC file containing microphone level info
|
|
start_mic_monitor(os.path.join(get_ipc_directory(), "mic_level"))
|
|
|
|
connect_to_mycroft()
|
|
if '--simple' in sys.argv:
|
|
sys.stdout = sys.__stdout__
|
|
sys.stderr = sys.__stderr__
|
|
simple_cli()
|
|
else:
|
|
# Special signal handler allows a clean shutdown of the GUI
|
|
signal.signal(signal.SIGINT, ctrl_c_handler)
|
|
load_settings()
|
|
curses.wrapper(gui_main)
|
|
curses.endwin()
|
|
save_settings()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|