monkeyjunglejuice / matrix-emacs-theme

"Unfortunately, no one can be told what The Matrix Theme is. You’ll have to see it for yourself." —Morpheus
MIT License
25 stars 3 forks source link
color-scheme dark-mode dark-theme emacs-package emacs-theme matrix-theme

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:

** 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:

** 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.

*** Tested with:

** 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'