aboutsummaryrefslogtreecommitdiff
path: root/diff.txt
diff options
context:
space:
mode:
Diffstat (limited to 'diff.txt')
-rw-r--r--diff.txt215
1 files changed, 215 insertions, 0 deletions
diff --git a/diff.txt b/diff.txt
new file mode 100644
index 0000000..93dc30e
--- /dev/null
+++ b/diff.txt
@@ -0,0 +1,215 @@
+Modified regular file config.org:
+ ...
+ 337 337: ** Auth
+ 338 338: To send mail, we need to log into everything.
+ 339 339: Instead of typing out passwords every time, we use the ~~.authinfo.gpg~ file (can also be without the gpg encryption).
+ 340 : First we install & set up pinentry.
+ 341 : #+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ 342 : (package! pinentry)
+ 343 : #+end_src
+ 344 340:
+ 345 : #+begin_src emacs-lisp
+ 346 : (use-package! pinentry
+ 347 : :config
+ 348 : (pinentry-start))
+ 349 : (setq epg-pinentry-mode 'loopback)
+ 350 : #+end_src
+ 351 : To read the file:
+ 341: Read authinfo.gpg, the file containing the secrets
+ 352 342: #+begin_src emacs-lisp
+ 353 343: (setq auth-sources '("~/.authinfo.gpg"))
+ 354 344: #+end_src
+ ...
+1400 1390: (add-hook 'nov-mode-hook
+1401 1391: (lambda ()
+1402 1392: (face-remap-add-relative 'variable-pitch
+1403 : :family "Georgia" :height 1.3))) ; different font for reading
+ 1393: :family "Libron" :height 1.3))) ; different font for reading
+1404 1394: (add-hook 'nov-mode-hook #'writeroom-mode) ; center text & stuff
+1405 1395: #+end_src
+1406 1396:
+ ...
+1420 1410: (package! try)
+1421 1411: #+end_src
+1422 1412: That's about all ~try~ needs.
+ 1413: ** hledger-mode
+ 1414: hledger mode lets you manage hledger via Emacs.
+ 1415: #+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ 1416: (package! hledger-mode)
+ 1417: (package! company) ; needed for autocompletion
+ 1418: #+end_src
+ 1419:
+ 1420: First we have to set up company, which is needed for autocompletion in hledger-mode
+ 1421: #+begin_src emacs-lisp
+ 1422: (use-package! company
+ 1423: :ensure t
+ 1424: :defer nil)
+ 1425: #+end_src
+ 1426:
+ 1427:
+ 1428: Then, we set up hledger-mode
+ 1429: #+begin_src emacs-lisp
+ 1430: (use-package! hledger-mode
+ 1431: :mode ("\\.journal\\'" "\\.hledger\\'")
+ 1432: :custom
+ 1433: (hledger-jfile (expand-file-name "~/.hledger.journal"))
+ 1434: :after (company cape)
+ 1435: :config
+ 1436: (add-hook 'hledger-mode-hook
+ 1437: (lambda ()
+ 1438: (add-hook 'completion-at-point-functions
+ 1439: (cape-company-to-capf #'hledger-company)
+ 1440: nil t))))
+ 1441: #+end_src
+1423 1442: * Tramp
+1424 1443:
+1425 1444: Tramp is a way to edit files via SSH and root owned files in Emacs.
+ ...
+1434 1453: (tramp-remote-shell-args ("-c"))
+1435 1454: (tramp-connection-timeout 10))))
+1436 1455: #+end_src
+ 1456: * EXWM
+ 1457: #+begin_quote
+ 1458: Who needs a WM if you have Emacs?
+ 1459: #+end_quote
+ 1460: EXWM is the Emacs X Window Manager.
+ 1461: #+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ 1462: (package! exwm)
+ 1463: (package! edwina) ; dynamic tiling
+ 1464: (package! exwm-edit) ; edit X text fields in an Emacs buffer
+ 1465: (package! exwm-mff) ; mouse follows focus
+ 1466: (package! app-launcher :recipe (:host github :repo "SebastienWae/app-launcher"))
+ 1467: #+end_src
+ 1468:
+ 1469: ** Helpers and bindings
+ 1470: #+begin_src emacs-lisp
+ 1471: (defconst my/exwm-session-p (and (getenv "EXWM") t))
+ 1472:
+ 1473: (defun my/spawn (cmd)
+ 1474: "Return a command that runs shell CMD."
+ 1475: (lambda () (interactive) (start-process-shell-command cmd nil cmd)))
+ 1476:
+ 1477: (defun my/run-once (cmd)
+ 1478: "Run CMD only if no process named like its executable is already running."
+ 1479: (let ((name (file-name-nondirectory (car (split-string cmd)))))
+ 1480: (start-process-shell-command
+ 1481: cmd nil (format "pgrep -x %s >/dev/null || %s" (shell-quote-argument name) cmd))))
+ 1482:
+ 1483: (defun my/close-window ()
+ 1484: (interactive)
+ 1485: (kill-buffer)
+ 1486: (when (cdr (window-list))
+ 1487: (edwina-delete-window)))
+ 1488:
+ 1489: (defconst my/spawn-binds
+ 1490: '(("s-<return>" . "alacritty") ("s-w" . "vivaldi") ("s-e" . "xfe")
+ 1491: ("s-s" . "discord") ("s-x" . "loginctl lock-session")
+ 1492: ("<print>" . "screenshot") ("S-<print>" . "screenrecord")
+ 1493: ("s-S" . "screenshot select") ("s-R" . "screenrecord select")
+ 1494: ("<XF86AudioRaiseVolume>" . "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+")
+ 1495: ("<XF86AudioLowerVolume>" . "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-")
+ 1496: ("<XF86AudioMute>" . "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle")
+ 1497: ("<XF86AudioPlay>" . "playerctl play-pause")
+ 1498: ("<XF86AudioNext>" . "playerctl next")
+ 1499: ("<XF86AudioPrev>" . "playerctl previous")))
+ 1500:
+ 1501: (defconst my/wm-binds
+ 1502: '(("s-r" . exwm-reset)
+ 1503: ("s-p" . app-launcher-run-app)
+ 1504: ("s-j" . edwina-select-next-window)
+ 1505: ("s-k" . edwina-select-previous-window)
+ 1506: ("s-J" . edwina-swap-next-window)
+ 1507: ("s-K" . edwina-swap-previous-window)
+ 1508: ("s-h" . edwina-dec-mfact)
+ 1509: ("s-l" . edwina-inc-mfact)
+ 1510: ("s-H" . edwina-inc-nmaster)
+ 1511: ("s-L" . edwina-dec-nmaster)
+ 1512: ("s-m" . edwina-zoom) ; promote to master, dwm-style
+ 1513: ("s-q" . my/close-window)
+ 1514: ("s-f" . exwm-floating-toggle-floating)
+ 1515: ("C-s-q" . save-buffers-kill-emacs)))
+ 1516:
+ 1517: (defconst my/ws-binds
+ 1518: (cl-loop for i from 0 below 9
+ 1519: for sym in '("!" "@" "#" "$" "%" "^" "&" "*" "(")
+ 1520: collect (cons (format "s-%d" (1+ i))
+ 1521: (let ((ws i)) (lambda () (interactive) (exwm-workspace-switch-create ws))))
+ 1522: collect (cons (format "s-%s" sym)
+ 1523: (let ((ws i)) (lambda () (interactive) (exwm-workspace-move-window ws))))))
+ 1524:
+ 1525: (defun my/exwm-key (spec)
+ 1526: (cons (kbd (car spec))
+ 1527: (if (stringp (cdr spec)) (my/spawn (cdr spec)) (cdr spec))))
+ 1528: #+end_src
+ 1529:
+ 1530: ** EXWM itself
+ 1531: #+begin_src emacs-lisp
+ 1532: (use-package! exwm
+ 1533: :when my/exwm-session-p
+ 1534: :config
+ 1535: (setenv "EXWM" nil)
+ 1536: (setq exwm-workspace-number 9
+ 1537: exwm-manage-configurations
+ 1538: '(((member exwm-class-name '("Alacritty")) char-mode t)
+ 1539: ((equal exwm-class-name "discord") workspace 8)
+ 1540: ((member exwm-class-name '("Pavucontrol" "Blueman-manager" "ssh-askpass" "Gcr-prompter"))
+ 1541: floating t)
+ 1542: ((equal exwm-title "pinentry") floating t))
+ 1543: exwm-input-global-keys
+ 1544: (mapcar #'my/exwm-key (append my/spawn-binds my/wm-binds my/ws-binds))
+ 1545: exwm-input-simulation-keys
+ 1546: '(([?\C-b] . [left]) ([?\C-f] . [right])
+ 1547: ([?\C-p] . [up]) ([?\C-n] . [down])
+ 1548: ([?\C-a] . [home]) ([?\C-e] . [end])
+ 1549: ([?\C-d] . [delete]) ([?\C-k] . [S-end delete])
+ 1550: ([?\C-w] . [?\C-x]) ([?\M-w] . [?\C-c]) ([?\C-y] . [?\C-v])))
+ 1551:
+ 1552: (cl-pushnew ?\C-c exwm-input-prefix-keys)
+ 1553:
+ 1554: (add-hook 'exwm-update-class-hook
+ 1555: (lambda () (exwm-workspace-rename-buffer exwm-class-name)))
+ 1556: (add-hook 'exwm-update-title-hook
+ 1557: (lambda ()
+ 1558: (exwm-workspace-rename-buffer
+ 1559: (format "%s | %s" exwm-class-name
+ 1560: (truncate-string-to-width (or exwm-title "") 40 nil nil "…")))))
+ 1561:
+ 1562: (add-hook 'exwm-mode-hook #'doom-mark-buffer-as-real-h)
+ 1563: (advice-add #'suspend-frame :override #'ignore)
+ 1564:
+ 1565: (add-hook 'exwm-init-hook
+ 1566: (lambda ()
+ 1567: (start-process-shell-command
+ 1568: "dbus-env" nil "dbus-update-activation-environment DISPLAY XAUTHORITY")
+ 1569: (dolist (c '("feh --bg-scale ~/Pictures/floating_gnu.png" "xset m 0"))
+ 1570: (start-process-shell-command c nil c))
+ 1571: (my/run-once "~/.cargo/bin/mprisence")))
+ 1572:
+ 1573: (if (fboundp 'exwm-systemtray-mode) (exwm-systemtray-mode 1) (exwm-systemtray-enable))
+ 1574: (if (fboundp 'exwm-wm-mode) (exwm-wm-mode 1) (exwm-enable))) ; 0.34+ vs 0.33
+ 1575:
+ 1576: (use-package! exwm-edit
+ 1577: :when my/exwm-session-p
+ 1578: :after exwm
+ 1579: :config (setq exwm-edit-split "below"))
+ 1580:
+ 1581: (use-package! exwm-mff
+ 1582: :when my/exwm-session-p
+ 1583: :hook (exwm-init . exwm-mff-mode))
+ 1584: #+end_src
+ 1585: ** Edwina
+ 1586: Edwina lets EXWM become a dynamically tiling window manager.
+ 1587: #+begin_src emacs-lisp
+ 1588: (use-package! edwina
+ 1589: :when my/exwm-session-p
+ 1590: :after exwm
+ 1591: :config
+ 1592: (setq display-buffer-base-action '(display-buffer-below-selected)
+ 1593: edwina-mfact 0.50
+ 1594: edwina-narrow-threshold 0)
+ 1595: (edwina-mode 1))
+ 1596: #+end_src
+1437 1597: * Evil
+1438 1598: ~Mapping at its finest~
+1439 1599: EVIl mode emulates VIM bindings in Emacs.
+ ...