Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/monkeyjunglejuice/matrix-emacs-theme
"Unfortunately, no one can be told what The Matrix Theme is. You’ll have to see it for yourself." —Morpheus
https://github.com/monkeyjunglejuice/matrix-emacs-theme
color-scheme dark-mode dark-theme emacs-package emacs-theme matrix-theme
Last synced: 23 days ago
JSON representation
"Unfortunately, no one can be told what The Matrix Theme is. You’ll have to see it for yourself." —Morpheus
- Host: GitHub
- URL: https://github.com/monkeyjunglejuice/matrix-emacs-theme
- Owner: monkeyjunglejuice
- License: mit
- Created: 2021-12-16T23:51:44.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-02-14T07:47:57.000Z (12 months ago)
- Last Synced: 2024-02-14T08:39:00.634Z (12 months ago)
- Topics: color-scheme, dark-mode, dark-theme, emacs-package, emacs-theme, matrix-theme
- Language: Emacs Lisp
- Homepage:
- Size: 770 KB
- Stars: 22
- Watchers: 2
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.org
- License: LICENSE
Awesome Lists containing this project
README
* "Unfortunately, no one can be told what The Matrix Theme is. You’ll have to see it for yourself" —Morpheus
I was looking for an almost monochrome green-on-black theme for the darker surroundings, because it helps me to focus, for some reason.
** Screenshots
*** Tuareg (OCaml)
[[file:screenshots/tuareg.png]]
*** Dired + Selectrum + Marginalia
[[file:screenshots/dired.png]]
*** Magit
[[file:screenshots/magit.png]]** Colors
There are only three base colors used:
- *Matrix Green*: coming in different shades and luminositiy for syntax highlighting
- *Blue*: for infos, hints, notifications and diff-added
- *Red*: for warnings, errors and diff-removed** Typography
Due to the the reduced amount of colors, this theme makes use of font styles: italic, a lighter weight and an alternative monospaced font, configured via ~fixed-pitch-serif~. The latter is used to distinguish strings, comments and documentation.
Monospace fonts come in different character width. If your ~default~ and ~fixed-pitch-serif~ have a different width, then the columns will not align with each other. If you don't set your ~fixed-pitch-serif~ explicitly, then a substitute font for ~fixed-pitch-serif~ will be chosen by Emacs, which may or may not go well with your ~default~ font.
For best results, I recommend to configure Emacs' primary font ~default~ and a secondary font ~fixed-pitch-serif~ (examples below). Each monospaced font *should have the same width*. Here are some font pairings that work well together. You can set up one as your ~default~ and the other one as ~fixed-pitch-serif~:
| ~default~ | ~fixed-pitch-serif~ | Download |
|------------------------------+------------------------------+-------------------------------------------|
| Iosevka | Iosevka Slab | https://typeof.net/Iosevka |
| Recursive Mono Linear Static | Recursive Mono Casual Static | https://www.recursive.design |
| Courier Prime Code | Courier Prime | https://quoteunquoteapps.com/courierprime |
| Fira Code ~:weight 'normal~ | Fira Code ~:weight 'light~ | https://github.com/tonsky/FiraCode |/If you know other font pairs that have exactly the same width and look nicely together, please let me know (create an issue or PR) and I will add your pairing to the table./
To disable this feature, simply set your ~fixed-pitch-serif~ to the same font as your ~default~.
#+caption: Example font config
#+begin_src emacs-lisp
(defun my-fonts ()
"Set the default fonts."
(set-face-attribute 'default nil
:family "Recursive Mono Linear Static"
:slant 'normal
:weight 'normal
:width 'normal
:height 120)
(set-face-attribute 'fixed-pitch nil
:family "Recursive Mono Linear Static"
:slant 'normal
:weight 'normal
:width 'normal
:height 120)
(set-face-attribute 'fixed-pitch-serif nil
:family "Recursive Mono Casual Static"
:slant 'normal
:weight 'normal
:width 'normal
:height 120)
(set-face-attribute 'variable-pitch nil
:family "Recursive Sans Casual Static"
:slant 'normal
:weight 'normal
:width 'normal
:height 140))(my-fonts) ; Apply the function
(defun my-modeline ()
"Custom modeline styling."
(set-face-attribute 'mode-line nil
:family "Recursive Mono Linear Static"
:slant 'normal
:weight 'normal
:width 'normal
:height 100)
(set-face-attribute 'mode-line-inactive nil
:family "Recursive Mono Linear Static"
:slant 'normal
:weight 'normal
:width 'normal
:height 100))(my-modeline) ; Apply the function
#+end_src** Themed Packages/Modes
Non-exhaustive list of explicitly themed packages:
- ansi colors
- term colors
- shell-script-mode
- dired
- dired-subtree
- eldoc
- proced
- eshell
- comint
- completions/icomplete
- diff
- package
- customization
- info
- message
- erc
- table
- tex
- outline
- org-mode
- org-tree-slide
- shortdoc
- compilation
- whitespace
- smartparens
- rainbow-delimiters (to make the parens /less/ visible)
- paren-face
- git-commit
- magit
- git-gutter-fringe
- diff-hl
- company
- flymake
- flycheck
- lsp-mode
- eglot
- csv-mode
- css-mode
- web-mode
- slime
- sly
- geiser
- cider
- clojure-mode
- tuareg
- merlin
- merlin-eldoc
- utop
- selectrum
- marginalia
- consult
- helm
- adoc-mode
- highlight-indent-guides
- notmuch
- switch-window
- telega
- beancount
- w3m
- elfeed
- rg
- wgrep** Installation
*** With Emacs package manager (from Melpa)
*1.* 'M-x list-packages RET'
*2.* Search for 'the-matrix-theme'
*3.* Hit the 'i' key to mark the package for installation
*4.* Hit 'x' to execute
If you cannot find "the-matrix-theme" between all the packages, it could mean that Melpa may be not yet enabled in your Emacs.
Here's the official guide how to enable Melpa: https://melpa.org/#/getting-started*** Manual Installation
*1.* Create your Emacs themes directory if it does not yet exist:
#+begin_src sh
mkdir ~/.emacs.d/themes/
#+end_src*2.* Then change into your Emacs themes directory and clone this repository:
#+begin_src sh
cd ~/.emacs.d/themes/
git clone https://github.com/monkeyjunglejuice/matrix-emacs-theme.git
#+end_src*3.* Only if you had to create the themes directory in step 1, put this in your Emacs init file (example for Linux/Unix):
#+begin_src emacs-lisp
(let ((basedir "~/.emacs.d/themes/"))
(dolist (f (directory-files basedir))
(if (and (not (or (equal f ".") (equal f "..")))
(file-directory-p (concat basedir f)))
(add-to-list 'custom-theme-load-path (concat basedir f)))))
#+end_src*4.* (Re)start Emacs. You can now disable your current Emacs theme 'M-x disable-theme ... RET' and then 'M-x load-theme RET the-matrix RET'
** Current Status
I'm using this theme on a daily basis for writing OCaml, Lisp, Org, HTML and CSS. So I'll improve it continiously. I'll also would like to make it work for Terminal and TTY.
- [X] *Graphical Emacs* Works as expected
- [ ] *Terminal emulator* Usable, but colored backgrounds (strings, errors, etc.) don't look pretty yet
- [ ] *TTY* There's no workaround yet to make colored backgrounds (strings, errors, etc.) readable*** Tested with:
- [X] Emacs 27.1 on Ubuntu 21.10
- [ ] Emacs 26.1 on Debian 10.9.0
- [ ] Emacs 27 on Windows 10
- [ ] Emacs 26 on Windows 10
- [ ] Emacs 27 on MacOS
- [ ] Emacs 26 on MacOS** Contribute
If you have issues with the theme or something looks odd, please open an issue. You are very welcome to add support for further packages/modes. See also 'Current Status'