mirror of
https://github.com/elkowar/dots-of-war.git
synced 2024-12-25 13:42:23 +00:00
asdf
This commit is contained in:
parent
63c8662070
commit
6917abf785
8 changed files with 85 additions and 553 deletions
|
@ -1,4 +1,4 @@
|
||||||
{
|
{
|
||||||
"optOut": false,
|
"optOut": false,
|
||||||
"lastUpdateCheck": 1604693331097
|
"lastUpdateCheck": 1605376581583
|
||||||
}
|
}
|
|
@ -1,520 +0,0 @@
|
||||||
|
|
||||||
#+TITLE: Emacs Config
|
|
||||||
|
|
||||||
* General Settings
|
|
||||||
|
|
||||||
=cl-lib= adds a few things from common-lisp emulation, adding things like =cl-loop=
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package cl-lib)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Sane defaults
|
|
||||||
|
|
||||||
Typing =:ensure t= everywhere is very bothersome so I'd rather *not* do that.
|
|
||||||
This automatically adds =:ensure t= everyhwere!
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(require 'use-package-ensure)
|
|
||||||
(setq use-package-always-ensure t)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Don't create all the custom things.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(defconst custom-file "/dev/null")
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
I don't want my Emacs to create loads of backup files, swap files, etc.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq make-backup-files nil)
|
|
||||||
(setq auto-save-default nil)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
Nor do I need all the (Windows 2000-esque) UI.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(scroll-bar-mode -1)
|
|
||||||
(tool-bar-mode -1)
|
|
||||||
(tooltip-mode -1)
|
|
||||||
(menu-bar-mode -1)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
When I fire up Emacs I want to be greeted with an empty =*scratch*= buffer, not the weird GNU screen.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq inhibit-splash-screen t
|
|
||||||
initial-scratch-message "")
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
The whole yes or no prompt takes too much time to type out. y and n is much better.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(defalias 'yes-or-no-p 'y-or-n-p)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
UTF-8 is good and should be the default for everything.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq locale-coding-system 'utf-8)
|
|
||||||
(set-terminal-coding-system 'utf-8)
|
|
||||||
(set-keyboard-coding-system 'utf-8)
|
|
||||||
(set-selection-coding-system 'utf-8)
|
|
||||||
(prefer-coding-system 'utf-8)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
Disable the bell, as the audible bell is highly anoying and pointless
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq visible-bell 1)
|
|
||||||
#+end_src
|
|
||||||
** Restart emacs
|
|
||||||
|
|
||||||
Restarting emacs from within emacs!
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package restart-emacs
|
|
||||||
:config
|
|
||||||
(setq restart-emacs-restore-frames t))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** disable clipboard whatever
|
|
||||||
|
|
||||||
|
|
||||||
Clipboard shit is fucked, so this is necessary to unfuck.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq x-select-enable-clipboard-manager nil)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Store recent files
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(recentf-mode 1)
|
|
||||||
(setq recentf-max-menu-items 25)
|
|
||||||
(setq recentf-max-saved-items 25)
|
|
||||||
;; (run-at-time nil (* 5 60) 'recentf-save-list)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Which-key
|
|
||||||
|
|
||||||
Which key makes Emacs self documenting.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package which-key
|
|
||||||
:config
|
|
||||||
(setq which-key-idle-delay 0.25)
|
|
||||||
(which-key-mode 1))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** VTerm
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package vterm)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Looks
|
|
||||||
** indentation
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(setq-default tab-width 4)
|
|
||||||
(setq-default indent-tabs-mode nil)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Font
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(add-to-list 'default-frame-alist
|
|
||||||
'(font . "Iosevka Medium"))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** COMMENT Line numbers
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package linum-relative
|
|
||||||
:config
|
|
||||||
(setq linum-relative-backend 'display-line-numbers-mode)
|
|
||||||
(linum-relative-global-mode 1))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Color Theme
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package gruvbox-theme
|
|
||||||
:config
|
|
||||||
(load-theme 'gruvbox-dark-medium t))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Beacon
|
|
||||||
|
|
||||||
Highlights the cursor each time I switch windows.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package beacon
|
|
||||||
:config
|
|
||||||
(beacon-mode 1))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Fringe
|
|
||||||
|
|
||||||
Ugly.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(fringe-mode '(10 . 10))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Line-wrapping
|
|
||||||
Line wrapping is confusing, more than anything else.
|
|
||||||
Thus, let's disable it!
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(setq-default truncate-lines 1)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Org-mode codeblocks
|
|
||||||
|
|
||||||
Let's make org-mode codeblocks look good!
|
|
||||||
|
|
||||||
For this, we first set the code-block background and make it extend to the full width.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(set-face-attribute 'org-block nil
|
|
||||||
:background "#1d2021"
|
|
||||||
:extend t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Additionally, we make the top and bottom lines of the block smaller and darker.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(cl-loop for face in '(org-block-begin-line org-block-end-line) do
|
|
||||||
(set-face-attribute face nil
|
|
||||||
:foreground "#504945"
|
|
||||||
:background "#1a1d1e"
|
|
||||||
:height 0.8
|
|
||||||
:extend t))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** COMMENT Mode-line
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
|
|
||||||
(use-package telephone-line
|
|
||||||
:config
|
|
||||||
(setq telephone-line-lhs
|
|
||||||
'((evil . (telephone-line-evil-tag-segment))
|
|
||||||
(blue . (telephone-line-vc-segment
|
|
||||||
telephone-line-process-segment))
|
|
||||||
(nil . (telephone-line-buffer-segment))))
|
|
||||||
(setq telephone-line-rhs
|
|
||||||
'((nil . (telephone-line-misc-info-segment))
|
|
||||||
(accent . (telephone-line-major-mode-segment))
|
|
||||||
(evil . (telephone-line-airline-position-segment))))
|
|
||||||
(setq telephone-line-primary-left-separator 'telephone-line-cubed-left
|
|
||||||
telephone-line-secondary-left-separator 'telephone-line-cubed-hollow-left
|
|
||||||
telephone-line-primary-right-separator 'telephone-line-cubed-right
|
|
||||||
telephone-line-secondary-right-separator 'telephone-line-cubed-hollow-right)
|
|
||||||
(setq telephone-line-height 24
|
|
||||||
telephone-line-evil-use-short-tag t)
|
|
||||||
(telephone-line-mode t))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** COMMENT doom-modeline
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
|
|
||||||
(use-package doom-modeline
|
|
||||||
:config
|
|
||||||
(setq doom-modeline-icon (display-graphic-p))
|
|
||||||
(setq doom-modeline-env-version t)
|
|
||||||
(setq doom-modeline-project-detection 'project)
|
|
||||||
(setq doom-modeline-height 1)
|
|
||||||
(doom-modeline-mode t))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
|
|
||||||
(use-package highlight-parentheses
|
|
||||||
:config
|
|
||||||
(highlight-parentheses-mode 1))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Ivy
|
|
||||||
|
|
||||||
Ivy for completing stuff, etc. is huge.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package counsel
|
|
||||||
:config
|
|
||||||
(ivy-mode)
|
|
||||||
(setq ivy-re-builders-alist '((t . ivy--regex-fuzzy)))
|
|
||||||
(setq ivy-initial-inputs-alist nil)
|
|
||||||
|
|
||||||
:bind
|
|
||||||
("C-s" . swiper)
|
|
||||||
("M-x". counsel-M-x))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
Flx does fancy fuzzy matching with good sorting
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package flx)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Projectile
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package projectile :config (projectile-mode t))
|
|
||||||
(use-package counsel-projectile :after projectile counsel)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
|
|
||||||
fix the naming for which-key
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(add-to-list 'which-key-replacement-alist
|
|
||||||
'((nil . "projectile-\\([[:alnum:]-]+\\)") . (nil . "\\1")))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* general.el
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package general
|
|
||||||
:config
|
|
||||||
(general-evil-setup)
|
|
||||||
(general-def
|
|
||||||
:states '(normal motion)
|
|
||||||
"SPC" nil)
|
|
||||||
|
|
||||||
(general-create-definer elk-noleader-def
|
|
||||||
:states '(normal motion)
|
|
||||||
:keymaps 'override)
|
|
||||||
(general-create-definer elk-leader-def
|
|
||||||
:prefix "SPC"
|
|
||||||
:states '(normal motion)
|
|
||||||
:keymaps 'override)
|
|
||||||
(elk-leader-def
|
|
||||||
"a" 'org-agenda
|
|
||||||
"s" 'org-store-link
|
|
||||||
"t" '((lambda () (interactive) (org-capture nil "t")) :wk "org-capture whatever")
|
|
||||||
"f" '(counsel-find-file :wk "open a file")
|
|
||||||
"1" 'delete-other-windows
|
|
||||||
"0" 'delete-window
|
|
||||||
"p" '(:keymap projectile-command-map :wk "Project")
|
|
||||||
)
|
|
||||||
|
|
||||||
(which-key-add-key-based-replacements "SPC y" "Emacs stuff")
|
|
||||||
(elk-leader-def
|
|
||||||
:prefix "SPC y"
|
|
||||||
"c" '((lambda () (interactive) (find-file "~/.emacs.d/config.org")) :wk "open config.org")
|
|
||||||
"r" '((lambda () (interactive) (load-file "~/.emacs.d/init.el")) :wk "reload config.org")))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Window management
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(which-key-add-key-based-replacements "SPC b" "Window management")
|
|
||||||
(elk-leader-def
|
|
||||||
:prefix "SPC b"
|
|
||||||
"c" '(kill-buffer-and-window :wk "close window and buffer")
|
|
||||||
"w" '(delete-window :wk "close window")
|
|
||||||
"f" '(counsel-buffer-or-recentf :wk "Switch to file")
|
|
||||||
"b" '(counsel-switch-buffer :wk "Switch buffer")
|
|
||||||
"o" '(counsel-switch-buffer-other-window :wk "Switch buffer in other window")
|
|
||||||
"d" '(kill-buffer :wk "close buffer")
|
|
||||||
"s" '(split-window-below :wk "h-split")
|
|
||||||
"v" '(split-window-right :wk "v-split"))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Editing
|
|
||||||
** evil-mode
|
|
||||||
|
|
||||||
Emacs is lacks a good editor.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package evil
|
|
||||||
:init
|
|
||||||
(setq evil-want-keybinding nil)
|
|
||||||
(setq evil-want-C-u-scroll t)
|
|
||||||
(setq evil-want-fine-undo 'fine)
|
|
||||||
(setq evil-undo-system 'undo-tree)
|
|
||||||
:config
|
|
||||||
(evil-mode 1))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
|
|
||||||
*** evil-org-mode
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package evil-org
|
|
||||||
:after org
|
|
||||||
:config
|
|
||||||
(add-hook 'org-mode-hook 'evil-org-mode)
|
|
||||||
(add-hook 'evil-org-mode-hook
|
|
||||||
(lambda ()
|
|
||||||
(evil-org-set-key-theme)))
|
|
||||||
(require 'evil-org-agenda)
|
|
||||||
(evil-org-agenda-set-keys))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
|
|
||||||
*** evil-collection
|
|
||||||
|
|
||||||
Keybinds for common modes.
|
|
||||||
Makes evil work everywhere.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package evil-collection
|
|
||||||
:after evil
|
|
||||||
:config
|
|
||||||
(evil-collection-init))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
*** evil-surround
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package evil-surround
|
|
||||||
:after evil
|
|
||||||
:config
|
|
||||||
(global-evil-surround-mode t))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Undo-tree
|
|
||||||
|
|
||||||
Undo tree is based.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package undo-tree
|
|
||||||
:config
|
|
||||||
(global-undo-tree-mode t)
|
|
||||||
(setq undo-tree-auto-save-history t)
|
|
||||||
(push '("." . "~/.emacs.d/undo-tree-history") undo-tree-history-directory-alist))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** ace-jump
|
|
||||||
|
|
||||||
Jump through the code faster than ever before!
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package ace-jump-mode)
|
|
||||||
(elk-leader-def "x" 'ace-jump-mode)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Multicursor
|
|
||||||
Install the package and set up some binds!
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package evil-mc :config (evil-mc-mode 1))
|
|
||||||
|
|
||||||
(which-key-add-key-based-replacements "SPC d" "Multicursor")
|
|
||||||
(elk-leader-def
|
|
||||||
:prefix "SPC d"
|
|
||||||
"j" '(evil-mc-make-cursor-move-next-line :wk "cursor below")
|
|
||||||
"u" '(evil-mc-undo-last-added-cursor :wk "undo cursor")
|
|
||||||
"d" '(evil-mc-undo-all-cursors :wk "remove all cursors")
|
|
||||||
"n" '(evil-mc-make-and-goto-next-match :wk "next match")
|
|
||||||
"m" '(evil-mc-skip-and-goto-next-match :wk "skip and next match")
|
|
||||||
"s" '(evil-mc-make-cursor-in-visual-selection-beg :wk "cursor at selection"))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Git integration
|
|
||||||
** Diff-hl gitgutter
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package diff-hl :config (diff-hl-mode t))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Magit
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package magit)
|
|
||||||
(use-package evil-magit)
|
|
||||||
|
|
||||||
(which-key-add-key-based-replacements "SPC g" "Git shit")
|
|
||||||
(elk-leader-def
|
|
||||||
:prefix "SPC g"
|
|
||||||
"s" '(magit-status :wk "status"))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Code stuff
|
|
||||||
** general builtin stuff
|
|
||||||
|
|
||||||
enable highlighting matching parentheses
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(show-paren-mode 1)
|
|
||||||
(setq show-paren-delay 0)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
let's also turn lambdas into _actual_ lambdas:
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(global-prettify-symbols-mode t)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Rainbow everything!
|
|
||||||
because rainbows are fabulous!
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package rainbow-delimiters :config (rainbow-delimiters-mode t))
|
|
||||||
(use-package rainbow-blocks :config (rainbow-blocks-mode t))
|
|
||||||
#+END_SRC
|
|
||||||
** Nerdcommenter
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package evil-nerd-commenter)
|
|
||||||
(which-key-add-key-based-replacements "SPC c" "Commenting")
|
|
||||||
(elk-leader-def
|
|
||||||
:prefix "SPC c"
|
|
||||||
"SPC" '(evilnc-comment-or-uncomment-lines :wk "toggle comment")
|
|
||||||
"c" '(evilnc-copy-and-comment-lines :wk "copy and comment"))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Language support
|
|
||||||
** LSP-mode
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package lsp-mode
|
|
||||||
:hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode)
|
|
||||||
(rustic . lsp)
|
|
||||||
(lsp-mode . lsp-enable-which-key-integration))
|
|
||||||
:commands lsp)
|
|
||||||
|
|
||||||
(use-package company)
|
|
||||||
(use-package lsp-ui :commands lsp-ui-mode)
|
|
||||||
(use-package lsp-ivy :commands lsp-ivy-workspace-symbol)
|
|
||||||
(use-package lsp-treemacs :commands lsp-treemacs-errors-list)
|
|
||||||
(use-package dap-mode)
|
|
||||||
;; (use-package dap-LANGUAGE) to load the dap adapter for your language
|
|
||||||
#+end_src
|
|
||||||
** Rust
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package rustic)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Lisp
|
|
||||||
*** parinfer
|
|
||||||
|
|
||||||
Install the plugin
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package parinfer
|
|
||||||
:ensure t
|
|
||||||
:init
|
|
||||||
(progn
|
|
||||||
(setq parinfer-lighters '("Parinfer:Indent" . "Parinfer:Paren"))
|
|
||||||
(setq parinfer-auto-switch-indent-mode t)
|
|
||||||
(setq parinfer-extensions '(defaults pretty-parens evil smart-tab smart-yank))
|
|
||||||
(add-hook 'emacs-lisp-mode-hook #'parinfer-mode)))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
and set up some keybinds!
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(elk-leader-def
|
|
||||||
:prefix "SPC m" "-" '(parinfer-toggle-mode :wk "toggle parinfer mode"))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
|
|
||||||
Also, let's integrate it with out bar:
|
|
||||||
|
|
||||||
- TODO Fix this
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(defun update-parinfer-mode-status (x)
|
|
||||||
(setq global-mode-string (format "%s" x parinfer--mode)))
|
|
||||||
(add-hook 'parinfer-switch-mode-hook 'update-parinfer-mode-status)
|
|
||||||
#+END_SRC
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
;; Add repositories
|
|
||||||
(require 'package)
|
|
||||||
(setq package-enable-at-startup nil)
|
|
||||||
|
|
||||||
(setq package-archives '(("ELPA" . "http://tromey.com/elpa/")
|
|
||||||
("gnu" . "http://elpa.gnu.org/packages/")
|
|
||||||
("melpa" . "https://melpa.org/packages/")
|
|
||||||
("org" . "https://orgmode.org/elpa/")))
|
|
||||||
(package-initialize)
|
|
||||||
|
|
||||||
;; Bootstrapping use-package
|
|
||||||
(unless (package-installed-p 'use-package)
|
|
||||||
(package-refresh-contents)
|
|
||||||
(package-install 'use-package))
|
|
||||||
|
|
||||||
;; This is the actual config file. It is omitted if it doesn't exist so emacs won't refuse to launch.
|
|
||||||
(let ((config-file (expand-file-name "config.org" user-emacs-directory)))
|
|
||||||
(when (file-readable-p config-file)
|
|
||||||
(org-babel-load-file config-file)))
|
|
2
files/.xmonad/hie-NOPE.yaml
Normal file
2
files/.xmonad/hie-NOPE.yaml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
cradle:
|
||||||
|
stack:
|
|
@ -9,16 +9,17 @@ import Control.Concurrent
|
||||||
import Control.Exception ( catch , SomeException)
|
import Control.Exception ( catch , SomeException)
|
||||||
import Control.Monad (join, filterM
|
import Control.Monad (join, filterM
|
||||||
, when
|
, when
|
||||||
, guard
|
|
||||||
)
|
)
|
||||||
import Control.Arrow ( (>>>) )
|
import Control.Arrow ( (>>>) )
|
||||||
import Data.List ( isPrefixOf
|
import Data.List ( isPrefixOf
|
||||||
, isSuffixOf
|
, isSuffixOf
|
||||||
, isInfixOf
|
, isInfixOf
|
||||||
)
|
)
|
||||||
import qualified Foreign.C.Types
|
import qualified Data.List
|
||||||
import System.Exit (exitSuccess)
|
import System.Exit (exitSuccess)
|
||||||
import qualified XMonad.Util.ExtensibleState as XS
|
import qualified XMonad.Util.ExtensibleState as XS
|
||||||
|
import qualified Data.Char
|
||||||
import qualified Rofi
|
import qualified Rofi
|
||||||
import qualified DescribedSubmap
|
import qualified DescribedSubmap
|
||||||
import qualified TiledDragging
|
import qualified TiledDragging
|
||||||
|
@ -35,7 +36,6 @@ import Data.Foldable ( for_ )
|
||||||
|
|
||||||
import Data.Function ((&))
|
import Data.Function ((&))
|
||||||
|
|
||||||
import qualified XMonad.Layout.Decoration
|
|
||||||
import XMonad hiding ((|||))
|
import XMonad hiding ((|||))
|
||||||
import XMonad.Actions.CopyWindow
|
import XMonad.Actions.CopyWindow
|
||||||
import XMonad.Actions.PhysicalScreens ( horizontalScreenOrderer )
|
import XMonad.Actions.PhysicalScreens ( horizontalScreenOrderer )
|
||||||
|
@ -65,7 +65,6 @@ import XMonad.Layout.ThreeColumns
|
||||||
import XMonad.Layout.ResizableThreeColumns
|
import XMonad.Layout.ResizableThreeColumns
|
||||||
import XMonad.Layout.WindowSwitcherDecoration
|
import XMonad.Layout.WindowSwitcherDecoration
|
||||||
import XMonad.Layout.DraggingVisualizer
|
import XMonad.Layout.DraggingVisualizer
|
||||||
import XMonad.Hooks.FadeInactive
|
|
||||||
--import XMonad.Layout.Hidden as Hidden
|
--import XMonad.Layout.Hidden as Hidden
|
||||||
|
|
||||||
import XMonad.Util.EZConfig ( additionalKeysP
|
import XMonad.Util.EZConfig ( additionalKeysP
|
||||||
|
@ -73,13 +72,11 @@ import XMonad.Util.EZConfig ( additionalKeysP
|
||||||
, checkKeymap
|
, checkKeymap
|
||||||
)
|
)
|
||||||
|
|
||||||
import XMonad.Layout.LayoutModifier
|
|
||||||
import XMonad.Util.NamedScratchpad
|
import XMonad.Util.NamedScratchpad
|
||||||
import XMonad.Util.Run
|
import XMonad.Util.Run
|
||||||
import XMonad.Util.SpawnOnce (spawnOnce)
|
import XMonad.Util.SpawnOnce (spawnOnce)
|
||||||
import XMonad.Util.WorkspaceCompare ( getSortByXineramaPhysicalRule , getSortByIndex)
|
import XMonad.Util.WorkspaceCompare ( getSortByXineramaPhysicalRule , getSortByIndex)
|
||||||
|
|
||||||
import qualified Data.Monoid
|
|
||||||
import Data.Monoid ( Endo )
|
import Data.Monoid ( Endo )
|
||||||
import Data.Semigroup ( All(..) )
|
import Data.Semigroup ( All(..) )
|
||||||
import qualified System.IO as SysIO
|
import qualified System.IO as SysIO
|
||||||
|
@ -96,7 +93,9 @@ import qualified XMonad.Layout.ToggleLayouts as ToggleLayouts
|
||||||
import qualified XMonad.StackSet as W
|
import qualified XMonad.StackSet as W
|
||||||
import qualified XMonad.Util.XSelection as XSel
|
import qualified XMonad.Util.XSelection as XSel
|
||||||
import qualified XMonad.Layout.PerScreen as PerScreen
|
import qualified XMonad.Layout.PerScreen as PerScreen
|
||||||
import Data.Maybe (maybeToList)
|
import Data.Maybe (catMaybes, maybeToList, fromMaybe)
|
||||||
|
import qualified Data.Bifunctor
|
||||||
|
import Data.Bifunctor
|
||||||
{-# ANN module "HLint: ignore Redundant $" #-}
|
{-# ANN module "HLint: ignore Redundant $" #-}
|
||||||
{-# ANN module "HLint: ignore Redundant bracket" #-}
|
{-# ANN module "HLint: ignore Redundant bracket" #-}
|
||||||
{-# ANN module "HLint: ignore Move brackets to avoid $" #-}
|
{-# ANN module "HLint: ignore Move brackets to avoid $" #-}
|
||||||
|
@ -133,7 +132,7 @@ scratchpads =
|
||||||
launchDiscord = "discocss"
|
launchDiscord = "discocss"
|
||||||
--launchDiscord = "beautifuldiscord --css /home/leon/.config/beautifuldiscord/custom_discord.css"
|
--launchDiscord = "beautifuldiscord --css /home/leon/.config/beautifuldiscord/custom_discord.css"
|
||||||
|
|
||||||
|
-- }}}
|
||||||
|
|
||||||
-- Colors ------ {{{
|
-- Colors ------ {{{
|
||||||
fg = "#ebdbb2"
|
fg = "#ebdbb2"
|
||||||
|
@ -154,7 +153,6 @@ purple = "#d3869b"
|
||||||
aqua = "#8ec07c"
|
aqua = "#8ec07c"
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
-- }}}
|
|
||||||
|
|
||||||
-- Layout ---------------------------------------- {{{
|
-- Layout ---------------------------------------- {{{
|
||||||
myTabTheme :: Theme
|
myTabTheme :: Theme
|
||||||
|
@ -179,7 +177,7 @@ instance Shrinker EmptyShrinker where
|
||||||
|
|
||||||
myLayout = noBorders $ avoidStruts
|
myLayout = noBorders $ avoidStruts
|
||||||
$ smartBorders
|
$ smartBorders
|
||||||
-- $ FancyBorders.fancyBorders borderTheme
|
-- $ FancyBorders.fancyBorders borderTheme
|
||||||
$ MTog.mkToggle1 MTog.FULL
|
$ MTog.mkToggle1 MTog.FULL
|
||||||
$ ToggleLayouts.toggleLayouts (rename "Tabbed" . makeTabbed . spacingAndGaps $ ResizableTall 1 (3/100) (1/2) [])
|
$ ToggleLayouts.toggleLayouts (rename "Tabbed" . makeTabbed . spacingAndGaps $ ResizableTall 1 (3/100) (1/2) [])
|
||||||
$ MTog.mkToggle1 WINDOWDECORATION
|
$ MTog.mkToggle1 WINDOWDECORATION
|
||||||
|
@ -308,6 +306,7 @@ myKeys = concat [ zoomRowBindings, tabbedBindings, multiMonitorBindings, program
|
||||||
BoringWindows.focusDown
|
BoringWindows.focusDown
|
||||||
onGroup W.focusDown'
|
onGroup W.focusDown'
|
||||||
windows W.focusMaster)
|
windows W.focusMaster)
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
multiMonitorBindings :: [(String, X ())]
|
multiMonitorBindings :: [(String, X ())]
|
||||||
|
@ -492,6 +491,7 @@ myManageHook = composeAll
|
||||||
, title =? "Something" --> doFloat
|
, title =? "Something" --> doFloat
|
||||||
, className =? "termite_floating" --> ManageHelpers.doRectFloat(W.RationalRect 0.2 0.2 0.6 0.6)
|
, className =? "termite_floating" --> ManageHelpers.doRectFloat(W.RationalRect 0.2 0.2 0.6 0.6)
|
||||||
, className =? "bar_system_status_indicator" --> ManageHelpers.doRectFloat (W.RationalRect 0.7 0.05 0.29 0.26)
|
, className =? "bar_system_status_indicator" --> ManageHelpers.doRectFloat (W.RationalRect 0.7 0.05 0.29 0.26)
|
||||||
|
, title =? "discord.com hat Ihren Bildschirm freigegeben" --> doShift "NSP"
|
||||||
, manageDocks
|
, manageDocks
|
||||||
, namedScratchpadManageHook scratchpads
|
, namedScratchpadManageHook scratchpads
|
||||||
]
|
]
|
||||||
|
@ -505,6 +505,10 @@ main = do
|
||||||
let monitorIndices = [0..currentScreenCount - 1]
|
let monitorIndices = [0..currentScreenCount - 1]
|
||||||
|
|
||||||
|
|
||||||
|
foo <- getXrdbValue "*.color11"
|
||||||
|
spawn $ "notify-send 'fuck' '|" ++ foo ++ "|'"
|
||||||
|
|
||||||
|
|
||||||
-- create a fifo named pipe for every monitor (called /tmp/xmonad-state-bar0, etc)
|
-- create a fifo named pipe for every monitor (called /tmp/xmonad-state-bar0, etc)
|
||||||
for_ monitorIndices (\idx -> safeSpawn "mkfifo" ["/tmp/xmonad-state-bar" ++ show idx])
|
for_ monitorIndices (\idx -> safeSpawn "mkfifo" ["/tmp/xmonad-state-bar" ++ show idx])
|
||||||
|
|
||||||
|
@ -687,3 +691,66 @@ ifLayoutName check onLayoutA onLayoutB = do
|
||||||
getActiveLayoutDescription :: X String
|
getActiveLayoutDescription :: X String
|
||||||
getActiveLayoutDescription = (description . W.layout . W.workspace . W.current) <$> gets windowset
|
getActiveLayoutDescription = (description . W.layout . W.workspace . W.current) <$> gets windowset
|
||||||
-- }}}
|
-- }}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
newtype ActionCycleState = ActionCycleState (M.Map String Int) deriving Typeable
|
||||||
|
instance ExtensionClass ActionCycleState where
|
||||||
|
initialValue = ActionCycleState mempty
|
||||||
|
|
||||||
|
getActionCycle :: String -> ActionCycleState -> Maybe Int
|
||||||
|
getActionCycle name (ActionCycleState s) = M.lookup name s
|
||||||
|
|
||||||
|
nextActionCycle :: String -> Int -> ActionCycleState -> ActionCycleState
|
||||||
|
nextActionCycle name maxNum (ActionCycleState s) = ActionCycleState $ M.update (\n -> Just $ (n + 1) `mod` maxNum) name s
|
||||||
|
|
||||||
|
setActionCycle :: String -> Int -> ActionCycleState -> ActionCycleState
|
||||||
|
setActionCycle name n (ActionCycleState s)= ActionCycleState $ M.insert name n s
|
||||||
|
|
||||||
|
cycleAction :: String -> [X ()] -> X ()
|
||||||
|
cycleAction _ [] = pure ()
|
||||||
|
cycleAction name actions = do
|
||||||
|
idx <- XS.gets (getActionCycle name) >>= \case
|
||||||
|
Just x -> do
|
||||||
|
XS.modify (nextActionCycle name (length actions))
|
||||||
|
pure x
|
||||||
|
Nothing -> do
|
||||||
|
XS.modify (setActionCycle name 1)
|
||||||
|
pure 0
|
||||||
|
|
||||||
|
sequence_ $ actions `safeIdx` idx
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
safeIdx :: [a] -> Int -> Maybe a
|
||||||
|
safeIdx list i
|
||||||
|
| i < length list = Just $ list !! i
|
||||||
|
| otherwise = Nothing
|
||||||
|
|
||||||
|
|
||||||
|
getXrdbValue :: String -> IO String
|
||||||
|
getXrdbValue key = fromMaybe "" . findValue key <$> runProcessWithInput "xrdb" ["-query"] ""
|
||||||
|
where
|
||||||
|
findValue :: String -> String -> Maybe String
|
||||||
|
findValue xresKey xres =
|
||||||
|
snd <$> ( Data.List.find ((== xresKey) . fst)
|
||||||
|
$ catMaybes
|
||||||
|
$ splitAtColon
|
||||||
|
<$> lines xres
|
||||||
|
)
|
||||||
|
|
||||||
|
splitAtColon :: String -> Maybe (String, String)
|
||||||
|
splitAtColon str = splitAtTrimming str <$> (Data.List.elemIndex ':' str)
|
||||||
|
|
||||||
|
splitAtTrimming :: String -> Int -> (String, String)
|
||||||
|
splitAtTrimming str idx = bimap trim trim . (second tail) $ splitAt idx str
|
||||||
|
|
||||||
|
trim :: String -> String
|
||||||
|
trim = Data.List.dropWhileEnd (Data.Char.isSpace) . Data.List.dropWhile (Data.Char.isSpace)
|
||||||
|
|
|
@ -81,6 +81,9 @@ in
|
||||||
lldb
|
lldb
|
||||||
zola
|
zola
|
||||||
python38Packages.pylint
|
python38Packages.pylint
|
||||||
|
gitAndTools.gitflow
|
||||||
|
gitAndTools.tig
|
||||||
|
gitAndTools.gitui
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
(
|
(
|
||||||
|
|
|
@ -14,7 +14,6 @@ in
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
(scr.override { extraPackages = [ rofi ]; })
|
(scr.override { extraPackages = [ rofi ]; })
|
||||||
my-st
|
|
||||||
mmutils
|
mmutils
|
||||||
liquidctl
|
liquidctl
|
||||||
bashtop
|
bashtop
|
||||||
|
|
|
@ -40,9 +40,9 @@ in
|
||||||
vte-terminal {
|
vte-terminal {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
#Emacs > box {
|
/*#Emacs > box {
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
}
|
}*/
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue