dotfiles

:)
git clone https://git.sr.ht/~ashymad/dotfiles
Log | Files | Refs | Submodules | LICENSE

commit c137a029448ca868cd0fc298b2d73818d6618b59
parent 59b5c9db64d483a9d13326ca1f8edef6a60c0813
Author: Ashymad <czilukim@o2.pl>
Date:   Wed, 31 Jan 2018 22:06:13 +0100

Add alacritty conf. Redesing .emacs and move to .emacs.d/init.el

Diffstat:
A.config/alacritty/alacritty.yml | 373+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
D.emacs | 104-------------------------------------------------------------------------------
A.emacs.d/init.el | 148+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 521 insertions(+), 104 deletions(-)

diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml @@ -0,0 +1,373 @@ +# Configuration for Alacritty, the GPU enhanced terminal emulator + + +# Any items in the `env` entry below will be added as +# environment variables. Some entries may override variables +# set by alacritty it self. +env: + # TERM env customization. + # + # If this property is not set, alacritty will set it to xterm-256color. + # + # Note that some xterm terminfo databases don't declare support for italics. + # You can verify this by checking for the presence of `smso` and `sitm` in + # `infocmp xterm-256color`. + TERM: xterm-256color + +# Window dimensions in character columns and lines +# Falls back to size specified by window manager if set to 0x0. +# (changes require restart) +dimensions: + columns: 80 + lines: 24 + +# Scrollback buffer +scrollback: + enabled: true + max_lines: 10000 + +# Adds this many blank pixels of padding around the window +# Units are physical pixels; this is not DPI aware. +# (change requires restart) +padding: + x: 2 + y: 2 + +# Display tabs using this many cells (changes require restart) +tabspaces: 8 + +# When true, bold text is drawn using the bright variant of colors. +draw_bold_text_with_bright_colors: true + +# Font configuration (changes require restart) +# +# Important font attributes like antialiasing, subpixel aa, and hinting can be +# controlled through fontconfig. Specifically, the following attributes should +# have an effect: +# +# * hintstyle +# * antialias +# * lcdfilter +# * rgba +# +# For instance, if you wish to disable subpixel antialiasing, you might set the +# rgba property to "none". If you wish to completely disable antialiasing, you +# can set antialias to false. +# +# Please see these resources for more information on how to use fontconfig +# +# * https://wiki.archlinux.org/index.php/font_configuration#Fontconfig_configuration +# * file:///usr/share/doc/fontconfig/fontconfig-user.html +font: + # The normal (roman) font face to use. + normal: + family: Monofur # should be "Menlo" or something on macOS. + # Style can be specified to pick a specific face. + style: Regular + + # The bold font face + bold: + family: Monofur # # should be "Menlo" or something on macOS. + # Style can be specified to pick a specific face. + style: Bold + + # The italic font face + italic: + family: Monofur # should be "Menlo" or something on macOS. + # Style can be specified to pick a specific face. + style: Italic + + # Point size of the font + size: 16.0 + + # Offset is the extra space around each character. offset.y can be thought of + # as modifying the linespacing, and offset.x as modifying the letter spacing. + offset: + x: -1.0 + y: 0.0 + + # Glyph offset determines the locations of the glyphs within their cells with + # the default being at the bottom. Increase the x offset to move the glyph to + # the right, increase the y offset to move the glyph upward. + glyph_offset: + x: 0.0 + y: 0.0 + + # OS X only: use thin stroke font rendering. Thin strokes are suitable + # for retina displays, but for non-retina you probably want this set to + # false. + use_thin_strokes: false + +# Should display the render timer +render_timer: false + +# Use custom cursor colors. If true, display the cursor in the cursor.foreground +# and cursor.background colors, otherwise invert the colors of the cursor. +custom_cursor_colors: false + +# Colors (Tomorrow Night Bright) +colors: + # Default colors + primary: + background: '0x000000' + foreground: '0xa8a8a8' + + # Colors the cursor will use if `custom_cursor_colors` is true + cursor: + text: '0x000000' + cursor: '0xffffff' + + # Normal colors + normal: + black: '0x000000' + red: '0xa80000' + green: '0x00a800' + yellow: '0xa85400' + blue: '0x0000a8' + magenta: '0xa800a8' + cyan: '0x00a8a8' + white: '0xa8a8a8' + + # Bright colors + bright: + black: '0x545454' + red: '0xfc5454' + green: '0x54fc54' + yellow: '0xfcfc54' + blue: '0x5454fc' + magenta: '0xfc54fc' + cyan: '0x54fcfc' + white: '0xfcfcfc' + + # Dim colors (Optional) +# dim: +# black: '0x333333' +# red: '0xf2777a' +# green: '0x99cc99' +# yellow: '0xffcc66' +# blue: '0x6699cc' +# magenta: '0xcc99cc' +# cyan: '0x66cccc' +# white: '0xdddddd' + +# Visual Bell +# +# Any time the BEL code is received, Alacritty "rings" the visual bell. Once +# rung, the terminal background will be set to white and transition back to the +# default background color. You can control the rate of this transition by +# setting the `duration` property (represented in milliseconds). You can also +# configure the transition function by setting the `animation` property. +# +# Possible values for `animation` +# `Ease` +# `EaseOut` +# `EaseOutSine` +# `EaseOutQuad` +# `EaseOutCubic` +# `EaseOutQuart` +# `EaseOutQuint` +# `EaseOutExpo` +# `EaseOutCirc` +# `Linear` +# +# To completely disable the visual bell, set its duration to 0. +# +visual_bell: + animation: EaseOutExpo + duration: 0 + +# Background opacity +background_opacity: 1.0 + +# Mouse bindings +# +# Currently doesn't support modifiers. Both the `mouse` and `action` fields must +# be specified. +# +# Values for `mouse`: +# - Middle +# - Left +# - Right +# - Numeric identifier such as `5` +# +# Values for `action`: +# - Paste +# - PasteSelection +# - Copy (TODO) +mouse_bindings: + - { mouse: Middle, action: PasteSelection } + +mouse: + double_click: { threshold: 300 } + triple_click: { threshold: 300 } + +selection: + semantic_escape_chars: ",│`|:\"' ()[]{}<>" + +hide_cursor_when_typing: false + +# Style of the cursor +# +# Values for 'cursor_style': +# - Block +# - Underline +# - Beam +cursor_style: Block + +# Live config reload (changes require restart) +live_config_reload: true + +# Shell +# +# You can set shell.program to the path of your favorite shell, e.g. /bin/fish. +# Entries in shell.args are passed unmodified as arguments to the shell. +# shell: +# program: /bin/bash +# args: +# - --login + + +# Key bindings +# +# Each binding is defined as an object with some properties. Most of the +# properties are optional. All of the alphabetical keys should have a letter for +# the `key` value such as `V`. Function keys are probably what you would expect +# as well (F1, F2, ..). The number keys above the main keyboard are encoded as +# `Key1`, `Key2`, etc. Keys on the number pad are encoded `Number1`, `Number2`, +# etc. These all match the glutin::VirtualKeyCode variants. +# +# Possible values for `mods` +# `Command`, `Super` refer to the super/command/windows key +# `Control` for the control key +# `Shift` for the Shift key +# `Alt` and `Option` refer to alt/option +# +# mods may be combined with a `|`. For example, requiring control and shift +# looks like: +# +# mods: Control|Shift +# +# The parser is currently quite sensitive to whitespace and capitalization - +# capitalization must match exactly, and piped items must not have whitespace +# around them. +# +# Either an `action`, `chars`, or `command` field must be present. +# `action` must be one of `Paste`, `PasteSelection`, `Copy`, or `Quit`. +# `chars` writes the specified string every time that binding is activated. +# These should generally be escape sequences, but they can be configured to +# send arbitrary strings of bytes. +# `command` must be a map containing a `program` string, and `args` array of +# strings. For example: +# - { ... , command: { program: "alacritty", args: ["-e", "vttest"] } } +# +# Want to add a binding (e.g. "PageUp") but are unsure what the X sequence +# (e.g. "\x1b[5~") is? Open another terminal (like xterm) without tmux, +# then run `showkey -a` to get the sequence associated to a key combination. +key_bindings: + - { key: V, mods: Control|Shift, action: Paste } + - { key: C, mods: Control|Shift, action: Copy } + - { key: Q, mods: Command, action: Quit } + - { key: W, mods: Command, action: Quit } + - { key: Insert, mods: Shift, action: PasteSelection } + - { key: Key0, mods: Control, action: ResetFontSize } + - { key: Equals, mods: Control, action: IncreaseFontSize } + - { key: Subtract, mods: Control, action: DecreaseFontSize } + - { key: Up, mods: Control|Shift, action: ScrollUp } + - { key: Down, mods: Control|Shift, action: ScrollDown } + - { key: PageUp, mods: Shift, action: PageUp } + - { key: PageDown, mods: Shift, action: PageDown } + - { key: Home, chars: "\x1bOH", mode: AppCursor } + - { key: Home, chars: "\x1b[H", mode: ~AppCursor } + - { key: End, chars: "\x1bOF", mode: AppCursor } + - { key: End, chars: "\x1b[F", mode: ~AppCursor } + - { key: PageUp, mods: Shift, chars: "\x1b[5;2~" } + #- { key: PageUp, mods: Control, chars: "\x1b[5;5~" } + - { key: PageUp, chars: "\x1b[5~" } + #- { key: PageDown, mods: Shift, chars: "\x1b[6;2~" } + - { key: PageDown, mods: Control, chars: "\x1b[6;5~" } + - { key: PageDown, chars: "\x1b[6~" } + - { key: Tab, mods: Shift, chars: "\x1b[Z" } + - { key: Back, chars: "\x7f" } + - { key: Back, mods: Alt, chars: "\x1b\x7f" } + - { key: Insert, chars: "\x1b[2~" } + - { key: Delete, chars: "\x1b[3~" } + - { key: Left, mods: Shift, chars: "\x1b[1;2D" } + - { key: Left, mods: Control, chars: "\x1b[1;5D" } + - { key: Left, mods: Alt, chars: "\x1b[1;3D" } + - { key: Left, chars: "\x1b[D", mode: ~AppCursor } + - { key: Left, chars: "\x1bOD", mode: AppCursor } + - { key: Right, mods: Shift, chars: "\x1b[1;2C" } + - { key: Right, mods: Control, chars: "\x1b[1;5C" } + - { key: Right, mods: Alt, chars: "\x1b[1;3C" } + - { key: Right, chars: "\x1b[C", mode: ~AppCursor } + - { key: Right, chars: "\x1bOC", mode: AppCursor } + - { key: Up, mods: Shift, chars: "\x1b[1;2A" } + - { key: Up, mods: Control, chars: "\x1b[1;5A" } + - { key: Up, mods: Alt, chars: "\x1b[1;3A" } + - { key: Up, chars: "\x1b[A", mode: ~AppCursor } + - { key: Up, chars: "\x1bOA", mode: AppCursor } + - { key: Down, mods: Shift, chars: "\x1b[1;2B" } + - { key: Down, mods: Control, chars: "\x1b[1;5B" } + - { key: Down, mods: Alt, chars: "\x1b[1;3B" } + - { key: Down, chars: "\x1b[B", mode: ~AppCursor } + - { key: Down, chars: "\x1bOB", mode: AppCursor } + - { key: F1, chars: "\x1bOP" } + - { key: F2, chars: "\x1bOQ" } + - { key: F3, chars: "\x1bOR" } + - { key: F4, chars: "\x1bOS" } + - { key: F5, chars: "\x1b[15~" } + - { key: F6, chars: "\x1b[17~" } + - { key: F7, chars: "\x1b[18~" } + - { key: F8, chars: "\x1b[19~" } + - { key: F9, chars: "\x1b[20~" } + - { key: F10, chars: "\x1b[21~" } + - { key: F11, chars: "\x1b[23~" } + - { key: F12, chars: "\x1b[24~" } + - { key: F1, mods: Shift, chars: "\x1b[1;2P" } + - { key: F2, mods: Shift, chars: "\x1b[1;2Q" } + - { key: F3, mods: Shift, chars: "\x1b[1;2R" } + - { key: F4, mods: Shift, chars: "\x1b[1;2S" } + - { key: F5, mods: Shift, chars: "\x1b[15;2~" } + - { key: F6, mods: Shift, chars: "\x1b[17;2~" } + - { key: F7, mods: Shift, chars: "\x1b[18;2~" } + - { key: F8, mods: Shift, chars: "\x1b[19;2~" } + - { key: F9, mods: Shift, chars: "\x1b[20;2~" } + - { key: F10, mods: Shift, chars: "\x1b[21;2~" } + - { key: F11, mods: Shift, chars: "\x1b[23;2~" } + - { key: F12, mods: Shift, chars: "\x1b[24;2~" } + - { key: F1, mods: Control, chars: "\x1b[1;5P" } + - { key: F2, mods: Control, chars: "\x1b[1;5Q" } + - { key: F3, mods: Control, chars: "\x1b[1;5R" } + - { key: F4, mods: Control, chars: "\x1b[1;5S" } + - { key: F5, mods: Control, chars: "\x1b[15;5~" } + - { key: F6, mods: Control, chars: "\x1b[17;5~" } + - { key: F7, mods: Control, chars: "\x1b[18;5~" } + - { key: F8, mods: Control, chars: "\x1b[19;5~" } + - { key: F9, mods: Control, chars: "\x1b[20;5~" } + - { key: F10, mods: Control, chars: "\x1b[21;5~" } + - { key: F11, mods: Control, chars: "\x1b[23;5~" } + - { key: F12, mods: Control, chars: "\x1b[24;5~" } + - { key: F1, mods: Alt, chars: "\x1b[1;6P" } + - { key: F2, mods: Alt, chars: "\x1b[1;6Q" } + - { key: F3, mods: Alt, chars: "\x1b[1;6R" } + - { key: F4, mods: Alt, chars: "\x1b[1;6S" } + - { key: F5, mods: Alt, chars: "\x1b[15;6~" } + - { key: F6, mods: Alt, chars: "\x1b[17;6~" } + - { key: F7, mods: Alt, chars: "\x1b[18;6~" } + - { key: F8, mods: Alt, chars: "\x1b[19;6~" } + - { key: F9, mods: Alt, chars: "\x1b[20;6~" } + - { key: F10, mods: Alt, chars: "\x1b[21;6~" } + - { key: F11, mods: Alt, chars: "\x1b[23;6~" } + - { key: F12, mods: Alt, chars: "\x1b[24;6~" } + - { key: F1, mods: Super, chars: "\x1b[1;3P" } + - { key: F2, mods: Super, chars: "\x1b[1;3Q" } + - { key: F3, mods: Super, chars: "\x1b[1;3R" } + - { key: F4, mods: Super, chars: "\x1b[1;3S" } + - { key: F5, mods: Super, chars: "\x1b[15;3~" } + - { key: F6, mods: Super, chars: "\x1b[17;3~" } + - { key: F7, mods: Super, chars: "\x1b[18;3~" } + - { key: F8, mods: Super, chars: "\x1b[19;3~" } + - { key: F9, mods: Super, chars: "\x1b[20;3~" } + - { key: F10, mods: Super, chars: "\x1b[21;3~" } + - { key: F11, mods: Super, chars: "\x1b[23;3~" } + - { key: F12, mods: Super, chars: "\x1b[24;3~" } diff --git a/.emacs b/.emacs @@ -1,104 +0,0 @@ - -;; Added by Package.el. This must come before configurations of -;; installed packages. Don't delete this line. If you don't want it, -;; just comment it out by adding a semicolon to the start of the line. -;; You may delete these explanatory comments. -(package-initialize) - -(require 'package) -(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/")) - -(require 'paradox) -(paradox-enable) - -(require 'poly-R) -(add-to-list 'auto-mode-alist '("\\.Rnw" . poly-noweb+r-mode)) - -(require 'ess-site) - -(add-to-list 'load-path "~/.emacs.d/evil") -(require 'evil) -(evil-mode 1) - -(setq TeX-source-correlate-mode t - TeX-source-correlate-start-server t) - -(setq ess-swv-pdflatex-commands (quote ("pdflatex" "texi2pdf" "make"))) - -(setq ess-swv-processor 'knitr) - -(require 'ess-site) -(with-eval-after-load "ess" - (setq ess-swv-plug-into-AUCTeX-p t)) - -(defun ess-noweb-post-command-function () - "The hook being run after each command in noweb mode." - (condition-case err - (ess-noweb-select-mode) - (error - ()))) -(defun ess-swv-add-TeX-commands () - "Add commands to AUCTeX's \\[TeX-command-list]." - (unless (and (featurep 'tex-site) (featurep 'tex)) - (error "AUCTeX does not seem to be loaded")) - (add-to-list 'TeX-command-list - '("Knit" "Rscript -e \"library(knitr); knit('%t')\"" - TeX-run-command nil (latex-mode) :help - "Run Knitr") t) - (add-to-list 'TeX-command-list - '("LaTeXKnit" "%l %(mode) %s; Rscript -e \"require('patchSynctex'); patchSynctex('%s')\"" - TeX-run-TeX nil (latex-mode) :help - "Run LaTeX after Knit") t) - (setq TeX-command-default "Knit") - (mapc (lambda (suffix) - (add-to-list 'TeX-file-extensions suffix)) - '("nw" "Snw" "Rnw"))) - -(defun ess-swv-remove-TeX-commands (x) - "Helper function: check if car of X is one of the Knitr strings" - (let ((swv-cmds '("Knit" "LaTeXKnit"))) - (unless (member (car x) swv-cmds) x))) -(eval-after-load "tex" - '(add-to-list 'TeX-view-program-selection - '(output-pdf "Zathura"))) -(with-eval-after-load "latex" - (define-key LaTeX-mode-map (kbd "C-c C-d") (kbd "C-c C-c Knit RET"))) -(with-eval-after-load "latex" - (define-key LaTeX-mode-map (kbd "C-c C-q") (kbd "C-c C-c LaTeXKnit RET"))) -(with-eval-after-load "latex" - (add-hook 'LaTeX-mode-hook 'flyspell-mode)) - -(setq mouse-wheel-scroll-amount '(1)) -(setq mouse-wheel-progressive-speed nil) - -(global-set-key (kbd "C-x g") 'magit-status) - -(require 'flyspell-lazy) -(flyspell-lazy-mode 1) - -(setq TeX-parse-self t) ; Enable parse on load. -(setq TeX-auto-save t) ; Enable parse on save. -(setq TeX-auto-untabify t) -(add-hook 'TeX-language-pl-hook - (lambda () (ispell-change-dictionary "polish"))) - -(custom-set-variables - ;; custom-set-variables was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(ansi-color-faces-vector - [default default default italic underline success warning error]) - '(ansi-color-names-vector - ["#242424" "#e5786d" "#95e454" "#cae682" "#8ac6f2" "#333366" "#ccaa8f" "#f6f3e8"]) - '(custom-enabled-themes (quote (tsdh-dark))) - '(package-selected-packages - (quote - (flyspell-lazy ess markdown-mode async auctex evil-magit magit evil ## polymode paradox))) - '(tool-bar-mode nil)) -(custom-set-faces - ;; custom-set-faces was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(default ((t (:family "Monaco" :foundry "unknown" :slant normal :weight normal :height 141 :width normal))))) diff --git a/.emacs.d/init.el b/.emacs.d/init.el @@ -0,0 +1,148 @@ +;; (package-initialize) + +;; Recompile emacs.d +(byte-recompile-directory (expand-file-name "~/.emacs.d") 0) + +;; Sane amount of scroll +(setq mouse-wheel-scroll-amount '(1)) +(setq mouse-wheel-progressive-speed nil) + +;; Setup package.el +(require 'package) +(setq package-enable-at-startup nil) +(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/")) +(package-initialize) + +;; Bootstrap `use-package' +(unless (package-installed-p 'use-package) + (package-refresh-contents) + (package-install 'use-package)) + +;; Initialize use-package +(eval-when-compile + (require 'use-package)) + +;; Initialize Paradox +(use-package paradox + :config + ;; Override default package manager with paradox + (paradox-enable)) + +;; Initialize Evil +(use-package evil + :config + ;; Global evil mode + (evil-mode 1)) + +;; Initialize magit +(use-package magit + :config + (global-set-key (kbd "C-x g") 'magit-status)) + +;; Initialize evil-magit +(use-package evil-magit + :requires + (evil magit)) + +;; Initialize AUCTeX +(use-package tex + :hook + (TeX-language-pl . (lambda () (ispell-change-dictionary "polish"))) + (LaTeX-mode . flyspell-mode) + :init + (setq TeX-source-correlate-mode t + TeX-source-correlate-start-server t + TeX-parse-self t ; Enable parse on load + TeX-auto-save t ; Enable parse on save + TeX-auto-untabify t) ; Auto change tabs to spaces + :config + ;; Set default PDF viewer + (add-to-list 'TeX-view-program-selection + '(output-pdf "Zathura"))) + +(use-package flyspell-lazy + :config + (flyspell-lazy-mode 1)) + +;; Initalize ESS +(use-package ess-site + :hook + (ess-noweb-mode . (lambda () (if (not ess-swv-plug-into-AUCTeX-p) + (ess-swv-toggle-plug-into-AUCTeX)))) + :config + (setq ess-swv-pdflatex-commands (quote ("pdflatex" "texi2pdf" "make"))) + (setq ess-swv-processor 'knitr) + ;; Change AUCTeX Sweave commands to Knitr + (defun ess-swv-add-TeX-commands () + "Add commands to AUCTeX's \\[TeX-command-list]." + (unless (and (featurep 'tex-site) (featurep 'tex)) + (error "AUCTeX does not seem to be loaded")) + (add-to-list 'TeX-command-list + '("Knit" "Rscript -e \"library(knitr); knit('%t')\"" + TeX-run-command nil (latex-mode) :help + "Run Knitr") t) + (add-to-list 'TeX-command-list + '("LaTeXKnit" "%l %(mode) %s; Rscript -e \"require('patchSynctex'); patchSynctex('%s')\"" + TeX-run-TeX nil (latex-mode) :help + "Run LaTeX after Knit") t) + (setq TeX-command-default "Knit") + (mapc (lambda (suffix) + (add-to-list 'TeX-file-extensions suffix)) + '("nw" "Snw" "Rnw"))) + (defun ess-swv-remove-TeX-commands (x) + "Helper function: check if car of X is one of the Knitr strings" + (let ((swv-cmds '("Knit" "LaTeXKnit"))) + (unless (member (car x) swv-cmds) x)))) + +;; Initialize company-mode +(use-package company + :config + (global-company-mode)) + +;; Initialize SLIME +(use-package slime + :init + (load (expand-file-name "~/quicklisp/slime-helper.el")) + (setq inferior-lisp-program "sbcl")) + +;; Initialize slime-company +(use-package slime-company + :requires + (slime company) + :config + (slime-setup '(slime-company))) + +;; Initialize rainbow-delimiters +(use-package rainbow-delimiters + :hook + (prog-mode . rainbow-delimiters-mode)) + +;; Initialize zerodark theme +(use-package zerodark-theme + :config + (zerodark-setup-modeline-format)) + +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(ansi-color-faces-vector + [default default default italic underline success warning error]) + '(ansi-color-names-vector + ["#242424" "#e5786d" "#95e454" "#cae682" "#8ac6f2" "#333366" "#ccaa8f" "#f6f3e8"]) + '(custom-enabled-themes (quote (zerodark))) + '(custom-safe-themes + (quote + ("f142c876b896c6ca19149cacd80ddd68a351f67f7fe3b786274ceee970276780" default))) + '(package-selected-packages + (quote + (use-package rainbow-delimiters zerodark-theme wc-mode flyspell-lazy ess markdown-mode async auctex evil-magit magit evil ## paradox))) + '(paradox-github-token t) + '(tool-bar-mode nil)) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(default ((t (:family "DejaVu Sans Mono" :foundry "PfEd" :slant normal :weight normal :height 128 :width normal)))))