Bankruptcy declared, approaching local minima, tired

This commit is contained in:
Benson Chu 2020-01-25 14:54:33 -06:00
parent 3942c1e4c4
commit c6b161f38d
7 changed files with 310 additions and 1462 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,314 +1,5 @@
#+PROPERTY: header-args :tangle "~/.emacs.d/config-exwm.el" :comments both
* First in load path
#+begin_src emacs-lisp
(add-to-list 'load-path
"~/.emacs.d/submodule/exwm")
(add-to-list 'load-path
"~/.emacs.d/submodule/xelb")
#+end_src
* Meta
#+BEGIN_SRC emacs-lisp
(require 'exwm)
(require 'exwm-config)
(exwm-config-default)
#+END_SRC
* Multimonitor support
#+BEGIN_SRC emacs-lisp
(require 'exwm-randr)
(exwm-randr-enable)
#+END_SRC
* Startup
** Emacs server, startup programs, wallpaper
#+BEGIN_SRC emacs-lisp
(add-hook 'exwm-init-hook 'server-start)
;; Reminder: Hooks execute in order. Make sure megasync launches after systemtray is enabled
(require 'exwm-startup)
(add-hook 'exwm-init-hook 'call-startup-programs)
(require 'exwm-screens)
(add-hook 'exwm-init-hook 'my/setup-screens)
(define-minor-mode exwm-presentation-mode
"Make both screen outputs display the same thing"
nil nil nil
(cond (exwm-presentation-mode
(cl-destructuring-bind (primary . secondary) (my/get-screens)
(shell-command
(format "xrandr --output %s --mode 1920x1080 --same-as %s"
(car secondary)
primary))
(setq exwm-randr-workspace-monitor-plist nil)
(exwm-randr-refresh)))
(t
(my/setup-screens))))
#+END_SRC
** System tray, display time, display battery, display hard-drive-space
#+BEGIN_SRC emacs-lisp
(require 'exwm-systemtray)
(exwm-systemtray-enable)
(setq display-time-day-and-date t)
(defvar my/exclude-buffer-modes '(helm-major-mode messages-buffer-mode special-mode))
(defun my-buffer-predicate (buf)
(with-current-buffer buf
(if (memq major-mode my/exclude-buffer-modes)
nil
(exwm-layout--other-buffer-predicate buf))))
(add-hook 'exwm-init-hook
(lambda ()
(interactive)
(modify-all-frames-parameters
'((buffer-predicate . my-buffer-predicate)))))
;; Display hard drive space
;; (add-hook 'display-time-hook 'update-hard-drive-space-string)
(display-time-mode)
(display-battery-mode)
;; (display-hard-drive-space-mode)
#+END_SRC
* Shutdown
#+BEGIN_SRC emacs-lisp
(add-hook 'exwm-exit-hook 'org-save-all-org-buffers)
;;(add-hook 'exwm-exit-hook 'save-org-agenda-files)
(eval-after-load "term"
'(progn
(define-key term-raw-map (kbd "C-c C-y") 'term-paste)
(define-key term-raw-map (kbd "M-x") 'helm-M-x)))
#+END_SRC
* desktop-environment
#+begin_src emacs-lisp
(use-package desktop-environment
:init
(desktop-environment-mode))
#+end_src
* window-map
#+begin_src emacs-lisp
(define-prefix-command '*window-map*)
(define-key *root-map* (kbd "w") '*window-map*)
(define-key *window-map* (kbd "y") 'youtube-split)
(define-key *window-map* (kbd "Y") 'big-youtube-split)
(define-key *window-map* (kbd "j") 'side-bottom-window)
(define-key *window-map* (kbd "h") 'side-left-window)
(define-key *window-map* (kbd "l") 'side-right-window)
(define-key *window-map* (kbd "d") 'window-toggle-side-windows)
#+end_src
* Youtube split
#+BEGIN_SRC emacs-lisp
(defun youtube-split (arg)
(interactive "P")
(let ((buf (get-buffer "youtube"))
(back (current-buffer)))
(delete-other-windows)
(if buf
(switch-to-buffer buf)
(when arg
(launch-program-with-name "firefox" "youtube")))
(side-window-op 'left 472 buf)
(switch-to-buffer back)))
(defun big-youtube-split (arg)
(interactive "P")
(delete-other-windows)
(let ((buf (get-buffer "youtube")))
(if buf
(switch-to-buffer buf)
(when arg
(launch-program-with-name "firefox" "youtube")))
(side-window-op 'left 630 buf)))
(defun side-window-op (side &optional size buffer)
(let ((prev-win (selected-window))
(win (display-buffer-in-side-window
(or buffer (current-buffer))
`((side . ,side)))))
(select-window win)
(set-window-dedicated-p win t)
(set-window-parameter win 'no-delete-other-windows t)
(when size
(window-resize win (- size (window-pixel-width)) t nil t))
(select-window prev-win)))
(defun side-left-window ()
(interactive)
(side-window-op 'left))
(defun side-right-window ()
(interactive)
(side-window-op 'right))
(defun side-bottom-window ()
(interactive)
(side-window-op 'bottom))
(setq window-sides-vertical t)
#+END_SRC
* toggle dedicated
#+begin_src emacs-lisp
(defun my/toggle-dedicated-window ()
(interactive)
(let ((win (selected-window)))
(set-window-dedicated-p win (not (window-dedicated-p win)))))
#+end_src
* This is so that I can send fullscreen windows to the back
#+begin_src emacs-lisp
(cl-defun my/exwm-layout-set-fullscreen (&optional id)
"Make window ID fullscreen."
(interactive)
(exwm--log "id=#x%x" (or id 0))
(unless (and (or id (derived-mode-p 'exwm-mode))
(not (exwm-layout--fullscreen-p)))
(cl-return-from exwm-layout-set-fullscreen))
(with-current-buffer (if id (exwm--id->buffer id) (window-buffer))
;; Expand the X window to fill the whole screen.
(with-slots (x y width height) (exwm-workspace--get-geometry exwm--frame)
(exwm--set-geometry exwm--id x y width height))
;; Raise the X window.
(xcb:+request exwm--connection
(make-instance 'xcb:ConfigureWindow
:window exwm--id
:value-mask (logior xcb:ConfigWindow:BorderWidth
xcb:ConfigWindow:StackMode)
:border-width 0
:stack-mode xcb:StackMode:Above))
(xcb:+request exwm--connection
(make-instance 'xcb:ewmh:set-_NET_WM_STATE
:window exwm--id
:data (vector xcb:Atom:_NET_WM_STATE_FULLSCREEN)))
(xcb:flush exwm--connection)
;;(set-window-dedicated-p (get-buffer-window) t)
(cl-pushnew xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state)
(exwm-input--release-keyboard exwm--id)))
(advice-add #'exwm-layout-set-fullscreen :override #'my/exwm-layout-set-fullscreen)
#+end_src
* Switch window
#+BEGIN_SRC emacs-lisp
(setq switch-window-input-style 'minibuffer)
#+END_SRC
* Keybindings
#+BEGIN_SRC emacs-lisp
(use-package transpose-frame)
(exwm-global-set-key (kbd "s-r") #'exwm-reset)
(exwm-global-set-key (kbd "s-l") #'lock-screen)
(exwm-global-set-key (kbd "s-c") #'org-capture)
(exwm-global-set-key (kbd "s-n") #'switch-window)
(exwm-global-set-key (kbd "s-z") #'resize-window)
(exwm-global-set-key (kbd "s-s") #'youtube-split)
(exwm-global-set-key (kbd "s-n") #'switch-to-next-buffer)
(exwm-global-set-key (kbd "s-p") #'switch-to-prev-buffer)
(exwm-global-set-key (kbd "s-a") #'my/toggle-keyboard)
(exwm-global-set-key my/keymap-key '*root-map*)
(exwm-global-set-key (kbd "s-h") 'windmove-left)
(exwm-global-set-key (kbd "s-l") 'windmove-right)
(define-key desktop-environment-mode-map (kbd "s-l") nil)
(defun dvorak? ()
(string-match-p "de(neo_dvorak)"
(shell-command-to-string "setxkbmap -v | grep symbols")))
(defun set-keyboard (layout)
(shell-command (format "setxkbmap %s" layout)))
(defun my/toggle-keyboard ()
(interactive)
(if (dvorak?)
(set-keyboard "us")
(set-keyboard "de neo_dvorak")))
;; Don't do this one, causes blinking
(global-set-key (kbd "C-x p") 'launch-program)
;; These have issues, presumably utf8 or something
(global-set-key (kbd "M-…") 'multi-term)
(global-set-key (kbd "C-ü") 'undo-tree-undo)
(defun prompt-workspace (&optional prompt)
"Prompt for a workspace, returning the workspace frame."
(exwm-workspace--update-switch-history)
(let* ((current-idx (exwm-workspace--position exwm-workspace--current))
(history-add-new-input nil) ;prevent modifying history
(history-idx (read-from-minibuffer
(or prompt "Workspace: ")
(elt exwm-workspace--switch-history current-idx)
exwm-workspace--switch-map nil
`(exwm-workspace--switch-history . ,current-idx)))
(workspace-idx (mod (1- (cl-position history-idx exwm-workspace--switch-history
:test #'equal))
10)))
(elt exwm-workspace--list workspace-idx)))
(advice-add 'exwm-workspace--prompt-for-workspace
:override
#'prompt-workspace)
#+END_SRC
* Simulation keys
#+BEGIN_SRC emacs-lisp
(setq exwm-input-simulation-keys
'(
;; movement
([?\C-b] . left)
([?\M-b] . C-left)
([?\C-f] . right)
([?\M-f] . C-right)
([?\C-p] . up)
([?\C-n] . down)
([?\C-a] . home)
([?\C-e] . end)
([?\M-v] . prior)
([?\C-v] . next)
([?\C-d] . delete)
([?\M-d] . backspace)
([?\C-k] . (S-end delete))
;; cut/paste.
([?\C-w] . ?\C-x)
([?\M-w] . ?\C-c)
([?\C-y] . ?\C-v)
;; search
([?\C-s] . ?\C-f)
([?\C-.] . ?\C-w)
([?\C-/] . ?\C-z)
([?\M-s] . ?\C-s)))
#+END_SRC
* Xephyr launches in tiling-mode
#+BEGIN_SRC emacs-lisp
(setq exwm-manage-configurations `(((equal exwm-class-name "Xephyr")
floating nil
char-mode t
fullscreen t)
((equal exwm-class-name "plasmashell")
floating t)))
#+END_SRC
* Floating windows don't need that many faces ^_^
#+begin_src emacs-lisp
(def-face-copier1 my/frame-dont-copy-faces (sym)
(let ((name (symbol-name sym)))
(string-match-p "^doom-.*" name))
mode-line
mode-line-inactive)
(defun my/exwm-floating--advise-make-frame (orig id)
(override1-face my/frame-dont-copy-faces
(funcall orig id)))
(advice-add #'exwm-floating--set-floating
:around
#'my/exwm-floating--advise-make-frame)
#+end_src
* tagging
#+begin_src emacs-lisp
(require 'exwm-tag)
#+end_src
* exwm-background
#+begin_src emacs-lisp
(add-to-list 'load-path "~/.emacs.d/submodule/exwm-background/")
@ -317,23 +8,35 @@
(setq window-system-default-frame-alist `((x . ((alpha . (,exwm-background/current-transparency . 50))))))
(exwm-global-set-key (kbd "s-v") #'exwm-background/toggle-viewing-background)
(exwm-global-set-key (kbd "s-b") #'exwm-background/exwm-background-window) ;; TODO: Fix keybinding
(define-key desktop-environment-mode-map (kbd "<S-XF86MonBrightnessDown>") #'exwm-background/decrease-transparency)
(define-key desktop-environment-mode-map (kbd "<S-XF86MonBrightnessUp>") #'exwm-background/increase-transparency)
;; (define-key desktop-environment-mode-map (kbd "<S-XF86MonBrightnessDown>") #'exwm-background/decrease-transparency)
;; (define-key desktop-environment-mode-map (kbd "<S-XF86MonBrightnessUp>") #'exwm-background/increase-transparency)
(define-key *window-map* (kbd "b") #'exwm-background/exwm-background-window)
(define-key *root-map* (kbd "k") #'exwm-background/exwm-send-key-to-background)
(define-key *root-map* (kbd "C-k") #'exwm-background/exwm-send-key-to-background-loop)
#+end_src
* e2wm
* window manipulation
#+begin_src emacs-lisp
(use-package e2wm
:bind (("M-+" . e2wm:start-management)))
;; The prefix
(define-prefix-command '*window-map*)
(define-key *root-map* (kbd "w") '*window-map*)
;; Side-window stuff
(use-package resize-window)
(require 'side-window-split)
(define-key *window-map* (kbd "j") 'side-bottom-window)
(define-key *window-map* (kbd "h") 'side-left-window)
(define-key *window-map* (kbd "l") 'side-right-window)
(define-key *window-map* (kbd "d") 'window-toggle-side-windows)
(define-key *window-map* (kbd "r") 'resize-window)
;; Dedicated window
(defun my/toggle-dedicated-window ()
(interactive)
(let ((win (selected-window)))
(set-window-dedicated-p win (not (window-dedicated-p win)))))
#+end_src
* exwm-edit
* tags
#+begin_src emacs-lisp
(use-package exwm-edit)
;; Need my tags
(require 'exwm-tag)
#+end_src
* Volume
#+BEGIN_SRC emacs-lisp
(use-package volume)
(define-key *root-map* (kbd "v") 'volume)
#+END_SRC

View file

@ -9,6 +9,24 @@
;; Don't fricken suspend emacs
(global-set-key (kbd "C-z") nil)
;; Minibuffer reading
(setq switch-window-input-style 'minibuffer)
;; Help window select stuff
(setq help-window-select t)
;; Undo tree is useful
(use-package undo-tree)
;; Beacon-mode
(use-package beacon)
(beacon-mode 1)
(setq beacon-blink-delay 0.1)
(setq beacon-color "#006400")
;; Use my fork of chinese-etzy
(load-file "~/.emacs.d/my-etzy.el")
#+end_src
* exwm
#+begin_src emacs-lisp
@ -62,9 +80,79 @@
(use-package volume
:bind (:map *root-map*
("v" . #'volume)))
;; Shut down
(add-hook 'exwm-exit-hook 'org-save-all-org-buffers)
;; Startup programs
(add-hook 'exwm-init-hook 'server-start)
;; Reminder: Hooks execute in order. Make sure megasync launches after systemtray is enabled
(require 'exwm-startup)
(add-hook 'exwm-init-hook 'call-startup-programs)
(require 'exwm-screens)
(add-hook 'exwm-init-hook 'my/setup-screens)
(require 'exwm-systemtray)
(exwm-systemtray-enable)
;; I don't really want to see these buffers
(defvar my/exclude-buffer-modes '(helm-major-mode messages-buffer-mode special-mode))
(defun my-buffer-predicate (buf)
(with-current-buffer buf
(if (memq major-mode my/exclude-buffer-modes)
nil
(exwm-layout--other-buffer-predicate buf))))
(add-hook 'exwm-init-hook
(lambda ()
(interactive)
(modify-all-frames-parameters
'((buffer-predicate . my-buffer-predicate)))))
#+end_src
* keybindings
#+begin_src emacs-lisp
(defun lock-screen ()
(interactive)
(shell-command "~/Github/my-projects/i3lock-fancy/i3lock-fancy & disown"))
(exwm-global-set-key (kbd "s-r") #'exwm-reset)
(require 'keyboard-toggle)
(exwm-global-set-key (kbd "s-a") #'my/toggle-keyboard)
(setq exwm-input-simulation-keys
'(;; movement
([?\C-b] . left)
([?\M-b] . C-left)
([?\C-f] . right)
([?\M-f] . C-right)
([?\C-p] . up)
([?\C-n] . down)
([?\C-a] . home)
([?\C-e] . end)
([?\M-v] . prior)
([?\C-v] . next)
([?\C-d] . delete)
([?\M-d] . backspace)
([?\C-k] . (S-end delete))
;; cut/paste.
([?\C-w] . ?\C-x)
([?\M-w] . ?\C-c)
([?\C-y] . ?\C-v)
;; search
([?\C-s] . ?\C-f)
([?\C-.] . ?\C-w)
([?\C-/] . ?\C-z)
([?\M-s] . ?\C-s)))
#+end_src
* theme
#+begin_src emacs-lisp
;; dashboard looks cool
(use-package dashboard)
(setq fancy-splash-image "~/.emacs.d/res/icon.png")
;; Disable tool and menu bar, keep the fringe though
(tool-bar-mode -1)
(menu-bar-mode -1)
@ -97,6 +185,8 @@
(display-battery-mode t)
(display-time-mode t)
(setq display-time-day-and-date t)
(require 'display-hard-drive-space-mode)
(display-hard-drive-space-mode)
;; Roboto mono is nice
(when (member "Roboto Mono" (font-family-list))
@ -107,7 +197,7 @@
(set-fontset-font t 'unicode (font-spec :size 10 :name "FontAwesome"))
(set-fontset-font t 'unicode (font-spec :size 16 :name "DejaVu Sans Mono"))
#+end_src
* navigation
* buffer navigation
#+begin_src emacs-lisp
;; Allow minibuffer-ception
(setq enable-recursive-minibuffers t)
@ -136,6 +226,14 @@
(use-package scrollkeeper)
(global-set-key (kbd "C-v") 'scrollkeeper-down)
(global-set-key (kbd "M-v") 'scrollkeeper-up)
;; Word navigation
(global-set-key (kbd "M-f") 'forward-to-word)
(global-set-key (kbd "M-F") 'forward-word)
;; Goto-char
(use-package iy-go-to-char
:bind (("M-m" . #'iy-go-to-char)))
#+end_src
* dired
#+begin_src emacs-lisp
@ -158,6 +256,26 @@
(define-key dired-mode-map (kbd "i") 'dired-subtree-insert)
(define-key dired-mode-map (kbd "I") 'dired-subtree-remove)
#+end_src
* w3m
#+begin_src emacs-lisp
;; Remove when Emacs 27 releases
(setq w3m-use-tabs nil)
(use-package w3m)
(defun dired-browse-with-w3m (arg)
(interactive "P")
(let ((browse-url-browser-function (if arg
(symbol-function browse-url-browser-function)
#'w3m-browse-url)))
(browse-url-of-dired-file)))
(define-key dired-mode-map (kbd "W") 'dired-browse-with-w3m)
(exwm-global-set-key (kbd "C-c g")
(lambda ()
(interactive)
(w3m-goto-url "https://google.com")))
#+end_src
* emacs lisp
#+begin_src emacs-lisp
;; These are the programming facilities I like the most for a minimal
@ -170,9 +288,34 @@
;; Magit
(use-package magit)
(use-package magit-popup)
(use-package magit-todos)
(global-set-key (kbd "C-x g") 'magit-status)
(global-set-key (kbd "C-x M-g") 'magit-dispatch)
;; Push all branches
(defun my/magit-push-all ()
"Push all branches."
(interactive)
(magit-run-git-async "push" "-v"
(magit-read-remote "Remote")
"--all"))
(transient-append-suffix 'magit-push "m"
'("a" "all remotes" my/magit-push-all))
;; Magit uses ediff
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(defun ediff-copy-both-to-C ()
(interactive)
(ediff-copy-diff ediff-current-difference nil 'C nil
(concat
(ediff-get-region-contents ediff-current-difference 'A ediff-control-buffer)
(ediff-get-region-contents ediff-current-difference 'B ediff-control-buffer))))
(defun add-d-to-ediff-mode-map () (define-key ediff-mode-map "d" 'ediff-copy-both-to-C))
(add-hook 'ediff-keymap-setup-hook 'add-d-to-ediff-mode-map)
;; Paredit
(use-package paredit)
(add-hook 'emacs-lisp-mode-hook 'paredit-mode)
@ -262,13 +405,86 @@
;; Eval buffer, slime-ism
(define-key emacs-lisp-mode-map (kbd "C-c C-k") #'eval-buffer)
;; Make scratch buffers out of nowhere!
(defun scratch-buffer ()
(interactive)
(let ((count 0))
(while (get-buffer (format "*scratch%d*" count))
(incf count))
(switch-to-buffer (get-buffer-create (format "*scratch%d*" count)))
(lisp-interaction-mode)
(insert (substitute-command-keys initial-scratch-message))))
;; Eval and replace
(defun my/eval-and-replace ()
"Replace the preceding sexp with its value."
(interactive)
(backward-kill-sexp)
(condition-case nil
(prin1 (eval (read (current-kill 0)))
(current-buffer))
(error (message "Invalid expression")
(insert (current-kill 0)))))
(define-key emacs-lisp-mode-map (kbd "C-c C-e") 'my/eval-and-replace)
;; Use cider's eval expression
(use-package cider)
(autoload 'cider--make-result-overlay "cider-overlays")
(defun endless/eval-overlay (value point)
(cider--make-result-overlay (format "%S" value)
:where point
:duration 'command)
;; Preserve the return value.
value)
(advice-add 'eval-region :around
(lambda (f beg end &rest r)
(endless/eval-overlay
(apply f beg end r)
end)))
(advice-add 'eval-last-sexp :filter-return
(lambda (r)
(endless/eval-overlay r (point))))
(advice-add 'eval-defun :filter-return
(lambda (r)
(endless/eval-overlay
r
(save-excursion
(end-of-defun)
(point)))))
;; expand-region
(use-package expand-region)
(global-set-key (kbd "C-'") 'er/expand-region)
#+end_src
* ibuffer
#+begin_src emacs-lisp
(global-set-key (kbd "C-x C-b") 'ibuffer)
(setq ibuffer-show-empty-filter-groups nil)
(add-hook 'ibuffer-mode-hook
'(lambda ()
(ibuffer-switch-to-saved-filter-groups "default")
(ibuffer-do-sort-by-alphabetic)
;; (ibuffer-auto-mode)
))
(require 'ibuf-ext)
(eval-after-load "ibuf-ext"
'(define-ibuffer-filter directory-name
"Filter files in the agenda folder"
(:description "agenda")
(and (buffer-file-name buf)
(string-match qualifier
(buffer-file-name buf)))))
(add-to-list 'ibuffer-never-show-predicates
'(lambda (buf)
(with-current-buffer buf
@ -314,28 +530,13 @@
("Help" (or (name . "\*Help\*")
(name . "\*Apropos\*")
(name . "\*info\*"))))))
(setq ibuffer-show-empty-filter-groups nil)
(add-hook 'ibuffer-mode-hook
'(lambda ()
(ibuffer-switch-to-saved-filter-groups "default")
(ibuffer-do-sort-by-alphabetic)
;; (ibuffer-auto-mode)
))
(eval-after-load "ibuf-ext"
'(define-ibuffer-filter directory-name
"Filter files in the agenda folder"
(:description "agenda")
(and (buffer-file-name buf)
(string-match qualifier
(buffer-file-name buf)))))
#+end_src
* useful tools
** org-mode
#+begin_src emacs-lisp
(require 'org)
(setq org-src-window-setup 'current-window)
(setq org-use-speed-commands t)
#+end_src
*** Indent look
@ -393,6 +594,9 @@
:config
(setq ansi-color-names-vector
["black" "red3" "green3" "yellow3" "DodgerBlue2" "magenta3" "cyan3" "gray90"])
(set-face-attribute 'term-bold t :weight 'bold)
(set-face-attribute 'term-color-blue t :background "dodger blue" :foreground "dodger blue")
(defun find-vterm ()
(interactive)
@ -400,54 +604,29 @@
(switch-to-buffer b)
(vterm))))
#+end_src
** ledger
** posting source code
#+begin_src emacs-lisp
(use-package ledger-mode
:mode "\\.dat\\'"
:config
(defconst new-report-str (concat "%(binary) -f %(ledger-file) --cleared-format "
"'%(justify(scrub(get_at(display_total, 0)), 16, 16 + int(prepend_width), true, color))"
" %(justify(scrub(get_at(display_total, 1)), 18, 36 + int(prepend_width), true, color))"
" %(justify(scrub(get_at(display_total, 0) - get_at(display_total, 1)), 18, 36 + int(prepend_width), true, color))"
" %(latest_cleared ? format_date(latest_cleared) : \" \")"
" %(!options.flat ? depth_spacer : \"\")%-(ansify_if(partial_account(options.flat), blue if color))\\n"
"%/%$1 %$2 %$3 %$4\\n"
"%/%(prepend_width ? \" \" * int(prepend_width) : \"\")---------------- ---------------- ---------------- ---------\\n'"
" cleared"))
(use-package webpaste)
(setq ledger-reports
`(("account" "%(binary) -f %(ledger-file) reg %(account)")
("bal" "%(binary) -f %(ledger-file) bal")
("reg" "%(binary) -f %(ledger-file) reg")
("cleared" ,new-report-str)
;; ("cleared" "%(binary) -f %(ledger-file) cleared")
("expmonth" "%(binary) -f %(ledger-file) -M reg Expenses")
("owedmom" "%(binary) -f %(ledger-file) reg Liabilities")
("progress" "%(binary) -f %(ledger-file) reg Assets Equity Liabilities")
;; ("food" "%(binary) -f %(ledger-file) --add-budget reg Assets")
("payee" "%(binary) -f %(ledger-file) reg @%(payee)")))
(setq dynamic-reports
'(("budgetcal" "%(binary) -f ~/MEGA/org/entries/food.ledger --daily --add-budget reg Expenses")))
(defun ledger-dynamic-report ()
(interactive)
(let* ((ledger-reports dynamic-reports)
(report-name (ledger-report-read-name)))
(ledger-report report-name nil)))
(setq ledger-reconcile-buffer-line-format
"%(date)s %-4(code)s %-30(payee)s %-30(account)s %15(amount)s\n"))
(setq webpaste-paste-confirmation t)
(setq webpaste-provider-priority '("ix.io"))
#+end_src
** encryption
** wgrep
#+begin_src emacs-lisp
(require 'epa-file)
(epa-file-enable)
(setq epa-pinentry-mode 'loopback)
(setq epa-file-cache-passphrase-for-symmetric-encryption t)
(setenv "GPG_AGENT_INFO" nil)
(setq epg-gpg-program "gpg2")
(setq auth-source-debug t)
(setq auth-sources '((:source "~/.emacs.d/secrets/.authinfo.gpg")))
(use-package wgrep)
#+end_src
** Query replace rx
#+begin_src emacs-lisp
(defun my/query-replace-rx (&rest _)
"Call `query-replace-regexp', reading regexp in `rx' syntax.
Automatically wraps in parens and adds `seq' to the beginning of
the form."
(interactive)
(cl-letf (((symbol-function #'query-replace-read-from) (lambda (&rest _)
(--> (read-string "rx form: ")
(concat "'(seq " it ")")
(read it)
(cadr it)
(rx-to-string it)))))
(call-interactively #'query-replace-regexp)))
#+end_src

31
init.el
View file

@ -46,27 +46,30 @@
(require 'keymap)
;; It is imperative that this be loaded for a nice emacs
;; experience. Only SUPER stable stuff goes in this file, and should
;; rarely be modified
(org-babel-load-file
(expand-file-name "config-minimal.org"
user-emacs-directory))
;; (when (and (eq 'x window-system)
;; my/enable-exwm)
;; (org-babel-load-file
;; (expand-file-name "config-exwm.org"
;; user-emacs-directory)))
;; Load additional exwm stuff that changes constantly
(org-babel-load-file
(expand-file-name "config-exwm.org"
user-emacs-directory))
;; (org-babel-load-file
;; (expand-file-name "config-base.org"
;; user-emacs-directory))
;; Next most important thing would be
(org-babel-load-file
(expand-file-name "config-org.org"
user-emacs-directory))
;; (org-babel-load-file
;; (expand-file-name "config-org.org"
;; user-emacs-directory))
(org-babel-load-file
(expand-file-name "config-aux.org"
user-emacs-directory))
;; (org-babel-load-file
;; (expand-file-name "my-redefs.org"
;; user-emacs-directory))
(org-babel-load-file
(expand-file-name "my-redefs.org"
user-emacs-directory))
(setq my/finished t)
;; Testing pull from windows

View file

@ -71,5 +71,19 @@
(exwm-randr-refresh)
(setup-wallpaper))
(define-minor-mode exwm-presentation-mode
"Make both screen outputs display the same thing"
nil nil nil
(cond (exwm-presentation-mode
(cl-destructuring-bind (primary . secondary) (my/get-screens)
(shell-command
(format "xrandr --output %s --mode 1920x1080 --same-as %s"
(car secondary)
primary))
(setq exwm-randr-workspace-monitor-plist nil)
(exwm-randr-refresh)))
(t
(my/setup-screens))))
(provide 'exwm-screens)
;;; exwm-screens.el ends here

View file

@ -24,6 +24,7 @@
;;; Code:
(use-package exwm-x)
(use-package hydra)
(require 'my-exwmx-quickrun)
(require 'exwmx-appconfig)
@ -106,5 +107,8 @@
("K" (lambda () (interactive) (shell-command "clementine --volume-increase-by 25")))
("q" nil))
(add-to-list 'hydra-props-alist
'(clementine-volume-hydra :verbosity 0))
(provide 'exwm-tag)
;;; exwm-tag.el ends here

View file

@ -23,6 +23,7 @@
;;; Commentary:
;;; Code:
(require 'exwm)
(require 'exwm-launch-program)
(setq i3-string "Xephyr -br -ac -noreset -resizeable -screen 1920x1080 :8 & sleep 1s; DISPLAY=:8 i3")
@ -46,6 +47,11 @@
(interactive)
(launch-program kde-string))
(setq exwm-manage-configurations `(((equal exwm-class-name "Xephyr")
floating nil
char-mode t
fullscreen t)
((equal exwm-class-name "plasmashell")
floating t)))
(provide 'xephyr-helper)
;;; xephyr-helper.el ends here