diff --git a/app/airshare/buffer.py b/app/airshare/buffer.py index ad9463e..8cd59db 100644 --- a/app/airshare/buffer.py +++ b/app/airshare/buffer.py @@ -27,8 +27,8 @@ from core.buffer import Buffer import qrcode class AppBuffer(Buffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, False, QColor(0, 0, 0, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(0, 0, 0, 255)) self.add_widget(AirShareWidget(url, QColor(0, 0, 0, 255))) diff --git a/app/browser/buffer.py b/app/browser/buffer.py index 5a36e26..c92506f 100644 --- a/app/browser/buffer.py +++ b/app/browser/buffer.py @@ -26,8 +26,8 @@ from core.utils import touch import os class AppBuffer(BrowserBuffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, False, QColor(255, 255, 255, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(255, 255, 255, 255)) self.config_dir = config_dir diff --git a/app/camera/buffer.py b/app/camera/buffer.py index 093d878..123e591 100644 --- a/app/camera/buffer.py +++ b/app/camera/buffer.py @@ -32,8 +32,8 @@ import time import os class AppBuffer(Buffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, True, QColor(0, 0, 0, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, is_dark_mode, True, QColor(0, 0, 0, 255)) self.add_widget(CameraWidget(QColor(0, 0, 0, 255))) def all_views_hide(self): diff --git a/app/demo/buffer.py b/app/demo/buffer.py index 2cc1dd2..03bdb65 100644 --- a/app/demo/buffer.py +++ b/app/demo/buffer.py @@ -24,8 +24,8 @@ from PyQt5.QtWidgets import QPushButton from core.buffer import Buffer class AppBuffer(Buffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, True, QColor(0, 0, 0, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, is_dark_mode, True, QColor(0, 0, 0, 255)) self.add_widget(QPushButton("Hello, EAF hacker, it's working!!!")) self.buffer_widget.setStyleSheet("font-size: 100px") diff --git a/app/file-receiver/buffer.py b/app/file-receiver/buffer.py index 3d90519..18fc462 100644 --- a/app/file-receiver/buffer.py +++ b/app/file-receiver/buffer.py @@ -41,8 +41,8 @@ import urllib from core.buffer import Buffer class AppBuffer(Buffer): - def __init__(self, buffer_id, url, config_dir, argument, emacs_var_dict, module_path): - Buffer.__init__(self, buffer_id, url, argument, emacs_var_dict, module_path, False, QColor(0, 0, 0, 255)) + def __init__(self, buffer_id, url, config_dir, argument, emacs_var_dict, module_path, is_dark_mode): + Buffer.__init__(self, buffer_id, url, argument, emacs_var_dict, module_path, is_dark_mode, False, QColor(0, 0, 0, 255)) self.add_widget(FileUploaderWidget(url, QColor(0, 0, 0, 255))) diff --git a/app/file-sender/buffer.py b/app/file-sender/buffer.py index bd02a4f..b8df7f3 100644 --- a/app/file-sender/buffer.py +++ b/app/file-sender/buffer.py @@ -34,8 +34,8 @@ import threading import socket class AppBuffer(Buffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, False, QColor(0, 0, 0, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(0, 0, 0, 255)) self.add_widget(FileTransferWidget(url, QColor(0, 0, 0, 255))) diff --git a/app/image-viewer/buffer.py b/app/image-viewer/buffer.py index 4baeb76..928c68c 100644 --- a/app/image-viewer/buffer.py +++ b/app/image-viewer/buffer.py @@ -27,8 +27,8 @@ from pathlib import Path import os class AppBuffer(BrowserBuffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, False, QColor(255, 255, 255, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(255, 255, 255, 255)) self.load_image(url) diff --git a/app/js-video-player/buffer.py b/app/js-video-player/buffer.py index 0a480aa..30b1c11 100644 --- a/app/js-video-player/buffer.py +++ b/app/js-video-player/buffer.py @@ -32,8 +32,8 @@ class AppBuffer(BrowserBuffer): export_org_json = QtCore.pyqtSignal(str, str) - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, False, QColor(255, 255, 255, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(255, 255, 255, 255)) self.url = url index_file = "file://" + (os.path.join(os.path.dirname(__file__), "index.html")) diff --git a/app/markdown-previewer/buffer.py b/app/markdown-previewer/buffer.py index 7e10271..15eb09f 100644 --- a/app/markdown-previewer/buffer.py +++ b/app/markdown-previewer/buffer.py @@ -28,8 +28,8 @@ import subprocess import threading class AppBuffer(BrowserBuffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, False, QColor(255, 255, 255, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(255, 255, 255, 255)) # Get free port to render markdown. self.port = get_free_port() diff --git a/app/mermaid/buffer.py b/app/mermaid/buffer.py index 4907ccf..eda67a2 100644 --- a/app/mermaid/buffer.py +++ b/app/mermaid/buffer.py @@ -36,8 +36,8 @@ class AppBuffer(BrowserBuffer): update_content = QtCore.pyqtSignal() - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, False, QColor(255, 255, 255, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(255, 255, 255, 255)) self.url = url self.render() diff --git a/app/mindmap/buffer.py b/app/mindmap/buffer.py index e6cefa5..1716572 100644 --- a/app/mindmap/buffer.py +++ b/app/mindmap/buffer.py @@ -32,8 +32,8 @@ class AppBuffer(BrowserBuffer): export_org_json = QtCore.pyqtSignal(str, str) - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, False, QColor(255, 255, 255, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(255, 255, 255, 255)) self.url = url index_file = "file://" + (os.path.join(os.path.dirname(__file__), "index.html")) @@ -72,7 +72,7 @@ class AppBuffer(BrowserBuffer): self.buffer_widget.eval_js("init_root_node();") color = "#FFFFFF" - if self.emacs_var_dict["eaf-mindmap-dark-mode"] == "true": + if self.emacs_var_dict["eaf-mindmap-dark-mode"] == "true" or (self.emacs_var_dict["eaf-mindmap-dark-mode"] == "" and self.is_dark_mode): color = "#242525" self.buffer_widget.eval_js("init_background('{}');".format(color)) diff --git a/app/org-previewer/buffer.py b/app/org-previewer/buffer.py index 4c52adb..9790e99 100644 --- a/app/org-previewer/buffer.py +++ b/app/org-previewer/buffer.py @@ -25,8 +25,8 @@ from core.browser import BrowserBuffer import os class AppBuffer(BrowserBuffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, False, QColor(255, 255, 255, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(255, 255, 255, 255)) self.url = url diff --git a/app/pdf-viewer/buffer.py b/app/pdf-viewer/buffer.py index 1a1333a..0026e08 100755 --- a/app/pdf-viewer/buffer.py +++ b/app/pdf-viewer/buffer.py @@ -34,8 +34,8 @@ import os import hashlib class AppBuffer(Buffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, False, QColor(0, 0, 0, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(0, 0, 0, 255)) self.delete_temp_file = arguments == "temp_pdf_file" self.add_widget(PdfViewerWidget(url, config_dir, QColor(0, 0, 0, 255), buffer_id, emacs_var_dict)) diff --git a/app/rss-reader/buffer.py b/app/rss-reader/buffer.py index 1c0d4ee..41ecd06 100644 --- a/app/rss-reader/buffer.py +++ b/app/rss-reader/buffer.py @@ -31,8 +31,8 @@ import json import os class AppBuffer(Buffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, True, QColor(0, 0, 0, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, is_dark_mode, True, QColor(0, 0, 0, 255)) self.add_widget(RSSReaderWidget(config_dir)) diff --git a/app/terminal/buffer.py b/app/terminal/buffer.py index c7f8121..80b643c 100644 --- a/app/terminal/buffer.py +++ b/app/terminal/buffer.py @@ -30,8 +30,8 @@ import threading import getpass class AppBuffer(BrowserBuffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, False, QColor(255, 255, 255, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + BrowserBuffer.__init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode, False, QColor(255, 255, 255, 255)) # Get free port to render markdown. self.port = get_free_port() diff --git a/app/video-player/buffer.py b/app/video-player/buffer.py index 5c81ac6..50079e9 100644 --- a/app/video-player/buffer.py +++ b/app/video-player/buffer.py @@ -27,8 +27,8 @@ from PyQt5.QtWidgets import QWidget, QGraphicsScene, QGraphicsView, QVBoxLayout from core.buffer import Buffer class AppBuffer(Buffer): - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path): - Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, True, QColor(0, 0, 0, 255)) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode): + Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, is_dark_mode, True, QColor(0, 0, 0, 255)) self.add_widget(VideoPlayerWidget()) self.buffer_widget.play(url) diff --git a/core/browser.py b/core/browser.py index 0e89b44..83f28a1 100644 --- a/core/browser.py +++ b/core/browser.py @@ -369,8 +369,8 @@ class BrowserBuffer(Buffer): enter_fullscreen_request = QtCore.pyqtSignal() exit_fullscreen_request = QtCore.pyqtSignal() - def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, fit_to_view, background_color): - Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, fit_to_view, background_color) + def __init__(self, buffer_id, url, config_dir, arguments, emacs_var_dict, module_path, is_dark_mode, fit_to_view, background_color): + Buffer.__init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, is_dark_mode, fit_to_view, background_color) self.add_widget(BrowserView(config_dir)) @@ -472,7 +472,9 @@ class BrowserBuffer(Buffer): def dark_mode_is_enable(self): module_name = self.module_path.split(".")[1] - return self.emacs_var_dict["eaf-browser-dark-mode"] == "true" and module_name in ["browser"] and self.url != "devtools://devtools/bundled/devtools_app.html" + return (self.emacs_var_dict["eaf-browser-dark-mode"] == "true" or (self.emacs_var_dict["eaf-browser-dark-mode"] == "" and self.is_dark_mode)) \ + and module_name in ["browser"] \ + and self.url != "devtools://devtools/bundled/devtools_app.html" def init_background_color(self): if self.dark_mode_is_enable(): diff --git a/core/buffer.py b/core/buffer.py index a1e54fe..35aae9e 100755 --- a/core/buffer.py +++ b/core/buffer.py @@ -160,7 +160,7 @@ class Buffer(QGraphicsScene): goto_right_tab = QtCore.pyqtSignal() aspect_ratio_change = QtCore.pyqtSignal() - def __init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, fit_to_view, background_color): + def __init__(self, buffer_id, url, arguments, emacs_var_dict, module_path, is_dark_mode, fit_to_view, background_color): super(QGraphicsScene, self).__init__() self.buffer_id = buffer_id @@ -171,6 +171,7 @@ class Buffer(QGraphicsScene): self.fit_to_view = fit_to_view self.background_color = background_color self.setBackgroundBrush(QBrush(self.background_color)) + self.is_dark_mode = is_dark_mode self.buffer_widget = None diff --git a/eaf.el b/eaf.el index cd60170..5210549 100644 --- a/eaf.el +++ b/eaf.el @@ -240,14 +240,14 @@ It must defined at `eaf-browser-search-engines'." (eaf-browser-remember-history . "true") (eaf-browser-default-zoom . "1.0") (eaf-browser-blank-page-url . "https://www.google.com") - (eaf-browser-dark-mode . "false") (eaf-browser-scroll-behavior . "auto") (eaf-browser-download-path . "~/Downloads") (eaf-browser-aria2-proxy-host . "") (eaf-browser-aria2-proxy-port . "") - (eaf-marker-letters . "ASDFHJKLWEOPCNM") - (eaf-mindmap-dark-mode . "false") + (eaf-browser-dark-mode . "") + (eaf-mindmap-dark-mode . "") (eaf-mindmap-save-path . "~/Documents") + (eaf-marker-letters . "ASDFHJKLWEOPCNM") ) "The alist storing user-defined variables that's shared with EAF Python side. @@ -791,7 +791,8 @@ For now only EAF browser app is supported." (list eaf-python-file) (eaf-get-render-size) (list eaf-proxy-host eaf-proxy-port eaf-proxy-type eaf-config-location) - (list (eaf-serialization-var-list)))) + (list (eaf-serialization-var-list)) + (list (eaf-is-dark-theme)))) (gdb-args (list "-batch" "-ex" "run" "-ex" "bt" "--args" eaf-python-command))) (setq eaf-process (if eaf-enable-debug @@ -1775,6 +1776,11 @@ Make sure that your smartphone is connected to the same WiFi network as this com ))))) (message "Please install libreoffice to convert office file to pdf."))) +(defun eaf-is-dark-theme () + (if (eq (frame-parameter nil 'background-mode) 'light) + "false" + "true")) + (dbus-register-signal :session "com.lazycat.eaf" "/com/lazycat/eaf" "com.lazycat.eaf" "edit_focus_text" diff --git a/eaf.py b/eaf.py index fef965f..fe26bb7 100755 --- a/eaf.py +++ b/eaf.py @@ -39,14 +39,14 @@ EAF_OBJECT_NAME = "/com/lazycat/eaf" class EAF(dbus.service.Object): def __init__(self, args): - global emacs_width, emacs_height, eaf_config_dir, proxy_string + global emacs_width, emacs_height, eaf_config_dir, proxy_string, is_dark_mode dbus.service.Object.__init__( self, dbus.service.BusName(EAF_DBUS_NAME, bus=dbus.SessionBus()), EAF_OBJECT_NAME) - (emacs_width, emacs_height, proxy_host, proxy_port, proxy_type, config_dir, var_dict_string) = args + (emacs_width, emacs_height, proxy_host, proxy_port, proxy_type, config_dir, var_dict_string, is_dark_mode) = args emacs_width = int(emacs_width) emacs_height = int(emacs_height) eaf_config_dir = os.path.expanduser(config_dir) @@ -139,11 +139,11 @@ class EAF(dbus.service.Object): return "EAF: Something went wrong when trying to import {0}".format(module_path) def create_buffer(self, buffer_id, url, module_path, arguments): - global emacs_width, emacs_height, eaf_config_dir, proxy_string + global emacs_width, emacs_height, eaf_config_dir, proxy_string, is_dark_mode # Create application buffer. module = importlib.import_module(module_path) - app_buffer = module.AppBuffer(buffer_id, url, eaf_config_dir, arguments, self.emacs_var_dict, module_path) + app_buffer = module.AppBuffer(buffer_id, url, eaf_config_dir, arguments, self.emacs_var_dict, module_path, bool(is_dark_mode)) # Add buffer to buffer dict. self.buffer_dict[buffer_id] = app_buffer