From ddc2f025c34fe24b26e9698eddde350ad24bbf16 Mon Sep 17 00:00:00 2001 From: Sakooooo <78461130+Sakooooo@users.noreply.github.com> Date: Fri, 14 Jun 2024 15:06:55 +0000 Subject: [PATCH] its emacs time --- config/emacs/dashboard.png | Bin 68901 -> 0 bytes config/emacs/emacs.org | 1579 ------------------------------------ 2 files changed, 1579 deletions(-) delete mode 100644 config/emacs/dashboard.png delete mode 100644 config/emacs/emacs.org diff --git a/config/emacs/dashboard.png b/config/emacs/dashboard.png deleted file mode 100644 index 725d15562f2cea7747871d3fb60a79fac9a782c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68901 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­yVhCX1)M(-Ur%v0o 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 KOIJvm1pFTr0~v$> diff --git a/config/emacs/emacs.org b/config/emacs/emacs.org deleted file mode 100644 index f6b8fb52..00000000 --- a/config/emacs/emacs.org +++ /dev/null @@ -1,1579 +0,0 @@ -#+title: Sako's Emacs configuration -#+PROPERTY: header-args:emacs-lisp :tangle yes :tangle init.el -* Usage -M-x org-bable-tangle -* Lexical Binding -Should make startup faster, taken from doom-emacs -#+begin_src emacs-lisp -;; -*- lexical-binding: t; -*- -#+end_src -* Default Enconding -#+begin_src emacs-lisp - (setq utf-translate-cjk-mode nil) ; disable CJK coding/encoding (Chinese/Japanese/Korean characters) - (set-language-environment 'utf-8) - (set-keyboard-coding-system 'utf-8) ; For old Carbon emacs on OS X only - (setq locale-coding-system 'utf-8) - (set-default-coding-systems 'utf-8) - (set-terminal-coding-system 'utf-8) - (set-selection-coding-system - (if (eq system-type 'windows-nt) - 'utf-16-le ;; https://rufflewind.com/2014-07-20/pasting-unicode-in-emacs-on-windows - 'utf-8)) - (prefer-coding-system 'utf-8) -#+end_src -* Put Backup Files Somewhere else -#+begin_src emacs-lisp - (setq backup-directory-alist '(("." . "~/.emacs.d/backup")) - backup-by-copying t - version-control t - delete-old-versions t - kept-new-versions 20 - kept-old-versions 5) -#+end_src - -* EmacsClient UI -#+begin_src emacs-lisp - (setq frame-resize-pixelwise t) - ;; ui settings apparently go below - (setq default-frame-alist '((font . "JetBrainsMono NF") - '(vertical-scroll-bars . nil) - '(horizontal-scroll-bars . nil))) - -#+end_src -* UI -#+begin_src emacs-lisp - ;; UI/UX - (setq inhibit-splash-screen t) - ;; remove useless GUI elements - (scroll-bar-mode -1) - (tool-bar-mode -1) - (tooltip-mode -1) - (set-fringe-mode 10) - (menu-bar-mode -1) - ;; Line Numbers - (column-number-mode) - ;; Bell - (setq visible-bell nil) - ;; prefer y/n - (fset 'yes-or-no-p 'y-or-n-p) - ;; delet eseciotn - (delete-selection-mode +1) - ;; Stop Emacs from trying to use dialog boxes. - (setq use-dialog-box nil) - ;; idc emacs just work already - (setq warning-minimum-level :emergency) -#+end_src -* Line Numbers -#+begin_src emacs-lisp - (add-hook 'prog-mode 'display-line-numbers-mode) - (add-hook 'yaml-mode 'display-line-numbers-mode) - (add-hook 'conf-mode 'display-line-numbers-mode) - (setq display-line-numbers-width-start t) - (setq display-line-numbers-type 'relative) -#+end_src -* Keymaps -#+begin_src emacs-lisp - ;; switch buffers - (global-set-key (kbd "C-M-j") 'counsel-switch-buffer) - ;; instead of control-g - (global-set-key (kbd "") 'keyboard-escape-quit) - ;; repeat keybinds - (repeat-mode) - ;; electric pairs - (electric-pair-mode) -#+end_src -* Fonts -#+begin_src emacs-lisp - (set-face-attribute `default nil :font "JetBrainsMono NF" :height 125) - - ;; fix emojis - (setf use-default-font-for-symbols nil) - (set-fontset-font t 'unicode "Noto Color Emoji" nil 'append) -#+end_src -* Use-Package setup -#+begin_src emacs-lisp - (message "setting up use-package") - (require `package) - - (setq package-archives `(("mepla" . "https://melpa.org/packages/") - ("org" . "https://orgmode.org/elpa/") - ("elpa" . "https://elpa.gnu.org/packages/"))) - - (package-initialize) - - (unless (package-installed-p 'use-package) - (progn - (package-refresh-contents) - (package-install 'use-package))) - - (require 'use-package) - (setq use-package-always-ensure t) -#+end_src -* Straight.el -We only enable Straight.el for anything other than NixOS -Cause emacs overlay lol -#+begin_src emacs-lisp - ;; TODO Test this on darwin someday - (when (eq system-type 'windows-nt) - (message "setting up straight.el") - (defvar bootstrap-version) - (let ((bootstrap-file - (expand-file-name - "straight/repos/straight.el/bootstrap.el" - (or (bound-and-true-p straight-base-dir) - user-emacs-directory))) - (bootstrap-version 7)) - (unless (file-exists-p bootstrap-file) - (with-current-buffer - (url-retrieve-synchronously - "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el" - 'silent 'inhibit-cookies) - (goto-char (point-max)) - (eval-print-last-sexp))) - (load bootstrap-file nil 'nomessage)) - (setq straight-use-package-by-default t)) -#+end_src -* SPEED SPEED SPEED SPEED -** Notify -#+begin_src emacs-lisp -(message "making emacs faster") -#+end_src -** Avoid Garbage Collection at startup -#+begin_src emacs-lisp - (use-package gcmh - :init - (setq gcmh-idle-delay 5) - (setq gcmh-high-cons-threshold (* 16 1024 1024)) - :config - (gcmh-mode)) -#+end_src -** Move Garbage collection further back -#+begin_src emacs-lisp -(setq gc-cons-threshold most-positive-fixnum) -#+end_src -** Unset file-name-handler-alist temporarily -#+begin_src emacs-lisp -(defvar sakomacs--file-name-handler-alist file-name-handler-alist) -(setq file-name-handler-alist nil) - -;; Alternatively, restore it even later: -(add-hook 'emacs-startup-hook - (lambda () - (setq file-name-handler-alist sakomacs--file-name-handler-alist))) -#+end_src -** Go back to normal GC after init -#+begin_src emacs-lisp - (add-hook 'emacs-startup-hook - (lambda () - ;;(setq gc-cons-threshold 16777216 ; 16mb - ;; this could be really bad idk - (setq gc-cons-threshold 100000000 - gc-cons-percentage 0.1))) -#+end_src -** Don't use GC when minibuffer is used -#+begin_src emacs-lisp -(defun doom-defer-garbage-collection-h () - "Disable garbage collection." - (setq gc-cons-threshold most-positive-fixnum)) - -(defun doom-restore-garbage-collection-h () - "Restore garbage collection." - (run-at-time - 1 nil (lambda () (setq gc-cons-threshold 16777216)))) - -(add-hook 'minibuffer-setup-hook #'doom-defer-garbage-collection-h) -(add-hook 'minibuffer-exit-hook #'doom-restore-garbage-collection-h) -#+end_src -** Make Emacs read more -#+begin_src emacs-lisp -(setq read-process-output-max (* 1024 1024)) ;; 1mb -#+end_src -* Native Compilation -#+begin_src emacs-lisp - (setq package-native-compile t) - (setq comp-deferred-compilation t) - (setq native-comp-deferred-compilation-deny-list nil) - (setq warning-suppress-log-types '((comp))) -#+end_src -* Custom Modeline -#+begin_src emacs-lisp - ;;ill continue making this later - ;; (setq mode-line-format nil) - - ;; (kill-local-variable 'mode-line-format) - - ;; (force-mode-line-update) - - ;; (setq-default mode-line-format - ;; '((:eval (sakoline-render - ;; ;; left - ;; (quote ("%e" - ;; sakoline-evil-mode - ;; " " - ;; sakoline-buffer-name - ;; " " - ;; sakoline-buffer-state)) - ;; ;; right - ;; (quote (sakoline-major-mode - ;; ) - ;; ))))) - - ;; (defun sakoline-render (left right) - ;; "Return a string of `window-width' length. - ;; Containing LEFT, and RIGHT aligned respectively." - ;; (let ((available-width - ;; (- (window-total-width) - ;; (+ (length (format-mode-line left)) - ;; (length (format-mode-line right)))))) - ;; (append left - ;; (list (format (format "%%%ds" available-width) "")) - ;; right))) - - ;; (defvar-local sakoline-buffer-name - ;; '(:eval - ;; (propertize (buffer-name) 'face '(:foreground "#ffffff"))) - ;; "Mode line variable that shows the buffer name.") - - ;; (put 'sakoline-buffer-name 'risky-local-variable t) - - ;; (defface sakoline-major-mode-color - ;; '((t :foreground "grey")) - ;; "Major Mode color for sakoline.") - - ;; (defun sakoline--major-mode-name () - ;; "Return Capitalized Major Mode" - ;; (capitalize (symbol-name major-mode))) - - ;; (defvar-local sakoline-major-mode - ;; '(:eval - ;; (propertize (sakoline--major-mode-name) 'face 'sakoline-major-mode-color))) - - ;; (put 'sakoline-major-mode 'risky-local-variable t) - - ;; (defface sakoline-evil-visual-color - ;; '((t :background "#6600cc" :foreground "black")) - ;; "Evil Visual Color") - - ;; (defface sakoline-evil-normal-color - ;; '((t :background "#99ff99" :foreground "black")) - ;; "Evil Visual Color") - - ;; (defface sakoline-evil-insert-color - ;; '((t :background "#00cc66" :foreground "black")) - ;; "Evil Visual Color") - - ;; (defface sakoline-evil-emacs-color - ;; '((t :background "#9900ff" :foreground "black")) - ;; "Evil Visual Color") - - ;; (defface sakoline-evil-operator-color - ;; '((t :background "#ff3300" :foreground "black")) - ;; "Evil Visual Color") - - ;; (defvar-local sakoline-evil-mode - ;; '(:eval (cond - ;; ((eq evil-state 'visual) (propertize " VISUAL " 'face 'sakoline-evil-visual-color )) - ;; ((eq evil-state 'normal) (propertize " NORMAL " 'face 'sakoline-evil-normal-color )) - ;; ((eq evil-state 'insert) (propertize " INSERT " 'face 'sakoline-evil-insert-color )) - ;; ((eq evil-state 'emacs) (propertize " EMACS " 'face 'sakoline-evil-emacs-color )) - ;; ((eq evil-state 'operator) (propertize " OPERATOR " 'face 'sakoline-evil-operator-color)) - ;; "Get current evil mode state"))) - - ;; (put 'sakoline-evil-mode 'risky-local-variable t) - - ;; (defface sakoline-buffer-state-readonly - ;; '((t :foreground "red")) - ;; "Face for read-only buffer") - ;; (defface sakoline-buffer-state-modified - ;; '((t :foreground "orange")) - ;; "Face for modified buffer") - - ;; (defvar-local sakoline-buffer-state - ;; '(:eval - ;; (cond - ;; (buffer-read-only - ;; (propertize ">:(" - ;; 'face 'sakoline-buffer-state-readonly - ;; 'help-echo "buffer is read only")) - ;; ((buffer-modified-p) - ;; (propertize "!!!" - ;; 'face 'sakoline-buffer-state-modified))))) - - ;; (put 'sakoline-buffer-state 'risky-local-variable t) - -#+end_src -* Packages -** Log state -#+begin_src emacs-lisp -(message "setting up packages") -#+end_src -** Command Log Mode -#+begin_src emacs-lisp - (use-package command-log-mode - ) -#+end_src -** Command Autocompletion Packages -#+begin_src emacs-lisp - ;; better search - (use-package swiper - ) - ;; better commands - (use-package counsel - :custom - (counsel-linux-app-format-function #'counsel-linux-app-format-function-name-only) - ) - ;; autocompletion on commands (?) - (use-package ivy - :diminish - :bind (("C-s" . swiper) - :map ivy-minibuffer-map - ("TAB" . ivy-alt-done) - ("C-l" . ivy-alt-done) - ("C-j" . ivy-next-line) - ("C-k" . ivy-previous-line) - :map ivy-switch-buffer-map - ("C-k" . ivy-previous-line) - ("C-l" . ivy-done) - ("C-d" . ivy-switch-buffer-kill) - :map ivy-reverse-i-search-map - ("C-k" . ivy-previous-line) - ("C-d" . ivy-reverse-i-search-kill)) - :demand - :config - (ivy-mode 1)) - ;; better ivy autocompletion - (use-package ivy-rich - :init - (ivy-rich-mode 1)) - - ;; ivy in the middle - (use-package ivy-posframe - :init - (setq ivy-posframe-display-functions-alist '((t . ivy-posframe-display-at-frame-center))) - :config - (ivy-posframe-mode 1)) - - ;; counsel M+X - (use-package counsel - :bind (("M-x" . counsel-M-x) - ("C-x b" . counsel-ibuffer) - ("C-x C-f" . counsel-find-file) - :map minibuffer-local-map - ("C-r" . 'counsel-minibuffer-history)) - :config - (setq ivy-inital-inputs-alist nil)) -#+end_src -** Custom Themes -#+begin_src emacs-lisp - (use-package doom-themes - :ensure t - :config - ;; Global settings (defaults) - (setq doom-themes-enable-bold t ; if nil, bold is universally disabled - doom-themes-enable-italic t) ; if nil, italics is universally disabled - ;; load the theme - (load-theme 'doom-badger t) - - (doom-themes-org-config) - - (doom-themes-treemacs-config) - - ;; Enable flashing mode-line on errors - (doom-themes-visual-bell-config)) - -#+end_src -** All the Icons (to make doom-themes happy) -#+begin_src emacs-lisp -(use-package all-the-icons) -#+end_src -** Nerd-Fonts (All of the Icons doesnt work for me) -#+begin_src emacs-lisp -(use-package nerd-icons - :custom - ;; "Symbols Nerd Font Mono" is the default and is recommended - ;; but you can use any other Nerd Font if you want - (nerd-icons-font-family "JetBrainsMono NF") - ) -#+end_src -** Rainbow Delimiters -#+begin_src emacs-lisp -(use-package rainbow-delimiters - :hook (prog-mode . rainbow-delimiters-mode)) -#+end_src -** Keybinding autocompletion -#+begin_src emacs-lisp - (use-package which-key - :init (which-key-mode) - :diminish which-key-mode - :config - (setq which-key-idle-delay 1)) -#+end_src -** Custom Modeline -#+begin_src emacs-lisp - (use-package doom-modeline - :ensure t - ;; :hook (after-init . doom-modeline-mode) - :init (doom-modeline-mode 1) - :custom ( - (doom-modeline-height 35) - (doom-modeline-bar-width 4) - (doom-modeline-major-mode-icon nil) - (doom-modeline-modal-modern-icon nil) - )) - - ;; (use-package telephone-line - ;; :init - ;; (telephone-line-mode 1)) -#+end_src -** Hide Modeline -#+begin_src emacs-lisp - (use-package hide-mode-line - :hook (((treemacs-mode - eshell-mode shell-mode - term-mode vterm-mode - embark-collect-mode - lsp-ui-imenu-mode - pdf-annot-list-mode - dashboard-mode) . turn-on-hide-mode-line-mode) - (dired-mode . turn-off-hide-mode-line-mode))) -#+end_src -** Minor mode menu for modline -#+begin_src emacs-lisp - (use-package minions - :hook (doom-modeline-mode . minions-mode)) -#+end_src -** Better help menu -#+begin_src emacs-lisp -(use-package helpful - :custom - (counsel-describe-function-function #'helpful-callable) - (counsel-describe-variable-function #'helpful-variable) - :bind - ([remap describe-function ] . counsel-describe-function) - ([remap describe-command] . helpful-command) - ([remap describe-variable] . counsel-describe-variable) - ([remap describe-key] . helpful-key)) -#+end_src -** General Leader Key -#+begin_src emacs-lisp - (use-package general - :config - (general-create-definer sakomacs/leader-keys - :keymaps '(normal insert visual emacs) - :prefix "SPC" - :global-prefix "C-SPC") - - (sakomacs/leader-keys - ;; code - "c" '(:ignore c :which-key "code") - "cc" '(compile :which-key "compile") - "cC" '(recompile :which-key "compile") - "cX" '(lsp-treeemacs-errors-list :which-ley "list errors") - ;; toggles - "t" '(:ignore t :which-key "toggles") - "tt" '(counsel-load-theme :which-key "choose theme") - "ts" '(hydra-text-scale/body :which-key "scale text") - ;; search - "s" '(:ignore s :which-key "search") - "sb" '(swiper :which-key "search buffer") - ;; insert - "i" '(:ignore i :which-key "insert") - "ie" '(emoji-search :which-key "Emoji") - ;; project - "p" '(:ignore p :which-key "projects") - "pp" '(projectile-switch-project :which-key "open project") - "pk" '(projectile-kill-buffers :which-key "close project") - "pa" '(projectile-add-known-project :which-key "add project") - "pR" '(projectile-run-project :which-key "run project") - "pt" '(magit-todos-list :which-key "list project todos") - "ps" '(projectile-save-project-buffers :which-key "save project") - "po" '(projectile-find-other-file :which-key "find other file") - "pg" '(projectile-configure-project :which-key "configure project") - "pc" '(projectile-compile-project :which-key "compile project") - ;; open - "o" '(:ignore o :which-key "open") - "op" '(treemacs :which-key "treemacs") - "oP" '(treemacs-find-file :which-key "treemacs find file") - "oe" '(eshell :which-key "eshell") - "or" '(elfeed :which-key "rss") - ;; notes - "n" '(:ignore o :which-key "notes") - "na" '(org-agenda :which-key "agenda") - "nf" '(org-roam-node-find :which-key "find node") - "nc" '(org-capture :which-key "capture") - "np" '(org-pomodoro :which-key "pomodoro") - "ne" '(:ignore ne :which-key "export") - "nep" '(org-latex-export-to-pdf :which-key "pdf") - ;; quit - "q" '(:ignore q :which-key "quit") - "qq" '(delete-frame :which-key "close emacs") - "qK" '(kill-emacs :which-key "quit emacs") - ;; git - "g" '(:ignore g :which-key "git") - "gs" '(magit-status :which-key "status") - "gc" '(:ignore gc :which-key "create") - "gcr" '(magit-init :which-key "init repo") - "gcR" '(magit-clone :which-key "clone repo") - "gcc" '(magit-commit-create :which-key "commit") - "gci" '(forge-create-issue :which-key "issue") - "gcp" '(forge-create-pullreq :which-key "pull request"))) - -#+end_src -** Dashboard -#+begin_src emacs-lisp - (use-package dashboard - :init - (setq dashboard-display-icons-p t) ;; display icons on both GUI and terminal - (setq dashboard-icon-type 'nerd-icons) ;; use `nerd-icons' package - (setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) - (setq dashboard-center-content t) - (setq dashboard-projects-backend 'projectile) - (setq dashboard-startup-banner "~/.emacs.d/dashboard.png") - (setq dashboard-footer-messages '("i think i have emacs pinky" - "why are we still using lisp again?" - "why is this running on 1/16 threads?!?!?" - "still waiting for multithreaded :)" - "any day now" - "make sure to pray today" - "im literally kanye west" - "please dont break please dont break" - "GNU/Linux/Emacs/???" - "what is a GNU/Linux ?????????????" - "done!" - "remove / for faster emacs on linux" - "")) - (setq dashboard-items '((recents . 3) - (projects . 3) - (agenda . 5))) - - (setq dashboard-image-banner-max-height 200) - ;; (setq dashboard-image-banner-max-width 300) - - (setq dashboard-page-separator "\n\n") - (setq initial-buffer-choice (lambda () (get-buffer "*dashboard*"))) - (dashboard-setup-startup-hook)) -#+end_src -** Evil Mode (vim) -#+begin_src emacs-lisp - (use-package evil - :init - (setq evil-want-integration t) - (setq evil-want-keybinding nil) - (setq evil-want-C-u-scroll t) - (setq evil-want-C-i-jump nil) - :demand - :config - (evil-mode 1) - (define-key evil-insert-state-map (kbd "C-g") 'evil-normal-state) - (define-key evil-insert-state-map (kbd "C-h") `evil-delete-backward-char-and-join) - - ;; visual line motion - (evil-global-set-key 'motion "j" 'evil-next-visual-line) - (evil-global-set-key 'motion "k" 'evil-previous-visual-line) - - (evil-set-initial-state 'messages-buffer-mode 'normal) - (evil-set-initial-state 'dashboard-mode 'normal)) - - ;; extra things for Evil - (use-package evil-collection - :after evil - :config - (evil-collection-init)) - - ;; commenting - (use-package evil-commentary - :after evil - :diminish - :config (evil-commentary-mode +1)) -#+end_src -** Hydra for scaling text -#+begin_src emacs-lisp - (use-package hydra) - (defhydra hydra-text-scale (:timeout 4) - "scale text" - ("j" text-scale-increase "in") - ("k" text-scale-decrease "out") - ("f" nil "finished" :exit t)) -#+end_src -** Helpful for projects -#+begin_src emacs-lisp - (use-package projectile - :diminish projectile-mode - :demand - :config (projectile-mode) - :custom ((projectile-completion-system 'ivy)) - :bind-keymap - ("C-c p" . projectile-command-map) - :init - (when (file-directory-p "~/dev") - (setq projectile-project-search-path '("~/dev"))) - (setq projectile-switch-project-action #'projectile-dired)) - - (use-package counsel-projectile - :config (counsel-projectile-mode)) -#+end_src -** Org-Mode -#+begin_src emacs-lisp - (use-package org - :hook (org-mode . org-indent-mode) - :config - (setq org-ellipsis " ↓") - (setq org-agenda-start-with-log-mode t) - (setq org-log-done 'time) - (setq org-log-into-drawer t) - - ;; org habits thing - (require 'org-habit) - (add-to-list 'org-modules 'org-habit) - (setq org-habit-graph-column 60) - - ;; archive thingy i forgot - (setq org-refile-targets - '(("archive.org" :maxlevel . 1))) - - ;; save org buffer before refile - (advice-add 'org-refile :after 'org-save-all-org-buffers) - - ;; org agenda files - (setq org-agenda-files - '("~/org/tasks.org" - "~/org/school.org" - "~/org/daily.org" - "~/org/irl.org" - "~/org/work.org")) - - ;; Following - (setq org-return-follows-link t) - - ;; hide stars except for leader star - (setq org-hide-leading-stars t) - (setq org-hide-emphasis-markers nil) - - ;; make latex previews better - (setq org-format-latex-options '(:foreground default :background default :scale 2.0 :html-foreground "Black" :html-background "Transparent" :html-scale 2.0 :matchers ("begin" "$1" "$" "$$" "\\(" "\\["))) - - ;; org mode src thing - (require 'org-tempo) - - (add-to-list 'org-structure-template-alist '("sh" . "src shell")) - (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) - (add-to-list 'org-structure-template-alist '("py" . "src python")) - - (setq org-todo-keywords - '((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!)") - (sequence "BACKLOG(b)" "PLAN(p)" "READY(r)" "ACTIVE(a)" "REVIEW(v)" "WAIT(w@/!)" "HOLD(h)" "|" "COMPLETED(c)" "CANCELED(k@)"))) - - (setq org-refile-targets - '(("archive.org" :maxlevel . 1) - ("tasks.org" :maxlevel . 1))) - - ;; Save Org buffers after refiling! - (advice-add 'org-refile :after 'org-save-all-org-buffers) - - (setq org-startup-with-inline-images t) - - (setq org-tag-alist - '((:startgroup) - ; Put mutually exclusive tags here - (:endgroup) - ("@errand" . ?E) - ("@home" . ?H) - ("@work" . ?W) - ("agenda" . ?a) - ("planning" . ?p) - ("publish" . ?P) - ("batch" . ?b) - ("note" . ?n) - ("idea" . ?i))) - - ;; Configure custom agenda views - (setq org-agenda-custom-commands - '(("d" "Dashboard" - ((agenda "" ((org-deadline-warning-days 7))) - (todo "NEXT" - ((org-agenda-overriding-header "Next Tasks"))) - (tags-todo "agenda/ACTIVE" ((org-agenda-overriding-header "Active Projects"))))) - - ("n" "Next Tasks" - ((todo "NEXT" - ((org-agenda-overriding-header "Next Tasks"))))) - - ("W" "Work Tasks" tags-todo "+work-email") - - ;; Low-effort next actions - ("e" tags-todo "+TODO=\"NEXT\"+Effort<15&+Effort>0" - ((org-agenda-overriding-header "Low Effort Tasks") - (org-agenda-max-todos 20) - (org-agenda-files org-agenda-files))) - - ("w" "Workflow Status" - ((todo "WAIT" - ((org-agenda-overriding-header "Waiting on External") - (org-agenda-files org-agenda-files))) - (todo "REVIEW" - ((org-agenda-overriding-header "In Review") - (org-agenda-files org-agenda-files))) - (todo "PLAN" - ((org-agenda-overriding-header "In Planning") - (org-agenda-todo-list-sublevels nil) - (org-agenda-files org-agenda-files))) - (todo "BACKLOG" - ((org-agenda-overriding-header "Project Backlog") - (org-agenda-todo-list-sublevels nil) - (org-agenda-files org-agenda-files))) - (todo "READY" - ((org-agenda-overriding-header "Ready for Work") - (org-agenda-files org-agenda-files))) - (todo "ACTIVE" - ((org-agenda-overriding-header "Active Projects") - (org-agenda-files org-agenda-files))) - (todo "COMPLETED" - ((org-agenda-overriding-header "Completed Projects") - (org-agenda-files org-agenda-files))) - (todo "CANC" - ((org-agenda-overriding-header "Cancelled Projects") - (org-agenda-files org-agenda-files))))) - - ("1" "Events" agenda "display deadlines and exclude scheduled" ( - (org-agenda-span 'month) - (org-agenda-time-grid nil) - (org-agenda-show-all-dates nil) - (org-agenda-entry-types '(:deadline)) ;; this entry excludes :scheduled - (org-deadline-warning-days 0) )))) - - ;; TODO Setup template for school - - (setq org-capture-templates - `(("t" "Tasks / Projects") - ("tt" "Task" entry (file+olp "~/org/tasks.org" "captured") - "* TODO %?\n %U\n %a\n %i" :empty-lines 1) - - ("j" "Journal Entries") - ("jj" "Journal" entry - (file+olp+datetree "~/org/journal.org") - "\n* %<%I:%M %p> - Journal :journal:\n\n%?\n\n" - ;; ,(dw/read-file-as-string "~/Notes/Templates/Daily.org") - :clock-in :clock-resume - :empty-lines 1)))) -#+end_src -** Org Mode Beautifers -*** Olivetti -#+begin_src emacs-lisp - (use-package olivetti - :hook ((org-mode . (lambda () (interactive) (olivetti-mode) (olivetti-set-width 100))) - (org-agenda-mode . (lambda () (interactive) (olivetti-mode) (olivetti-set-width 100))))) -#+end_src -*** Org-Modern -*** Org-super-agenda -#+begin_src emacs-lisp - (use-package org-super-agenda - :hook ((org-agenda-mode . org-super-agenda-mode)) - :config - (setq org-super-agenda-groups - '((:auto-group t)))) -#+end_src -*** Org Pomodoro -#+begin_src emacs-lisp - (use-package org-pomodoro) -#+end_src -** Org-Roam -#+begin_src emacs-lisp - (use-package org-roam - :custom - (org-roam-directory "~/org/notes") - :bind (("C-c n l" . org-roam-buffer-toggle) - ("C-c n f" . org-roam-node-find) - ("C-c n i" . org-roam-node-insert)) - :config - (org-roam-setup)) -#+end_src -** Org-Wild-Notifier -#+begin_src emacs-lisp - (use-package org-wild-notifier - :config - (org-wild-notifier-mode)) -#+end_src -** Alert.el -#+begin_src emacs-lisp - ;; quick and dirty fix for windows alert.el - (when (eq system-type 'windows-nt) - (use-package alert - :commands (alert) - :config (setq alert-default-style 'toast)) - - (use-package alert-toast - :after alert)) -#+end_src -** Treemacs -#+begin_src emacs-lisp - (use-package treemacs - :defer t - :init - (with-eval-after-load 'winum - (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) - :config - (progn - (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) - treemacs-deferred-git-apply-delay 0.5 - treemacs-directory-name-transformer #'identity - treemacs-display-in-side-window t - treemacs-eldoc-display 'simple - treemacs-file-event-delay 2000 - treemacs-file-extension-regex treemacs-last-period-regex-value - treemacs-file-follow-delay 0.2 - treemacs-file-name-transformer #'identity - treemacs-follow-after-init t - treemacs-expand-after-init t - treemacs-find-workspace-method 'find-for-file-or-pick-first - treemacs-git-command-pipe "" - treemacs-goto-tag-strategy 'refetch-index - treemacs-header-scroll-indicators '(nil . "^^^^^^") - treemacs-hide-dot-git-directory t - treemacs-indentation 2 - treemacs-indentation-string " " - treemacs-is-never-other-window nil - treemacs-max-git-entries 5000 - treemacs-missing-project-action 'ask - treemacs-move-forward-on-expand nil - treemacs-no-png-images nil - treemacs-no-delete-other-windows t - treemacs-project-follow-cleanup nil - treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) - treemacs-position 'left - treemacs-read-string-input 'from-child-frame - treemacs-recenter-distance 0.1 - treemacs-recenter-after-file-follow nil - treemacs-recenter-after-tag-follow nil - treemacs-recenter-after-project-jump 'always - treemacs-recenter-after-project-expand 'on-distance - treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") - treemacs-project-follow-into-home nil - treemacs-show-cursor nil - treemacs-show-hidden-files t - treemacs-silent-filewatch nil - treemacs-silent-refresh nil - treemacs-sorting 'alphabetic-asc - treemacs-select-when-already-in-treemacs 'move-back - treemacs-space-between-root-nodes t - treemacs-tag-follow-cleanup t - treemacs-tag-follow-delay 1.5 - treemacs-text-scale nil - treemacs-user-mode-line-format nil - treemacs-user-header-line-format nil - treemacs-wide-toggle-width 70 - treemacs-width 35 - treemacs-width-increment 1 - treemacs-width-is-initially-locked t - treemacs-workspace-switch-cleanup nil) - - ;; The default width and height of the icons is 22 pixels. If you are - ;; using a Hi-DPI display, uncomment this to double the icon size. - ;;(treemacs-resize-icons 44) - - (treemacs-follow-mode t) - (treemacs-tag-follow-mode t) - (treemacs-project-follow-mode t) - (treemacs-filewatch-mode t) - (treemacs-fringe-indicator-mode 'always) - (when treemacs-python-executable - (treemacs-git-commit-diff-mode t)) - - (pcase (cons (not (null (executable-find "git"))) - (not (null treemacs-python-executable))) - (`(t . t) - (treemacs-git-mode 'deferred)) - (`(t . _) - (treemacs-git-mode 'simple))) - - (treemacs-hide-gitignored-files-mode nil)) - :bind - (:map global-map - ("M-0" . treemacs-select-window) - ("C-x t 1" . treemacs-delete-other-windows) - ("C-x t d" . treemacs-select-directory) - ("C-x t B" . treemacs-bookmark) - ("C-x t C-t" . treemacs-find-file) - ("C-x t M-t" . treemacs-find-tag))) - - (use-package treemacs-evil - :after (treemacs evil)) - - (use-package treemacs-projectile - :after (treemacs projectile)) - - (use-package treemacs-magit - :after (treemacs magit)) - - (use-package treemacs-nerd-icons - :config - (treemacs-load-theme "nerd-icons")) - -#+end_src -** Dev Packages -*** Magit (git in emacs) -#+begin_src emacs-lisp - (use-package magit - :custom - (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1) - ) - (use-package magit-todos - :after magit - :config (magit-todos-mode 1)) -#+end_src -*** Forge for Magit (Adds github, gitlab, etc PRs and Issues to magit) -make sure to setup authinfo -#+begin_src emacs-lisp -(use-package forge - :after magit) -(setq auth-sources '("~/.authinfo")) -#+end_src - -*** Direnv -#+begin_src emacs-lisp - (when (eq system-type 'gnu/linux) - (use-package direnv - :config - (direnv-mode)) - ) -#+end_src -*** Lsp-mode -**** Language Servers -#+begin_src emacs-lisp - (defun sakomacs/lsp-mode-setup () - (setq lsp-headerline-breadcrumb-segments '(path-up-to-project file symbols)) - (lsp-headerline-breadcrumb-mode)) - - (use-package lsp-mode - :commands (lsp lsp-deferred) - :hook (lsp-mode . sakomacs/lsp-mode-setup) - :init - (setq lsp-keymap-prefix "C-c l") - :config - (lsp-enable-which-key-integration t) - (setq lsp-keep-workspace-alive nil)) -#+end_src -**** Lsp-ui -#+begin_src emacs-lisp - (use-package lsp-ui - :hook (lsp-mode . lsp-ui-mode) - :custom - (lsp-ui-doc-position 'bottom)) -#+end_src -**** Treemacs Lsp -#+begin_src emacs-lisp - (use-package lsp-treemacs - :after lsp) -#+end_src -**** lsp-ivy -#+begin_src emacs-lisp - (use-package lsp-ivy - ) -#+end_src -**** Languages -***** HTML/CSS -#+begin_src emacs-lisp - (use-package web-mode - :hook (web-mode . lsp) - :mode ("\\.html\\'" - "\\.css\\'")) -#+end_src -***** Javascript -#+begin_src emacs-lisp - (use-package js2-mode - :mode ("\\.js\\'" - "\\.jsx\\'") - :hook (js2-mode . lsp) - :config - (setq web-mode-markup-indent-offset 2) ; HTML - (setq web-mode-css-indent-offset 2) ; CSS - (setq web-mode-code-indent-offset 2) ; JS/JSX/TS/TSX - (setq web-mode-content-types-alist '(("jsx" . "\\.js[x]?\\'")))) -#+end_src -***** Typescript -#+begin_src emacs-lisp - (use-package typescript-mode - :mode ("\\.ts\\'" - "\\.tsx\\'") - :hook (typescript-mode . lsp)) -#+end_src -***** Astro -#+begin_src emacs-lisp - (define-derived-mode astro-mode web-mode "astro") - (setq auto-mode-alist - (append '((".*\\.astro\\'" . astro-mode)) - auto-mode-alist)) - - (add-to-list 'lsp-language-id-configuration - '(astro-mode . "astro")) - - (defun astro-get-tsserver () - "" - (f-join (lsp-workspace-root) "node_modules/typescript/lib/tsserverlibrary.js")) - - (lsp-register-client - (make-lsp-client :new-connection (lsp-stdio-connection '("astro-ls" "--stdio")) - :activation-fn (lsp-activate-on "astro") - :initialization-options (lambda () - `(:typescript (:serverPath ,(astro-get-tsserver)))) - :server-id 'astro-ls)) - -#+end_src -***** C/C++ -#+begin_src emacs-lisp - (add-hook 'c-mode-hook 'lsp) - (add-hook 'c++-mode-hook 'lsp) - (add-hook 'c-mode-hook 'format-all-mode) - (add-hook 'c++-mode-hook 'format-all-mode) - -#+end_src -***** CMake -#+begin_src emacs-lisp - (use-package cmake-mode - :mode "CMakeLists.txt" - :hook (cmake-mode . lsp)) -#+end_src -***** Lua -#+begin_src emacs-lisp - (use-package lua-mode - :mode "\\.lua\\'" - :hook (lua-mode . lsp)) -#+end_src -***** Python -#+begin_src emacs-lisp - (use-package python-mode - :mode "\\.py\\'" - :hook (python-mode . lsp)) - - (use-package elpy - :after python-mode - - :custom - (elpy-rpc-python-command "python3") - - :config - (elpy-enable)) - - (use-package lsp-pyright - :hook (python-mode . (lambda () - (require 'lsp-pyright) - (lsp)))) ; or lsp-deferred - - (use-package poetry - :config - (poetry-tracking-mode 1)) -#+end_src -***** Haskell -#+begin_src emacs-lisp - (use-package haskell-mode - :mode "\\.hs\\'" - :hook (python-mode . lsp)) -#+end_src -***** Yaml editing -#+begin_src emacs-lisp - (use-package yaml-mode - :mode ("\\.yaml\\'" - "\\.yml\\'")) -#+end_src -***** Nix -#+begin_src emacs-lisp - (use-package nix-mode - :hook ((nix-mode . lsp) - (nix-mode . format-all-mode) - (nix-mode . (lambda () (setq-local format-all-formatters '(("Nix" alejandra)))))) - :mode "\\.nix\\'") -#+end_src -***** Dart -#+begin_src emacs-lisp - (use-package lsp-dart) - (use-package dart-mode - :hook (dart-mode . lsp) - :mode "\\.dart\\'" ) -#+end_src -***** Markdown -#+begin_src emacs-lisp - (use-package markdown-mode - :hook (markdown-mode . visual-line-mode)) - - (use-package markdown-preview-mode) -#+end_src -***** GDScript -#+begin_src emacs-lisp - (use-package gdscript-mode - :hook (gdscript-mode . lsp) - :mode "\\.gd\\'") -#+end_src -***** Rust -#+begin_src emacs-lisp - (use-package rust-mode - :hook (rust-mode . lsp) - :mode "\\.rs\\'") -#+end_src -*** Commenter -#+begin_src emacs-lisp - (use-package evil-nerd-commenter - :bind ("M-/" . evilnc-comment-or-uncomment-lines)) -#+end_src -*** Company Mode (Better Autocompletion) -#+begin_src emacs-lisp - (use-package company - :after lsp-mode - :hook (lsp-mode . company-mode) - :bind (:map company-active-map - ("" . company-complete-selection)) - (:map lsp-mode-map - ("" . company-indent-or-complete-common)) - :custom - (company-minimum-prefix-length 1) - (company-idle-delay 0) - (company-selection-wrap-around t) - (company-tooltip-align-annotations t)) - - (use-package company-box - :hook (company-mode . company-box-mode)) -#+end_src -*** Syntax Checking (Flycheck) -#+begin_src emacs-lisp -(use-package flycheck :config (global-flycheck-mode +1)) -#+end_src -*** Formatting -#+begin_src emacs-lisp - (use-package format-all) -#+end_src -*** Better Compile Messages -#+begin_src emacs-lisp - ;; (use-package fancy-compilation - ;; :commands (fancy-compilation-mode)) - - ;; (with-eval-after-load 'compile - ;; (fancy-compilation-mode)) -#+end_src -*** Snippets -#+begin_src emacs-lisp - (use-package yasnippet - :diminish yas-minor-mode - :hook (after-init . yas-global-mode)) - - (use-package yasnippet-snippets) - - (use-package yasnippet-capf - :init (add-to-list 'completion-at-point-functions #'yasnippet-capf)) -#+end_src -** Dired (quick file management in emacs) -Dired is a built-in file manager for Emacs that does some pretty amazing things! Here are some key bindings you should try out: -*** Key Bindings -**** Navigation - -*Emacs* / *Evil* -- =n= / =j= - next line -- =p= / =k= - previous line -- =j= / =J= - jump to file in buffer -- =RET= - select file or directory -- =^= - go to parent directory -- =S-RET= / =g O= - Open file in "other" window -- =M-RET= - Show file in other window without focusing (previewing files) -- =g o= (=dired-view-file=) - Open file but in a "preview" mode, close with =q= -- =g= / =g r= Refresh the buffer with =revert-buffer= after changing configuration (and after filesystem changes!) - -**** Marking files - -- =m= - Marks a file -- =u= - Unmarks a file -- =U= - Unmarks all files in buffer -- =* t= / =t= - Inverts marked files in buffer -- =% m= - Mark files in buffer using regular expression -- =*= - Lots of other auto-marking functions -- =k= / =K= - "Kill" marked items (refresh buffer with =g= / =g r= to get them back) -- Many operations can be done on a single file if there are no active marks! - -**** Copying and Renaming files - -- =C= - Copy marked files (or if no files are marked, the current file) -- Copying single and multiple files -- =U= - Unmark all files in buffer -- =R= - Rename marked files, renaming multiple is a move! -- =% R= - Rename based on regular expression: =^test= , =old-\&= - -*Power command*: =C-x C-q= (=dired-toggle-read-only=) - Makes all file names in the buffer editable directly to rename them! Press =Z Z= to confirm renaming or =Z Q= to abort. - -**** Deleting files - -- =D= - Delete marked file -- =d= - Mark file for deletion -- =x= - Execute deletion for marks -- =delete-by-moving-to-trash= - Move to trash instead of deleting permanently - -**** Creating and extracting archives - -- =Z= - Compress or uncompress a file or folder to (=.tar.gz=) -- =c= - Compress selection to a specific file -- =dired-compress-files-alist= - Bind compression commands to file extension - -**** Other common operations - -- =T= - Touch (change timestamp) -- =M= - Change file mode -- =O= - Change file owner -- =G= - Change file group -- =S= - Create a symbolic link to this file -- =L= - Load an Emacs Lisp file into Emacs -*** Configuration -#+begin_src emacs-lisp - ;; (use-package dired - ;; :commands (dired dired-jump) - ;; :bind (("C-x C-j" . dired-jump)) - ;; :custom ((dired-listing-switches "-agho --group-directories-first")) - ;; :config - ;; (evil-collection-define-key 'normal 'dired-mode-map - ;; "h" 'dired-single-up-directory - ;; "l" 'dired-single-buffer)) - - (global-set-key (kbd "C-x C-j") 'dired-jump) - (setq dired-listing-switches "-agho --group-directories-first") - (evil-collection-define-key 'normal 'dired-mode-map - "h" 'dired-single-up-directory - "l" 'dired-single-buffer) - - ;; (use-package dired-open - ;; :config - ;; (setq dired-open-extensions '(("png" . "feh") - ;; ("mkv" . "mpv")))) - - ;; (use-package dired-hide-dotfiles - ;; :hook (dired-mode . dired-hide-dotfiles-mode) - ;; :config - ;; (evil-collection-define-key 'normal 'dired-mode-map - ;; "H" 'dired-hide-dotfiles-mode)) -#+end_src -** Folder Cleaning -#+begin_src emacs-lisp - ;; NOTE: If you want to move everything out of the ~/.emacs.d folder - ;; reliably, set `user-emacs-directory` before loading no-littering! - ;(setq user-emacs-directory "~/.cache/emacs") - - (use-package no-littering - ) - - ;; no-littering doesn't set this by default so we must place - ;; auto save files in the same path as it uses for sessions - (setq auto-save-file-name-transforms - `((".*" ,(no-littering-expand-var-file-name "auto-save/") t))) -#+end_src -** RSS Reader -#+begin_src emacs-lisp - (use-package elfeed - :config - (setq elfeed-use-curl nil) - (setq browse-url-browser-function 'eww-browse-url) - (setq elfeed-search-title-max-width 100) - ) - - (use-package elfeed-protocol - :after elfeed - :config - (elfeed-set-timeout 36000) - (setq elfeed-curl-extra-arguments '("--insecure")) ;necessary for https without a trust certificate - - ;; workaround for smth - (setq elfeed-protocol-fever-update-unread-only t) - - ;; setup feeds - (setq elfeed-protocol-feeds '(("fever+https://sako@rss.sako.box" - :api-url "https://rss.sako.box/fever/" - :use-authinfo t))) - - ;; enable elfeed-protocol - (setq elfeed-protocol-enabled-protocols '(fever)) - (elfeed-protocol-enable) - ) - - (let* ((proto-id "fever+https://sako@rss.sako.box") - (last-id (elfeed-protocol-fever-get-update-mark proto-id 'update))) - (elfeed-protocol-fever-set-update-mark proto-id 'update (- last-id 1000))) - - (run-at-time 300 300 - (lambda () (when (= elfeed-curl-queue-active 0) - (elfeed-update)))) - - (add-hook 'emacs-startup-hook (elfeed-update)) - - #+end_src -** Telegram -only god knows why im doing this -#+begin_src emacs-lisp - ;; codeberg thingy - ;; breaks on nixos - ;; (use-package visual-fill-column) - ;; (use-package telega) -#+end_src -** pdf-tools -Emacs can be everything? Why not turn it into a pdf reader -#+begin_src emacs-lisp - (use-package pdf-tools - :mode ("\\.pdf\\'" . pdf-view-mode) - :config - (setq-default pdf-view-display-size 'fit-page) - :init - (pdf-tools-install)) -#+end_src -** Matrix Client -okay this one is a bit more understandable -#+begin_src emacs-lisp - (use-package ement - :config - (when (eq system-type 'windows-nt) - (setq plz-curl-default-args - '("--silent" - "--location")) - ) - (setq ement-room-images t) - ) - - (defvar ement-pantalaimon-not-running t - "Variable to see if Pantalaimon Proxy is running.") - - (defun ement-connect-encrypted () - "Connect to Matrix with E2E enabled." - (interactive) - (if ement-pantalaimon-not-running - (when (eq system-type 'windows-nt) - (call-process-shell-command "wsl pantalaimon" nil 0)) - (setq pantalaimon-not-running nil)) - (ement-connect :uri-prefix "http://localhost:8009")) - - (defun sakomacs/ement-pantalaimon-disconnect-hook () - "Kill pantalaimon on disconnect" - (when (eq system-type 'windows-nt) - ;; TODO FIND BETTER WAY - (call-process-shell-command "wsl --shutdown" nil 0) - (setq pantalaimon-not-running t))) - (add-hook 'ement-disconnect-hook 'sakomacs/ement-pantalaimon-disconnect-hook) -#+end_src -** Discord RPC -#+begin_src emacs-lisp - (use-package elcord - :init - (setq elcord-display-buffer-details nil) - (setq elcord-use-major-mode-as-main-icon t) - ) -#+end_src -** Email -This ONLY works on Linux and Darwin -Not windows -#+begin_src emacs-lisp - - (when (eq system-type 'gnu/linux) - (use-package mu4e) - ) - -#+end_src -** Docker -Aint no way bro -#+begin_src emacs-lisp -(use-package docker - :bind ("C-c d" . docker)) -#+end_src -** EXWM -RELEASE ME -#+begin_src emacs-lisp - (when (eq system-type 'gnu/linux) - (display-battery-mode) - (use-package exwm - :config - - (defun sakomacs/exwm-init-hook () - ;; background - (call-process-shell-command "feh --bg-fill ~/background.png" nil 0) - (set-frame-parameter (selected-frame)'alpha '(90 . 90)) - (call-process-shell-command "~/.config/polybar/startpolybar" nil 0) - ;; (call-process-shell-command "~/.config/picom/startpicom" nil 0) - ;; startup - (call-process-shell-command "nm-applet" nil 0) - (call-process-shell-command "blueman-applet" nil 0) - (call-process-shell-command "nextcloud" nil 0) - (call-process-shell-command "bitwarden" nil 0) - (call-process-shell-command "flameshot" nil 0) - ) - - ;; background - ;; todo turn this info a function - (add-hook 'exwm-init-hook 'sakomacs/exwm-init-hook) - ;; startup - ;; workspaces - (setq exwm-workspace-number 5) - - - (require 'exwm-systemtray) - (exwm-systemtray-enable) - - ;; polybar - (defvar sakomacs/polybar-process nil - "Holds the process of the running Polybar instance, if any") - - (server-start) - - (defun sakomacs/kill-panel () - (interactive) - (when sakomacs/polybar-process - (ignore-errors - (kill-process sakomacs/polybar-process))) - (setq sakomacs/polybar-process nil)) - - (defun sakomacs/start-panel () - (interactive) - (sakomacs/kill-panel) - (setq sakomacs/polybar-process (start-process-shell-command "polybar" nil "polybar panel"))) - - (defun sakomacs/send-polybar-hook (module-name hook-index) - (start-process-shell-command "polybar-msg" nil (format "polybar-msg hook %s %s" module-name hook-index))) - - (defun sakomacs/send-polybar-exwm-workspace () - (sakomacs/send-polybar-hook "exwm-workspace" 1)) - - ;; Update panel indicator when workspace changes - (add-hook 'exwm-workspace-switch-hook #'sakomacs/send-polybar-exwm-workspace) - - ;; always use these keys in emacs - (setq exwm-input-prefix-keys - '(?\C-x - ?\C-u - ?\C-h - ?\M-x - ?\M-` - ?\M-& - ?\M-: - ?\C-\M-j ;; Buffer list - ?\C-\ )) ;; Ctrl+Space - - ;; Ctrl+Q will enable the next key to be sent directly - (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) - ;; app launcher and fullscreen - (exwm-input-set-key (kbd "s-SPC") 'counsel-linux-app) - (exwm-input-set-key (kbd "s-f") 'exwm-layout-toggle-fullscreen) - ;; Set up global key bindings. These always work, no matter the input state! - ;; Keep in mind that changing this list after EXWM initializes has no effect. - (setq exwm-input-global-keys - `( - ;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard) - ([?\s-r] . exwm-reset) - - ;; Move between windows - ([s-left] . windmove-left) - ([s-right] . windmove-right) - ([s-up] . windmove-up) - ([s-down] . windmove-down) - - ;; Launch applications via shell command - ([?\s-&] . (lambda (command) - (interactive (list (read-shell-command "$ "))) - (start-process-shell-command command nil command))) - - ;; Switch workspace - ([?\s-w] . exwm-workspace-switch) - - ;; 's-N': Switch to certain workspace with Super (Win) plus a number key (0 - 9) - ,@(mapcar (lambda (i) - `(,(kbd (format "s-%d" i)) . - (lambda () - (interactive) - (exwm-workspace-switch-create ,i)))) - (number-sequence 0 9)))) - ) - - (use-package desktop-environment - :after exwm - :config (desktop-environment-mode) - :custom - (desktop-environment-brightness-small-increment "2%+") - (desktop-environment-brightness-small-decrement "2%-") - (desktop-environment-brightness-normal-increment "5%+") - (desktop-environment-brightness-normal-decrement "5%-")) - - ) -#+end_src -** ERC -#+begin_src emacs-lisp - (setq erc-nick "sahko" - erc-user-full-name "sako" - ;; erc-autojoin-channels-alist '(("irc-libera.chat" "#systemcrafters" "#emacs")) - erc-kill-buffer-on-part 8) -#+end_src -** fancy-compilation -#+begin_src emacs-lisp - ;; to get past codeberg blocks in my country - (use-package (fancy-compilation :type git :host github :repo "emacsmirror/fancy-compilation") - :commands (fancy-compilation-mode)) - - (with-eval-after-load 'compile - (fancy-compilation-mode)) -#+end_src -** End -#+begin_src emacs-lisp -(message "finishing up") -#+end_src -* Org Mode Configuration Setup -** Babel Languages -#+begin_src emacs-lisp - (org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) - (python . t))) -#+end_src - -* Terminals -** EShell -god dammit why are they making my shells in emacs lisp -#+begin_src emacs-lisp - (defun sakomacs/configure-eshell () - ;; Save command history when commands are entered - (add-hook 'eshell-pre-command-hook 'eshell-save-some-history) - - ;; Truncate buffer for performance - (add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer) - - ;; Bind some useful keys for evil-mode - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "C-r") 'counsel-esh-history) - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "") 'eshell-bol) - (evil-normalize-keymaps) - - (setq eshell-history-size 10000 - eshell-buffer-maximum-lines 10000 - eshell-hist-ignoredups t - eshell-scroll-to-bottom-on-input t)) - - (use-package eshell-git-prompt) - - - (add-hook 'eshell-first-time-mode 'sakomacs/configure-eshell) - - (with-eval-after-load 'esh-opt - (setq eshell-destroy-buffer-when-process-dies t) - (setq eshell-visual-commands '("htop" "zsh" "vim")) - - (eshell-git-prompt-use-theme 'powerline)) -#+end_src -** VTerm -#+begin_src emacs-lisp - (use-package vterm - :commands vterm - :config - (setq vterm-max-scrollback 10000)) -#+end_src -* End -** notify that it has loaded -#+begin_src emacs-lisp - (require 'notifications) - - (if (eq system-type 'windows-nt) - (w32-notification-notify - :title "Emacs Daemon" - :body "The Emacs Daemon has started")) - - (if (eq system-type 'gnu/linux) - (notifications-notify - :title "Emacs Daemon" - :body "The Emacs Daemon has started")) - - - (message "Emacs is ready") - -#+end_src