From 0e876e09e80ec2476bc94ce3119df6b601d01f2e Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sat, 24 Aug 2024 18:51:00 +0100 Subject: (Emacs/config|elisp)+custom light theme with switches in config.org --- .../.config/emacs/archive/personal-light-theme.el | 66 ----------------- Emacs/.config/emacs/config.org | 58 +++++++-------- Emacs/.config/emacs/elisp/personal-light-theme.el | 84 ++++++++++++++++++++++ .../emacs/elisp/personal-solarized-theme.el | 14 ++-- 4 files changed, 120 insertions(+), 102 deletions(-) delete mode 100644 Emacs/.config/emacs/archive/personal-light-theme.el create mode 100644 Emacs/.config/emacs/elisp/personal-light-theme.el (limited to 'Emacs/.config/emacs') diff --git a/Emacs/.config/emacs/archive/personal-light-theme.el b/Emacs/.config/emacs/archive/personal-light-theme.el deleted file mode 100644 index 3747f05..0000000 --- a/Emacs/.config/emacs/archive/personal-light-theme.el +++ /dev/null @@ -1,66 +0,0 @@ -(deftheme personal-light - "Created 2023-03-27.") - -(custom-theme-set-faces - 'personal-light - '(button ((t (:inherit (link))))) - '(company-preview - ((t (:foreground "black" :background "deepskyblue")))) - '(company-preview-common ((t (:inherit company-preview)))) - '(company-tooltip ((t (:background "white" :foreground "black")))) - '(company-tooltip-annotation ((t (:foreground "grey70" :slant italic)))) - '(company-tooltip-selection ((t (:background "grey80" :slant italic)))) - '(cursor ((t (:background "grey50")))) - '(dired-ignored ((t (:background "grey80" :slant italic :underline t)))) - '(escape-glyph ((((background dark)) (:foreground "cyan")) (((type pc)) (:foreground "magenta")) (t (:foreground "brown")))) - '(fixed-pitch ((t (:family "Monospace")))) - '(font-lock-builtin-face ((((class grayscale) (background light)) (:weight bold :foreground "LightGray")) (((class grayscale) (background dark)) (:weight bold :foreground "DimGray")) (((class color) (min-colors 88) (background light)) (:foreground "dark slate blue")) (((class color) (min-colors 88) (background dark)) (:foreground "LightSteelBlue")) (((class color) (min-colors 16) (background light)) (:foreground "Orchid")) (((class color) (min-colors 16) (background dark)) (:foreground "LightSteelBlue")) (((class color) (min-colors 8)) (:weight bold :foreground "blue")) (t (:weight bold)))) - '(font-lock-comment-delimiter-face ((t (:inherit (font-lock-comment-face))))) - '(font-lock-comment-face ((t (:foreground "dim gray")))) - '(font-lock-constant-face ((((class grayscale) (background light)) (:underline (:color foreground-color :style line) :weight bold :foreground "LightGray")) (((class grayscale) (background dark)) (:underline (:color foreground-color :style line) :weight bold :foreground "Gray50")) (((class color) (min-colors 88) (background light)) (:foreground "dark cyan")) (((class color) (min-colors 88) (background dark)) (:foreground "Aquamarine")) (((class color) (min-colors 16) (background light)) (:foreground "CadetBlue")) (((class color) (min-colors 16) (background dark)) (:foreground "Aquamarine")) (((class color) (min-colors 8)) (:foreground "magenta")) (t (:underline (:color foreground-color :style line) :weight bold)))) - '(font-lock-doc-face ((t (:inherit (font-lock-string-face))))) - '(font-lock-doc-markup-face ((t (:inherit (font-lock-constant-face))))) - '(font-lock-function-name-face ((((class color) (min-colors 88) (background light)) (:foreground "Blue1")) (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue")) (((class color) (min-colors 16) (background light)) (:foreground "Blue")) (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue")) (((class color) (min-colors 8)) (:weight bold :foreground "blue")) (t (:weight bold :inverse-video t)))) - '(font-lock-keyword-face ((((class grayscale) (background light)) (:weight bold :foreground "LightGray")) (((class grayscale) (background dark)) (:weight bold :foreground "DimGray")) (((class color) (min-colors 88) (background light)) (:foreground "Purple")) (((class color) (min-colors 88) (background dark)) (:foreground "Cyan1")) (((class color) (min-colors 16) (background light)) (:foreground "Purple")) (((class color) (min-colors 16) (background dark)) (:foreground "Cyan")) (((class color) (min-colors 8)) (:weight bold :foreground "cyan")) (t (:weight bold)))) - '(font-lock-negation-char-face ((t nil))) - '(font-lock-preprocessor-face ((t (:inherit (font-lock-builtin-face))))) - '(font-lock-regexp-grouping-backslash ((t (:inherit (bold))))) - '(font-lock-regexp-grouping-construct ((t (:inherit (bold))))) - '(font-lock-string-face ((((class grayscale) (background light)) (:slant italic :foreground "DimGray")) (((class grayscale) (background dark)) (:slant italic :foreground "LightGray")) (((class color) (min-colors 88) (background light)) (:foreground "VioletRed4")) (((class color) (min-colors 88) (background dark)) (:foreground "LightSalmon")) (((class color) (min-colors 16) (background light)) (:foreground "RosyBrown")) (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon")) (((class color) (min-colors 8)) (:foreground "green")) (t (:slant italic)))) - '(font-lock-type-face ((((class grayscale) (background light)) (:weight bold :foreground "Gray90")) (((class grayscale) (background dark)) (:weight bold :foreground "DimGray")) (((class color) (min-colors 88) (background light)) (:foreground "ForestGreen")) (((class color) (min-colors 88) (background dark)) (:foreground "PaleGreen")) (((class color) (min-colors 16) (background light)) (:foreground "ForestGreen")) (((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen")) (((class color) (min-colors 8)) (:foreground "green")) (t (:underline (:color foreground-color :style line) :weight bold)))) - '(font-lock-variable-name-face ((((class grayscale) (background light)) (:slant italic :weight bold :foreground "Gray90")) (((class grayscale) (background dark)) (:slant italic :weight bold :foreground "DimGray")) (((class color) (min-colors 88) (background light)) (:foreground "sienna")) (((class color) (min-colors 88) (background dark)) (:foreground "LightGoldenrod")) (((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod")) (((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod")) (((class color) (min-colors 8)) (:weight light :foreground "yellow")) (t (:slant italic :weight bold)))) - '(font-lock-warning-face ((t (:inherit (error))))) - '(fringe ((((class color) (background light)) (:background "grey95")) (((class color) (background dark)) (:background "grey10")) (t (:background "gray")))) - '(header-line ((t (:box nil :foreground "grey20" :background "grey90" :inherit (mode-line))))) - '(highlight ((t (:background "grey90")))) - '(homoglyph ((((background dark)) (:foreground "cyan")) (((type pc)) (:foreground "magenta")) (t (:foreground "brown")))) - '(isearch ((((class color) (min-colors 88) (background light)) (:foreground "lightskyblue1" :background "magenta3")) (((class color) (min-colors 88) (background dark)) (:foreground "brown4" :background "palevioletred2")) (((class color) (min-colors 16)) (:foreground "cyan1" :background "magenta4")) (((class color) (min-colors 8)) (:foreground "cyan1" :background "magenta4")) (t (:inverse-video t)))) - '(isearch-fail ((((class color) (min-colors 88) (background light)) (:background "RosyBrown1")) (((class color) (min-colors 88) (background dark)) (:background "red4")) (((class color) (min-colors 16)) (:background "red")) (((class color) (min-colors 8)) (:background "red")) (((class color grayscale)) (:foreground "grey")) (t (:inverse-video t)))) - '(lazy-highlight ((((class color) (min-colors 88) (background light)) (:background "paleturquoise")) (((class color) (min-colors 88) (background dark)) (:background "paleturquoise4")) (((class color) (min-colors 16)) (:background "turquoise3")) (((class color) (min-colors 8)) (:background "turquoise3")) (t (:underline (:color foreground-color :style line))))) - '(link ((t (:underline (:color foreground-color :style line) :foreground "RoyalBlue3")))) - '(link-visited ((t (:foreground "magenta4" :inherit (link))))) - '(match ((((class color) (min-colors 88) (background light)) (:background "khaki1")) (((class color) (min-colors 88) (background dark)) (:background "RoyalBlue3")) (((class color) (min-colors 8) (background light)) (:foreground "black" :background "yellow")) (((class color) (min-colors 8) (background dark)) (:foreground "white" :background "blue")) (((type tty) (class mono)) (:inverse-video t)) (t (:background "gray")))) - '(minibuffer-prompt ((((background dark)) (:foreground "cyan")) (((type pc)) (:foreground "magenta")) (t (:foreground "medium blue")))) - '(mode-line ((t (:box nil :background "LightSkyBlue" :foreground "black")))) - '(mode-line-buffer-id ((t (:weight bold)))) - '(mode-line-emphasis ((t (:weight bold)))) - '(mode-line-highlight ((t (:box (:line-width (2 . 2) :color "grey40" :style released-button))))) - '(mode-line-inactive ((t (:foreground "grey20" :background "grey90" :inherit (mode-line))))) - '(next-error ((t (:inherit (region))))) - '(org-block ((t (:background "white" :inherit shadow)))) - '(query-replace ((t (:inherit (isearch))))) - '(region ((t (:extend t :background "green yellow" :distant-foreground "gtk_selection_fg_color")))) - '(secondary-selection ((((class color) (min-colors 88) (background light)) (:extend t :background "yellow1")) (((class color) (min-colors 88) (background dark)) (:extend t :background "SkyBlue4")) (((class color) (min-colors 16) (background light)) (:extend t :background "yellow")) (((class color) (min-colors 16) (background dark)) (:extend t :background "SkyBlue4")) (((class color) (min-colors 8)) (:extend t :foreground "black" :background "cyan")) (t (:inverse-video t)))) - '(shadow ((((class color grayscale) (min-colors 88) (background light)) (:foreground "grey50")) (((class color grayscale) (min-colors 88) (background dark)) (:foreground "grey70")) (((class color) (min-colors 8) (background light)) (:foreground "green")) (((class color) (min-colors 8) (background dark)) (:foreground "yellow")))) - '(tab-bar ((t (:background "white")))) - '(tab-bar-tab ((t (:foreground "gray30" :background "white")))) - '(tab-bar-tab-inactive ((t (:foreground "gray13" :background "gray80")))) - '(tooltip ((t (:foreground "black" :background "lightyellow" :inherit (variable-pitch))))) - '(trailing-whitespace ((((class color) (background light)) (:background "red1")) (((class color) (background dark)) (:background "red1")) (t (:inverse-video t)))) - '(variable-pitch ((((type w32)) (:foundry "outline" :family "Arial")) (t (:family "Sans Serif")))) - '(whitespace-line ((t (:background "white" :foreground "violet")))) - '(whitespace-space ((t (:background "white" :foreground "lightgray")))) - '(default ((t (:family "Source Code Pro" :foundry "ADBO" :width normal :height 143 :weight normal :slant normal :underline nil :overline nil :extend nil :strike-through nil :box nil :inverse-video nil :foreground "black" :background "white" :stipple nil :inherit nil)))) - ) - -(provide-theme 'personal-light) diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index 91a5338..7701068 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -234,52 +234,54 @@ do that for me. General look and feel of Emacs (mostly disabling stuff I don't like). ** Themes I have both a dark and light theme for differing situations. -*** Dark theme +Here I configure which one to load and how to switch between them. + My preferred dark theme is my own "personal-solarized" theme which is stored in the Emacs lisp folder (look at [[file:elisp/personal-solarized-theme.el][this file]]). It's essentially a copy of the solarized theme (from the ~solarized-themes~ package) with a few personal changes. +My preferred light theme is modus-operandi, mostly because I don't +care to design my own light theme and I rarely use them. They are +necessary in high light situations where a dark mode would strain the +eyes too much. + #+begin_src emacs-lisp (use-package custom + :defer t + :commands +oreo/switch-theme :init (setq custom-theme-directory (concat user-emacs-directory "elisp/")) + (defvar +oreo/theme-list `(personal-light personal-solarized)) + (defvar +oreo/theme 1) :config - (load-theme 'personal-solarized t)) -#+end_src -*** Switching between light and dark -I'm not very good at designing light themes as I don't really use -them. However they are necessary in high light situations where a -dark mode would strain the eyes too much. So I built a custom theme -on top of the default Emacs theme, "personal-light". -2024-06-11: I now use modus-operandi for my light theme. + (defun +oreo/disable-other-themes () + "Disable all other themes in +OREO/THEME-LIST excluding ++OREO/THEME." + (cl-loop + for theme in +oreo/theme-list + for i from 0 + if (not (= i +oreo/theme)) + do (disable-theme theme))) -I don't use it by default but I may need to switch between light and -dark easily, so here's a command to switch between them. + (defun +oreo/load-theme () + "Load +OREO/THEME, disabling all other themes to reduce conflict." + (mapc #'disable-theme custom-enabled-themes) + (+oreo/disable-other-themes) + (load-theme (nth +oreo/theme +oreo/theme-list) t)) -#+begin_src emacs-lisp -(use-package custom - :defer t - :commands +oreo/switch-theme - :init - (defvar +oreo/theme 'dark) - :config (defun +oreo/switch-theme () + "Flip between different themes set in +OREO/THEME-ALIST." (interactive) - (cl-case +oreo/theme - (dark - (mapc #'disable-theme custom-enabled-themes) - (load-theme 'modus-operandi t) - (setq +oreo/theme 'light)) - (light - (mapc #'disable-theme custom-enabled-themes) - (load-theme 'personal-solarized t) - (setq +oreo/theme 'dark))))) + (setq +oreo/theme (mod (+ 1 +oreo/theme) (length +oreo/theme-list))) + (+oreo/load-theme)) + + (+oreo/load-theme)) #+end_src ** Font size -Make font size bigger on my laptop and smaller on my desktop. +Adjust font sizes for my devices. #+begin_src emacs-lisp (use-package faces diff --git a/Emacs/.config/emacs/elisp/personal-light-theme.el b/Emacs/.config/emacs/elisp/personal-light-theme.el new file mode 100644 index 0000000..0d5fb15 --- /dev/null +++ b/Emacs/.config/emacs/elisp/personal-light-theme.el @@ -0,0 +1,84 @@ +(deftheme personal-light + "Created 2024-08-24.") + +(custom-theme-set-faces + 'personal-light + '(button ((t (:inherit (link))))) + '(cursor ((t (:background "#00BBFF")))) + '(escape-glyph ((((background dark)) (:foreground "cyan")) (((type pc)) (:foreground "magenta")) (t (:foreground "brown")))) + '(fixed-pitch ((t (:family "Monospace")))) + '(font-lock-bracket-face ((t (:inherit (font-lock-punctuation-face))))) + '(font-lock-builtin-face ((t (:foreground "#A020F0")))) + '(font-lock-comment-delimiter-face ((t (:inherit (font-lock-comment-face))))) + '(font-lock-comment-face ((t (:foreground "#204A87")))) + '(font-lock-constant-face ((t (:foreground "#F5666D")))) + '(font-lock-delimiter-face ((t (:inherit (font-lock-punctuation-face))))) + '(font-lock-doc-face ((t (:inherit (font-lock-string-face))))) + '(font-lock-doc-markup-face ((t (:inherit (font-lock-constant-face))))) + '(font-lock-escape-face ((t (:inherit (font-lock-regexp-grouping-backslash))))) + '(font-lock-function-call-face ((t (:inherit (font-lock-function-name-face))))) + '(font-lock-function-name-face ((t (:weight bold :foreground "#00578E")))) + '(font-lock-keyword-face ((t (:weight bold :foreground "#A52A2A")))) + '(font-lock-misc-punctuation-face ((t (:inherit (font-lock-punctuation-face))))) + '(font-lock-negation-char-face ((t nil))) + '(font-lock-number-face ((t nil))) + '(font-lock-operator-face ((t nil))) + '(font-lock-preprocessor-face ((t (:inherit (font-lock-builtin-face))))) + '(font-lock-property-name-face ((t (:inherit (font-lock-variable-name-face))))) + '(font-lock-property-use-face ((t (:inherit (font-lock-property-name-face))))) + '(font-lock-punctuation-face ((t nil))) + '(font-lock-regexp-grouping-backslash ((t (:inherit (bold))))) + '(font-lock-regexp-grouping-construct ((t (:inherit (bold))))) + '(font-lock-string-face ((t (:foreground "#4E9A06")))) + '(font-lock-type-face ((t (:weight bold :foreground "#2F8B58")))) + '(font-lock-variable-name-face ((t (:weight bold :foreground "#0084C8")))) + '(font-lock-variable-use-face ((t (:inherit (font-lock-variable-name-face))))) + '(font-lock-warning-face ((t (:weight bold :foreground "#F5666D")))) + '(fringe ((t (:background "#E6E6E6")))) + '(header-line ((t (:background "#CCCCCC" :foreground "black")))) + '(highlight ((t (:foreground "white" :background "#4A90D9")))) + '(homoglyph ((((background dark)) (:foreground "cyan")) (((type pc)) (:foreground "magenta")) (t (:foreground "brown")))) + '(isearch ((t (:foreground "white" :background "#77A4DD")))) + '(isearch-fail ((((class color) (min-colors 88) (background light)) (:background "RosyBrown1")) (((class color) (min-colors 88) (background dark)) (:background "red4")) (((class color) (min-colors 16)) (:background "red")) (((class color) (min-colors 8)) (:background "red")) (((class color grayscale)) (:foreground "grey")) (t (:inverse-video t)))) + '(lazy-highlight ((((class color) (min-colors 88) (background light)) (:distant-foreground "black" :background "paleturquoise")) (((class color) (min-colors 88) (background dark)) (:distant-foreground "white" :background "paleturquoise4")) (((class color) (min-colors 16)) (:distant-foreground "white" :background "turquoise3")) (((class color) (min-colors 8)) (:distant-foreground "white" :background "turquoise3")) (t (:underline (:color foreground-color :style line :position nil))))) + '(link ((t (:underline (:color foreground-color :style line :position nil) :foreground "#0066CC")))) + '(link-visited ((t (:underline (:color foreground-color :style line :position nil) :foreground "#6799CC")))) + '(match ((((class color) (min-colors 88) (background light)) (:background "khaki1")) (((class color) (min-colors 88) (background dark)) (:background "RoyalBlue3")) (((class color) (min-colors 8) (background light)) (:foreground "black" :background "yellow")) (((class color) (min-colors 8) (background dark)) (:foreground "white" :background "blue")) (((type tty) (class mono)) (:inverse-video t)) (t (:background "gray")))) + '(minibuffer-prompt ((t (:weight bold :foreground "#0084C8")))) + '(mode-line ((t (:box (:line-width (1 . -1) :color nil :style released-button) :foreground "#2E3436" :background "white")))) + '(mode-line-buffer-id ((t (:weight bold)))) + '(mode-line-emphasis ((t (:weight bold)))) + '(mode-line-highlight ((t (:box (:line-width (2 . 2) :color "grey40" :style released-button))))) + '(mode-line-inactive ((t (:background "white" :foreground "#929292")))) + '(next-error ((t (:inherit (region))))) + '(org-block ((t (:inherit default)))) + '(org-code ((t (:foreground "green4")))) + '(org-hide ((t (:foreground "#EDEDED")))) + '(org-quote ((t (:slant italic)))) + '(org-verbatim ((t (:foreground "red3")))) + '(query-replace ((t (:inherit (isearch))))) + '(region ((t (:extend t :background "#C2D5E9")))) + '(secondary-selection ((((class color) (min-colors 88) (background light)) (:extend t :background "yellow1")) (((class color) (min-colors 88) (background dark)) (:extend t :background "SkyBlue4")) (((class color) (min-colors 16) (background light)) (:extend t :background "yellow")) (((class color) (min-colors 16) (background dark)) (:extend t :background "SkyBlue4")) (((class color) (min-colors 8)) (:extend t :foreground "black" :background "cyan")) (t (:inverse-video t)))) + '(shadow ((((class color grayscale) (min-colors 88) (background light)) + (:foreground "grey50")) + (((class color grayscale) (min-colors 88) (background dark)) + (:foreground "grey70")) + (((class color) (min-colors 8) (background light)) + (:foreground "green")) + (((class color) (min-colors 8) (background dark)) (:foreground "yellow")))) + '(tab-bar ((t (:background "white")))) + '(tab-bar-tab ((t (:background "white" :foreground "grey5" :box (:line-width 2 :color "grey19"))))) + '(tab-bar-tab-inactive ((t (:background "grey70" :foreground "black")))) + '(tooltip ((t (:foreground "black" :background "lightyellow" :inherit (variable-pitch))))) + '(trailing-whitespace ((((class color) (background light)) (:background "red1")) (((class color) (background dark)) (:background "red1")) (t (:inverse-video t)))) + '(variable-pitch ((((type w32)) (:foundry "outline" :family "Arial")) (t (:family "Sans Serif")))) + '(whitespace-line ((t (:inherit default :background "#e3e3e3" :foreground "violet")))) + '(whitespace-space ((t (:inherit default :background "#e3e3e3" :foreground "blue")))) + '(whitespace-tab ((t (:inherit default :background "#e3e3e3" :foreground "grey20")))) + '(default ((t (:family "RecMonoDuotone Nerd Font Propo" :foundry "ADBO" + :width normal :weight normal :slant normal :underline nil + :overline nil :extend nil :strike-through nil :box nil :inverse-video nil + :foreground "#2E3436" :background "#EDEDED" :stipple nil :inherit + nil))))) + +(provide-theme 'personal-light) diff --git a/Emacs/.config/emacs/elisp/personal-solarized-theme.el b/Emacs/.config/emacs/elisp/personal-solarized-theme.el index de77344..4cf610e 100644 --- a/Emacs/.config/emacs/elisp/personal-solarized-theme.el +++ b/Emacs/.config/emacs/elisp/personal-solarized-theme.el @@ -73,8 +73,9 @@ '(orderless-match-face-1 ((t (:weight bold :foreground "light green")))) '(orderless-match-face-2 ((t (:weight bold :foreground "forest green")))) '(orderless-match-face-3 ((t (:weight bold :foreground "dark green")))) - '(org-block ((t (:inherit shadow)))) + '(org-block ((t (:inherit default)))) '(org-code ((t (:foreground "green3")))) + '(org-hide ((t (:foreground "black")))) '(org-quote ((t (:slant italic)))) '(org-verbatim ((t (:foreground "red3")))) '(outline-1 ((t (:inherit default :foreground "#db5823")))) @@ -102,15 +103,12 @@ '(rainbow-delimiters-unmatched-face ((t (:extend t :foreground "white" :background "red3")))) '(region ((t (:extend t :background "grey25")))) '(secondary-selection ((t (:extend t :background "SkyBlue4")))) - '(shadow ((((class color grayscale) (min-colors 88) (background light)) (:foreground "grey50")) - (((class color grayscale) (min-colors 88) (background dark)) (:foreground "grey70")) - (((class color) (min-colors 8) (background light)) (:foreground "green")) - (((class color) (min-colors 8) (background dark)) (:foreground "yellow")))) + '(shadow ((t (:foreground "grey70")))) '(show-paren-match ((t (:foreground unspecified :foreground "#55ec55" :weight bold)))) '(show-paren-mismatch ((t (:foreground "#01323d" :background "#ec1111" :weight bold)))) - '(tab-bar ((t (:background "grey13")))) - '(tab-bar-tab ((t (:background "grey20" :foreground "white" :box (:color ))))) - '(tab-bar-tab-inactive ((t (:background "grey13" :foreground "DimGrey")))) + '(tab-bar ((t (:background "black")))) + '(tab-bar-tab ((t (:background "grey5" :foreground "white" :box (:line-width 2 :color "grey19"))))) + '(tab-bar-tab-inactive ((t (:background "black" :foreground "DimGrey")))) '(tooltip ((t (:foreground "black" :background "lightyellow" :inherit (variable-pitch))))) '(trailing-whitespace ((t (:background "red1")))) '(whitespace-line ((t (:background "black" :foreground "violet")))) -- cgit v1.2.3-13-gbd6f