diff options
Diffstat (limited to '.emacs.d')
-rw-r--r-- | .emacs.d/modules/thanos-aesthetics.el | 191 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-ai.el | 50 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-books.el | 57 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-chat.el | 55 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-dired.el | 93 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-elfeed.el | 100 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-multimedia.el | 120 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-org.el | 247 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-packages.el | 92 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-shells.el | 176 | ||||
-rw-r--r-- | .emacs.d/modules/thanos-tools.el | 176 |
11 files changed, 0 insertions, 1357 deletions
diff --git a/.emacs.d/modules/thanos-aesthetics.el b/.emacs.d/modules/thanos-aesthetics.el deleted file mode 100644 index f5eb30f..0000000 --- a/.emacs.d/modules/thanos-aesthetics.el +++ /dev/null @@ -1,191 +0,0 @@ -;;; thanos-aesthetics.el --- -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -(require 'nerd-icons) - -(setf inhibit-startup-message t) -(setf initial-scratch-message nil) - -;; Transparency -(add-to-list 'default-frame-alist '(alpha-background . 90)) -(add-to-list 'default-frame-alist '(alpha 90 90)) - -(when (equal is-phone nil) - (scroll-bar-mode -1) - (set-fringe-mode 10)) - -(tool-bar-mode -1) -(tooltip-mode -1) -(menu-bar-mode -1) -(global-hl-line-mode) - -(require 'which-key) -(which-key-mode 1) - -(blink-cursor-mode -1) -(menu-bar--visual-line-mode-enable) -(global-visual-line-mode 1) - -;; Set emojis for emacs 29 -(require 'emojify) -(global-emojify-mode) -(global-emojify-mode-line-mode) - -(setf visible-bell t) - -(column-number-mode) -(global-display-line-numbers-mode 1) -(menu-bar--display-line-numbers-mode-relative) - -;;Disable line numbers for some modes -(defvar thanos/no-line-number-modes - '(pdf-view-mode-hook - org-mode-hook - term-mode-hook - shell-mode-hook - eshell-mode-hook - vterm-mode-hook - elfeed - vterm-mode - telega-chat-mode-hook - telega-root-mode-hook - nov-mode-hook - transmission-mode-hook)) - -(cl-loop for mode in thanos/no-line-number-modes - do (add-hook mode (lambda () (display-line-numbers-mode 0)))) - -;; Set font-size for each device -(custom-set-faces - (if is-hermes '(default ((t (:inherit nil :height 120 :family "Jetbrains Mono")))) - '(default ((t (:inherit nil :height 130 :family "Jetbrains Mono")))))) - -(require 'modus-themes) -;; Modus-themes configuration -(setq modus-themes-italic-constructs t - modus-themes-bold-constructs nil - modus-themes-mixed-fonts nil - modus-themes-variable-pitch-ui nil - modus-themes-custom-auto-reload t - modus-themes-disable-other-themes t - modus-themes-prompts '(italic bold) - modus-themes-completions '((matches . (extrabold)) - (selection . (semibold italic text-also underline))) - modus-themes-org-blocks 'tinted-background) - -(setq modus-themes-common-palette-overrides - '((fg-line-number-inactive "gray40") - (fg-line-number-active cyan-intense) - ;; bg values: - ;; molokai: #1c1e1f - ;; 1337: #191919 - ;; gruvbox: #282828 - ;; henna: #21272e - ;; monokai: #272822 - ;; badger: #171717 - ;; ayu-dark: #0d1017 - (bg-main "#171717") - ;; (overline-heading-1 gold) - (fg-heading-1 red-warmer) - ;; (bg-heading-1 bg-blue-nuanced) - (bg-line-number-inactive unspecified) - (bg-line-number-active unspecified) - (bg-paren-match bg-magenta-intense) - (underline-paren-match fg-main) - (underline-err red-intense) - (underline-warning yellow-faint) - (underline-note cyan-faint) - (string green) - (border-mode-line-active bg-mode-line-active) - (border-mode-line-inactive bg-mode-line-inactive) - (bg-mode-line-active bg-lavender) - ;; set fg from badger theme - (fg-mode-line-active "#F6F3E8") - (border-mode-line-active blue-intense) - (bg-hl-line bg-dim) - (cursor slate) - ,@modus-themes-preset-overrides-intense)) - -(setq modus-themes-headings - '((1 . (ultrabold 1.35)) - (2 . (semibold 1.2)) - (agenda-date . (1.3)) - (agenda-structure . (variable-pitch light 1.8)) - (t . (1.15)))) - -(defun theme-invisible-dividers (_theme) - "Make window dividers for THEME invisible." - (let ((bg (face-background 'default))) - (custom-set-faces - `(fringe ((t :background ,bg :foreground ,bg))) - `(window-divider ((t :background ,bg :foreground ,bg))) - `(window-divider-first-pixel ((t :background ,bg :foreground ,bg))) - `(window-divider-last-pixel ((t :background ,bg :foreground ,bg)))))) - -(add-hook 'enable-theme-functions #'theme-invisible-dividers) - - -(load-theme 'modus-vivendi) - -;; Don't display battery-mode on desktop -(if is-zeus - (display-battery-mode 0) - (display-battery-mode 1)) - -;; UI -- Vertico, consult, marginalia -(require 'vertico) -(require 'marginalia) - -(vertico-mode) -(savehist-mode) -(define-key global-map (kbd "C-x b") 'consult-buffer) -(define-key global-map (kbd "C-c m") 'consult-imenu) - -(add-hook 'marginalia-mode-hook #'nerd-icons-completion-marginalia-setup) -(marginalia-mode) - -;; Helpful -(require 'helpful) -(define-key global-map (kbd "C-h f") #'helpful-callable) -(define-key global-map (kbd "C-h v") #'helpful-variable) -(define-key global-map (kbd "C-h k") #'helpful-key) -(define-key global-map (kbd "C-h x") #'helpful-command) - -(define-key global-map (kbd "C-c C-d") #'helpful-at-point) -(define-key global-map (kbd "C-h F") #'helpful-function) - -;; ibuffer -(global-set-key (kbd "C-x C-b") 'ibuffer) -(add-hook 'ibuffer-mode-hook 'nerd-icons-ibuffer-mode) - - -(provide 'thanos-aesthetics) -;;; thanos-aesthetics.el ends here diff --git a/.emacs.d/modules/thanos-ai.el b/.emacs.d/modules/thanos-ai.el deleted file mode 100644 index 3b5d1f1..0000000 --- a/.emacs.d/modules/thanos-ai.el +++ /dev/null @@ -1,50 +0,0 @@ -;;; thanos-ai.el --- Thanos Modue -- AI Tools configuration -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: extensions - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -;; Copilot -(require 'copilot) - -(define-key copilot-mode-map (kbd "M-TAB") 'copilot-accept-completion-by-line) -(define-key copilot-mode-map (kbd "C-M-n") 'copilot-next-completion) -(define-key copilot-mode-map (kbd "C-M-p") 'copilot-previous-completion) - -;; ChatGPT -(require 'gptel) -(require 'password-store) - -(setf gptel-api-key (password-store-get "chatgpt/api") - gptel-model "gpt-4") - -(define-key gptel-mode-map (kbd "C-c h") #'gptel-menu) - - -(provide 'thanos-ai) -;;; thanos-ai.el ends here diff --git a/.emacs.d/modules/thanos-books.el b/.emacs.d/modules/thanos-books.el deleted file mode 100644 index 7c6b414..0000000 --- a/.emacs.d/modules/thanos-books.el +++ /dev/null @@ -1,57 +0,0 @@ -;;; thanos-books.el --- -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - - -(require 'pdf-tools) -(require 'nov) - -(pdf-tools-install) -;;Add pdf-isearch-minor-mode hook, otherwise isearch will be buggy -;;Darkmode hook, cause I don't want color or light in my life, I'm a vampire. -(add-hook 'pdf-view-mode-hook 'pdf-isearch-minor-mode) -(add-hook 'pdf-view-mode-hook 'pdf-view-midnight-minor-mode) -(add-to-list 'auto-mode-alist '("\\.pdf\\'" . 'pdf-view-mode)) - -(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)) - -;; (defun thanos/nov-font-setup () -;; "Setup for nov." -;; (let ((font-size (if is-hermes 99 120))) -;; (face-remap-add-relative 'variable-pitch -;; :family "Jetbrains Mono" -;; :height font-size) -;; (beacon-mode -1))) - -;; (add-hook 'nov-mode-hook 'thanos/nov-font-setup) - - -(provide 'thanos-books) -;;; thanos-books.el ends here diff --git a/.emacs.d/modules/thanos-chat.el b/.emacs.d/modules/thanos-chat.el deleted file mode 100644 index 1e7d14d..0000000 --- a/.emacs.d/modules/thanos-chat.el +++ /dev/null @@ -1,55 +0,0 @@ -;;; thanos-chat.el --- -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -;; ERC -(require 'erc) - -(setf erc-modules - '(sasl netsplit fill button match track completion readonly - networks ring autojoin noncommands irccontrols move-to-prompt stamp - menu list)) - -(defun erc-libera () - "Login to liberachat with erc." - (interactive) - (erc-tls :server "irc.libera.chat" :port 6697 - :nick "thanosapollo" - :user "thanosapollo" - :password (password-store-get "liberachat/thanos_apollo"))) - - -;; Telega -(require 'telega) -(add-hook 'telega-root-mode-hook 'emojify-mode) -(add-hook 'telega-chat-mode-hook 'emojify-mode) - -(provide 'thanos-chat) -;;; thanos-chat.el ends here diff --git a/.emacs.d/modules/thanos-dired.el b/.emacs.d/modules/thanos-dired.el deleted file mode 100644 index c6c7382..0000000 --- a/.emacs.d/modules/thanos-dired.el +++ /dev/null @@ -1,93 +0,0 @@ -;;; thanos-dired.el --- Dired configuration -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -(require 'dired) -(require 'nerd-icons-dired) - -(setf dired-listing-switches "-lha") - -(defun dired-watch-video () - "Watch play file with mpv." - (interactive) - (call-process-shell-command - (format "mpv \"%s\"" (dired-get-filename)) nil 0)) - -(defun dired-set-wallpaper () - "Set NAME as wallpaper using feh." - (interactive) - (call-process-shell-command - (format "feh --bg-scale %s" (dired-get-filename)) nil 0)) - -(defun dired-delete-files-except () - "Delete all files inside directory except match." - (interactive) - (let* ((directory (read-directory-name "Select directory: ")) - (files (directory-files directory t)) - (except-match (read-string "Except the ones that have: "))) - (dolist (file files) - (unless (or (string= "." (substring file -1)) - (string= ".." (substring file -2)) - (string-match except-match file)) - (dired-delete-file file t))))) - -(defun dired-delete-file-match () - "Delete all files inside directory except match." - (interactive) - (let* ((directory (read-directory-name "Select directory: ")) - (files (directory-files directory t)) - (match (read-string "Delete files that match: "))) - (dolist (file files) - (when (string-match-p match file) - (dired-delete-file file t))))) - -(defun dired-rename-capitalize-file () - "Capitalize the base name of the file at point in a Dired buffer." - (interactive) - (let* ((file (dired-get-file-for-visit)) - (new-file (capitalize (file-name-nondirectory file)))) - (if (string-prefix-p "." file) - (message "Skipping file starting with '.'") - (progn - (rename-file file (concat (file-name-directory file) new-file)) - (revert-buffer) - (message "Renamed %s to %s" file new-file))))) - -(define-key dired-mode-map (kbd "b") 'dired-up-directory) -(define-key dired-mode-map (kbd "v") 'dired-watch-video) -(define-key dired-mode-map (kbd "z") 'wdired-change-to-wdired-mode) -(define-key dired-mode-map (kbd "C-c w") 'dired-set-wallpaper) -(define-key global-map (kbd "C-c d") 'dired-delete-files-except) - -(add-hook 'dired-mode-hook 'nerd-icons-dired-mode) -(setf nerd-icons-dired-v-adjust 0.10) - -(provide 'thanos-dired) -;;; thanos-dired.el ends here diff --git a/.emacs.d/modules/thanos-elfeed.el b/.emacs.d/modules/thanos-elfeed.el deleted file mode 100644 index 09d59e5..0000000 --- a/.emacs.d/modules/thanos-elfeed.el +++ /dev/null @@ -1,100 +0,0 @@ -;;; thanos-elfeed.el --- elfeed configuration -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: extensions - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -(require 'elfeed) -(require 'elfeed-goodies) - -(setf elfeed-search-filter "@1-week-ago +unread") - -(setf elfeed-feeds - '(("https://hackaday.com/blog/feed/" - hackaday linux) - ("https://protesilaos.com/news.xml" - protesilaos) - ("https://protesilaos.com/codelog.xml" - proetesilaos) - ("https://guix.gnu.org/feeds/blog.atom" - gnu guix) - ("https://thanosapollo.com/posts/index.xml" - thanos) - ("http://nullprogram.com/feed/" - emacs linux) - ("https://drewdevault.com/blog/index.xml" - sourcehut drewdevault) - ("https://archlinux.org/feeds/news/" - ArchLinux Latest) - ("http://wikileaks.org/feed" - wikileaks) - ("https://hackernoon.com/feed" - hackernoon) - ("https://sachachua.com/blog/feed/" - sacha emacs) - ("https://bits.debian.org/feeds/feed.rss" - debian linux) - ("https://torrentfreak.com/feed" - torrentfreak piracy) - ("https://wp.medscape.com/cx/rssfeeds/2700.xml" - med medscape) - ("https://www.science.org/action/showFeed?type=etoc&feed=rss&jc=sciimmunol" - science) - ("https://www.who.int/rss-feeds/news-english.xml" - who medicine) - ("https://annas-blog.org/rss.xml" - anna piracy) - ("https://www.addtoany.com/add_to/feed?linkurl=http%3A%2F%2Fwww.thelancet.com%2Frssfeed%2Flancet_online.xml&type=feed&linkname=The%20Lancet%20Online%20First&linknote=" - lancet medicine) - ("https://www.addtoany.com/add_to/feed?linkurl=http%3A%2F%2Fwww.thelancet.com%2Frssfeed%2Flanhae_online.xml&type=feed&linkname=The%20Lancet%20Haematology%20Online%20First&linknote=" - lancet haematology medicine) - ("https://totsipaki.net/ikiwiki/nparafe/%CE%9C%CF%80%CE%BB%CE%BF%CE%B3%CE%BA/index.rss" - nikos fsf))) - -(defun elfeed-mpv (&optional use-generic-p) - "Play video link with mpv." - (interactive "P") - (let ((entries (elfeed-search-selected))) - (cl-loop for entry in entries - do (elfeed-untag entry 'unread) - when (elfeed-entry-link entry) - do (start-process-shell-command "elfeed-video" nil (format "mpv \"%s\"" it))) - (mapc #'elfeed-search-update-entry entries) - (unless (use-region-p) (forward-line)))) - -(setf elfeed-goodies/entry-pane-size 0.55) -(elfeed-goodies/setup) - -(define-key elfeed-search-mode-map (kbd "v") 'elfeed-mpv) -(define-key elfeed-search-mode-map (kbd "U") 'elfeed-update) - -;; browser -(setf browse-url-browser-function #'browse-url-default-browser) - -(provide 'thanos-elfeed) -;;; thanos-elfeed.el ends here diff --git a/.emacs.d/modules/thanos-multimedia.el b/.emacs.d/modules/thanos-multimedia.el deleted file mode 100644 index 036b99c..0000000 --- a/.emacs.d/modules/thanos-multimedia.el +++ /dev/null @@ -1,120 +0,0 @@ -;;; thanos-multimedia.el --- -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -;; EMMS -(require 'emms) -(autoload 'emms-smart-browse "emms-browser.el" "Browse with EMMS" t) - -(with-eval-after-load 'emms - (emms-all) - (setq emms-source-file-default-directory "~/Music" - emms-info-asynchronously t - emms-show-format "♪ %s") - (emms-default-players)) - -(setf emms-player-mpv-parameters nil) - -(define-key emms-playlist-mode-map (kbd "A") #'emms-add-directory-tree) - -(defun yeetube-download-vimeo-videos () - "Download videos from vimeo services." - (interactive) - (let ((url "") - (name "") - (download-counter 1)) - (while (not (string= url "q")) - (setf url (read-string "Enter URL (q to quit): ")) - (unless (string= url "q") - (setf name (read-string (format "Custom name (download counter: %d) " download-counter))) - (setf download-counter (1+ download-counter)) - (call-process-shell-command - (format - "yt-dlp '%s' -o '%s'" - (replace-regexp-in-string "\\.json" ".m3u8" url) name) - nil 0))))) - -(defun yeetube-download-videos-ffmpeg () - "Download videos using ffmpeg." - (interactive) - (let ((url "") - (name "") - (download-counter 1) - (stored-contents nil)) - ;; Read links and names until "q" is entered - (while (not (string= url "q")) - (setf url (read-string "Enter URL (q to quit): ")) - (unless (string= url "q") - (setf name (read-string (format "Custom name (download counter: %d) " download-counter))) - (push (cons url name) stored-contents) - (setf download-counter (1+ download-counter)))) - ;; Process the collected links and names - (dolist (pair stored-contents) - (let ((url (car pair)) - (name (cdr pair))) - (async-shell-command - (format - "ffmpeg -protocol_whitelist file,crypto,data,https,tls,tcp -stats -i '%s' -codec copy '%s.mp4'" - url name)))))) - -(setf yeetube-results-limit 20 - yeetube-mpv-disable-video t) - -(defun yeetube-play-url (url) - "Open URL using yeetube-player." - (interactive "sURL:") - (let ((media-player (executable-find (symbol-name yeetube-player)))) - (unless media-player - (error (format "%s not found." media-player))) - (when (string-prefix-p "http" url) - (setf yeetube-last-played url) - (if (eq yeetube-player 'mpv) - (yeetube-start-mpv-process url) - (yeetube-start-process - (format "%s \"%s\"" media-player - (replace-regexp-in-string "\\byewtu\\.be\b" "youtube.com" url))))))) - -(defvar-keymap thanos/yeetube-map - :doc "Personal yeetube map." - "s" #'yeetube-search - "b" #'yeetube-play-saved-video - "d" #'yeetube-download-videos - "C-d" #'yeetube-download-vimeo-videos - "p" #'yeetube-mpv-toggle-pause - "v" #'yeetube-mpv-toggle-no-video-flag - "C-p" #'yeetube-mpv-toggle-video - "k" #'yeetube-remove-saved-video) - -(global-set-key (kbd "C-c y") thanos/yeetube-map) - - - -(provide 'thanos-multimedia) -;;; thanos-multimedia.el ends here diff --git a/.emacs.d/modules/thanos-org.el b/.emacs.d/modules/thanos-org.el deleted file mode 100644 index 0ad1f28..0000000 --- a/.emacs.d/modules/thanos-org.el +++ /dev/null @@ -1,247 +0,0 @@ -;;; thanos-org-config.el --- org config -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -(require 'org) -(require 'org-agenda) -;; Export backends -(require 'ox-texinfo) -(require 'ox-hugo) - -(setf org-directory "~/org/" - org-agenda-files '("~/org/agenda.org") - org-default-notes-file (expand-file-name "notes.org" org-directory) - org-ellipsis " ▼ " - org-log-done 'time - org-hide-emphasis-markers nil ;;change to t to hide emphasis markers - org-table-convert-region-max-lines 20000 - org-log-done 'time - org-todo-keywords '((sequence "TODO(t)" "SEMINAR(s)" "LECTURE(l)" "DONE(d)"))) - -(define-key org-mode-map (kbd "C-c t") 'org-time-stamp-inactive) - -(defadvice org-edit-src-code (around set-buffer-file-name activate compile) - (let ((file-name (buffer-file-name))) ;; (1) - ad-do-it ;; (2) - (setf buffer-file-name file-name))) ;; (3) - -(org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t) - (python . t))) - - - -(setf org-structure-template-alist - '(("e" . "src emacs-lisp") - ("p" . "src python") - ("l" . "src lisp") - ("b" . "src bash") - ("q" . "QUOTE"))) - -;;Auto tangle -(add-hook 'org-mode-hook 'org-auto-tangle-mode) - - -;; Org roam -(require 'org-roam) - -;; Create ~/Notes, ignore errors if it's already made -(ignore-errors - (make-directory "~/Notes")) - -(setf org-roam-directory "~/Notes" - org-roam-dailies-directory "journal/") - -(org-roam-db-autosync-enable) - -(setf org-roam-node-display-template (concat "${title:50} "(propertize "${tags:30}" 'face 'org-tag))) - -(setf org-roam-db-node-include-function - (lambda () - (not (or (member "journal" (org-get-tags)) - (member "memorize" (org-get-tags)))))) - -;; Functions -(defun org-insert-book () - "Insert org-link from ~/Library for book" - (interactive) - (let* ((book-path (read-file-name "Book: " "~/Library/"))) - (org-insert-link nil book-path (file-name-base book-path)))) - -;;; Keybindings -(define-key org-mode-map (kbd "C-c b") 'org-insert-book) - -;; Set maps -(define-prefix-command 'thanos/notes) -(global-set-key (kbd "C-c n") 'thanos/notes) -;; org-roam keys -(define-key thanos/notes (kbd "t") 'org-roam-buffer-toggle) -(define-key thanos/notes (kbd "f") 'org-roam-node-find) -(define-key thanos/notes (kbd "i") 'org-roam-node-insert) -;; Journaling -(define-prefix-command 'Journal) -(define-key thanos/notes (kbd "j") 'Journal) -(define-key Journal (kbd "d") 'Journaling/dailies) -(define-key Journal (kbd "C-c") 'org-roam-dailies-capture-today) -(define-key Journal (kbd "C-t") 'org-roam-dailies-capture-tomorrow) -(define-key Journal (kbd "C-y") 'org-roam-dailies-capture-yesterday) -(define-key Journal (kbd "c") 'org-roam-dailies-goto-today) -(define-key Journal (kbd "t") 'org-roam-dailies-goto-tomorrow) -(define-key Journal (kbd "y") 'org-roam-dailies-goto-yesterday) - -(define-key org-mode-map (kbd "C-c C-.") 'org-roam-tag-add) -(define-key org-mode-map (kbd "C-c i") 'org-id-get-create) - -;; Templates -(setf org-roam-capture-templates - '(("d" "default" plain - "%?" - :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") - :unnarrowed t) - ("l" "programming language" plain - "* Characteristics\n\n- Family: %?\n- Inspired by: \n\n* Reference:\n\n" - :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") - :unnarrowed t) - ("p" "MUS" plain "* Goals\n\n%?\n\n* Tasks\n\n** TODO Add initial tasks\n\n* Dates\n\n" - :if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n#+filetags: MUS") - :unnarrowed t))) -;; Dailies -(setf org-roam-dailies-capture-templates - '(("d" "default" entry - "* %?" - :target (file+head "%<%Y-%m-%d>.org" - "#+title: %<%Y-%m-%d>\n")) - ("j" "Daily Journaling" entry - (file "~/org/Templates/journaling.org") - :target (file+head "%<%Y-%m-%d>.org" - "#+title: %<%Y-%m-%d>\n")) - ("i" "Improve" entry - (file "~/org/Templates/improve.org") - :target (file+head "%<%Y-%m-%d>.org" - "#+title: %<%Y-%m-%d>\n")))) - -;; Org themes -(require 'org-modern) - - -(defvar org-gruvbox-theming - '((org-level-1 1.30 "#fb4934" extra-bold) - (org-level-2 1.20 "#98971a" bold) - (org-level-3 1.13 "#458588" bold) - (org-level-4 1.10 "#b16286" semi-bold) - (org-level-5 1.10 "#689d6a" normal) - (org-level-6 1.10 "#d3869b" normal) - (org-level-7 1.10 "#8ec07c" normal) - (org-level-8 1.00 "#ebdbb2" normal))) - -(defun thanos/org-theme-gruvbox () - "Enable Darkone theme for Org headers." - (interactive) - (dolist (face org-gruvbox-theming) - (set-face-attribute (nth 0 face) nil - :font "Jetbrains Mono" - :weight (nth 3 face) - :height (nth 1 face) - :foreground (nth 2 face))) - (set-face-attribute 'org-table nil - :font "Jetbrains Mono" - :weight 'semi-bold - :height 1.0 - :foreground "#fb4934")) - -(defun thanos/org-scale () - "Enable Darkone theme for Org headers." - (interactive) - (dolist (face org-gruvbox-theming) - (set-face-attribute (nth 0 face) nil - :font "Jetbrains Mono" - :weight (nth 3 face) - :height (nth 1 face))) - (set-face-attribute 'org-table nil - :font "Jetbrains Mono" - :weight 'semi-bold - :height 1.0 - :foreground "#fb4934")) - -(defun thanos/org-hook () - "Add hooks for `org-mode'." - (display-line-numbers-mode -1) - (flyspell-mode) - (org-auto-tangle-mode) - (when (not (equal (car custom-enabled-themes) 'modus-vivendi)) - (thanos/org-scale))) - -(add-hook 'org-mode-hook #'thanos/org-hook) - -(modify-all-frames-parameters - '((right-divider-width . 5) - (internal-border-width . 5))) -(dolist (face '(window-divider - window-divider-first-pixel - window-divider-last-pixel)) - (face-spec-reset-face face) - (set-face-foreground face (face-attribute 'default :background))) -(set-face-background 'fringe (face-attribute 'default :background)) - -(setf - ;; Edit settings - org-auto-align-tags nil - org-tags-column 0 - org-fold-catch-invisible-edits 'show-and-error - org-special-ctrl-a/e t - org-insert-heading-respect-content t - - ;; Org styling, hide markup etc. - org-hide-emphasis-markers t - org-pretty-entities t - - ;; Agenda styling - org-agenda-tags-column 0 - org-agenda-block-separator ?─ - org-agenda-time-grid - '((daily today require-timed) - (800 1000 1200 1400 1600 1800 2000) - " ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄") - org-agenda-current-time-string - "⭠ now ─────────────────────────────────────────────────") - -(global-org-modern-mode) - -(setf org-modern-table nil) -(setf org-modern-todo nil) - -;; Jinx -(require 'jinx) -(add-hook 'org-mode-hook #'jinx-mode) -(define-key jinx-mode-map (kbd "M-'") #'jinx-correct) - -(provide 'thanos-org) -;;; thanos-org.el ends here diff --git a/.emacs.d/modules/thanos-packages.el b/.emacs.d/modules/thanos-packages.el deleted file mode 100644 index 6363b95..0000000 --- a/.emacs.d/modules/thanos-packages.el +++ /dev/null @@ -1,92 +0,0 @@ -;;; thanos-packages.el --- -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -(require 'package) - -;; Install 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 package-enable-at-startup nil) - -(require 'straight) - -(setf straight-use-package-by-default t) - -(defvar thanos/packages '(vertico marginalia org-roam - nerd-icons-completion nerd-icons-ibuffer consult org - org-modern which-key elfeed elfeed-goodies python-mode - emms rainbow-delimiters eshell-git-prompt helpful - password-store ox-hugo json-mode magit corfu orderless - consult pdf-tools markdown-mode eat org-auto-tangle sly - eat nov eshell-syntax-highlighting emojify flycheck vterm - telega transmission gptel nerd-icons-dired sudo-edit - mu4e-alert jinx modus-themes) - "List of packages to install.") - -(setf straight-recipe-overrides - '((transmission :type git :host nil :repo "[email protected]:/var/git/transmission") - (yeetube :type git :host nil :repo "[email protected]:/var/git/yeetube"))) - -(defvar thanos/custom-packages - '((yeetube :local-repo "~/Dev/emacs-lisp/yeetube") - (gnosis :local-repo "~/Dev/emacs-lisp/gnosis") - (copilot :host github :repo "zerolfx/copilot.el" :files ("dist" "*.el"))) - "Custom package recipes.") - -;; Get packages via straight -(cl-loop for package in (if (or is-hermes is-zeus) - (append thanos/custom-packages thanos/packages) - thanos/packages) - do (straight-use-package package)) - -;; Set and load custom.el -(setf custom-file (concat user-emacs-directory "custom.el")) -(load custom-file 'noerror) - - -(provide 'thanos-packages) -;;; thanos-packages.el ends here diff --git a/.emacs.d/modules/thanos-shells.el b/.emacs.d/modules/thanos-shells.el deleted file mode 100644 index 57fd8dc..0000000 --- a/.emacs.d/modules/thanos-shells.el +++ /dev/null @@ -1,176 +0,0 @@ -;;; thanos-shell.el --- shells configuration -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: - -(setenv "EDITOR" "emacsclient -n") -(setenv "XDG_SESSION_TYPE" "x11") - -;; -(require 'pcomplete) -(require 'eshell) - -(setf eshell-visual-commands - '("vi" "vim" "screen" "tmux" "top" "htop" "less" - "more" "lynx" "links" "ncftp" "mutt" "pine" "tin" - "trn" "elm")) - -(require 'eat) -(add-hook 'eshell-mode-hook #'eat-eshell-visual-command-mode) -;; (add-hook 'eshell-mode-hook #'eat-eshell-mode) -(setf eat-term-name "xterm") - -;;;; doas completion -(defun pcomplete/doas () - "Completion rules for the `doas' command." - (let ((pcomplete-ignore-case t)) - (pcomplete-here (funcall pcomplete-command-completion-function)) - (while (pcomplete-here (pcomplete-entries))))) - -;;;; systemctl completion -(defcustom pcomplete-systemctl-commands - '("disable" "enable" "status" "start" "restart" "stop" "reenable" - "list-units" "list-unit-files") - "p-completion candidates for `systemctl' main commands" - :type '(repeat (string :tag "systemctl command")) - :group 'pcomplete) - -(defvar pcomplete-systemd-units - (split-string - (shell-command-to-string - "(systemctl list-units --all --full --no-legend;systemctl list-unit-files --full --no-legend)|while read -r a b; do echo \" $a\";done;")) - "p-completion candidates for all `systemd' units") - -(defvar pcomplete-systemd-user-units - (split-string - (shell-command-to-string - "(systemctl list-units --user --all --full --no-legend;systemctl list-unit-files --user --full --no-legend)|while read -r a b;do echo \" $a\";done;")) - "p-completion candidates for all `systemd' user units") - -(defun pcomplete/systemctl () - "Completion rules for the `systemctl' command." - (pcomplete-here (append pcomplete-systemctl-commands '("--user"))) - (cond ((pcomplete-test "--user") - (pcomplete-here pcomplete-systemctl-commands) - (pcomplete-here pcomplete-systemd-user-units)) - (t (pcomplete-here pcomplete-systemd-units)))) - -;;;; man completion -(defvar pcomplete-man-user-commands - (split-string - (shell-command-to-string - "apropos -s 1 .|while read -r a b; do echo \" $a\";done;")) - "p-completion candidates for `man' command") - -(defun pcomplete/man () - "Completion rules for the `man' command." - (pcomplete-here pcomplete-man-user-commands)) - -;; hut completion -(defcustom pcomplete-hut-commands - '("builds" "export" "git" "graphql" "lists" "help" "hg" - "init" "meta" "pages" "paste" "todo") - "p-completion candidates for `hut' main commands" - :type '(repeat (string :tag "hut command")) - :group 'pcomplete) - -(defun pcomplete/hut () - "Completion rules for `hut' command" - (pcomplete-here (append pcomplete-hut-commands))) - - -;; Setting eshell aliases -(defvar thanos/aliases - '((g . magit) - (gl . magit-log) - (gc . magit-clone) - (d . dired) - (o . find-file) - (oo . find-file-other-window) - (ll . (lambda () (eshell/ls '-lha))) - (eshell/clear . eshell/clear-scrollback))) - -(defun thanos/set-eshell-aliases (aliases) - "Set ALIASES as eshell aliases." - (mapc (lambda (alias) - (defalias (car alias) (cdr alias))) - aliases)) - -(add-hook 'eshell-mode-hook #'(lambda () (thanos/set-eshell-aliases thanos/aliases))) - -;; PATH -(defvar eshell-path-env (getenv "~/.local/bin")) - -(require 'eshell-git-prompt) - -;; customize multiline theme -(defun eshell-git-prompt-multiline () - "Eshell Git prompt inspired by spaceship-prompt." - (let (separator hr dir git git-dirty time sign command) - (setq separator (with-face " | " 'eshell-git-prompt-multiline-secondary-face)) - (setq hr (with-face (concat "\n" (make-string (/ (window-total-width) 2) ?─) "\n") 'eshell-git-prompt-multiline-secondary-face)) - (setq dir - (concat - (concat (abbreviate-file-name (eshell/pwd))))) - (setq git - (concat (with-face "⎇" 'eshell-git-prompt-exit-success-face) - (concat (eshell-git-prompt--branch-name)))) - (setq git-dirty - (when (eshell-git-prompt--branch-name) - (if (eshell-git-prompt--collect-status) - (with-face " ✎" 'eshell-git-prompt-modified-face) - (with-face " ✔" 'eshell-git-prompt-exit-success-face)))) - (setq time (with-face (format-time-string "%I:%M:%S %p") 'eshell-git-prompt-multiline-secondary-face)) - (setq sign - (if (= (user-uid) 0) - (with-face "\n#" 'eshell-git-prompt-multiline-sign-face) - (with-face "\nλ" 'eshell-git-prompt-multiline-sign-face))) - (setq command (with-face " " 'eshell-git-prompt-multiline-command-face)) - - - (eshell-git-prompt---str-read-only - (concat hr dir separator git git-dirty separator time sign command)))) - -(eshell-git-prompt-use-theme 'multiline) - -(eshell-syntax-highlighting-global-mode 1) - -(setq eshell-highlight-prompt t - eshell-term-name "emacs") - -;; Keybindings -(define-key global-map (kbd "C-c e") 'eshell) - -(require 'vterm) -(define-key global-map (kbd "C-c v") 'vterm) -(define-key vterm-mode-map (kbd "M-&") #'async-shell-command) - - -(provide 'thanos-shells) -;;; thanos-shells.el ends here diff --git a/.emacs.d/modules/thanos-tools.el b/.emacs.d/modules/thanos-tools.el deleted file mode 100644 index 36bc511..0000000 --- a/.emacs.d/modules/thanos-tools.el +++ /dev/null @@ -1,176 +0,0 @@ -;;; thanos-tools.el --- Tools Configuration -*- lexical-binding: t; -*- - -;; Copyright (C) 2023 Thanos Apollo - -;; Author: Thanos Apollo <[email protected]> -;; Keywords: extensions - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <https://www.gnu.org/licenses/>. - -;;; Commentary: -;; ╭━━━━┳╮╱╱╱╱╱╱╱╱╱╱╱╱╱╱╭━━━╮╱╱╱╱╱╭╮╭╮╱╱╱╱╱╱╱╱╭━━━╮ -;; ┃╭╮╭╮┃┃╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃╭━╮┃╱╱╱╱╱┃┃┃┃╱╱╱╱╱╱╱╱┃╭━━╯ -;; ╰╯┃┃╰┫╰━┳━━┳━╮╭━━┳━━╮┃┃╱┃┣━━┳━━┫┃┃┃╭━━╮╱╱╱╱┃╰━━┳╮╭┳━━┳━━┳━━╮ -;; ╱╱┃┃╱┃╭╮┃╭╮┃╭╮┫╭╮┃━━┫┃╰━╯┃╭╮┃╭╮┃┃┃┃┃╭╮┃╭━━╮┃╭━━┫╰╯┃╭╮┃╭━┫━━┫ -;; ╱╱┃┃╱┃┃┃┃╭╮┃┃┃┃╰╯┣━━┃┃╭━╮┃╰╯┃╰╯┃╰┫╰┫╰╯┃╰━━╯┃╰━━┫┃┃┃╭╮┃╰━╋━━┃ -;; ╱╱╰╯╱╰╯╰┻╯╰┻╯╰┻━━┻━━╯╰╯╱╰┫╭━┻━━┻━┻━┻━━╯╱╱╱╱╰━━━┻┻┻┻╯╰┻━━┻━━╯ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱┃┃ -;; ╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱╰╯ -;;; Code: -(require 'corfu) -(require 'orderless) -(require 'dabbrev) - -;; Find definitions -(global-set-key (kbd "M-.") 'xref-find-definitions) -(global-set-key (kbd "C-c L") 'display-line-numbers-mode) - -;; electric pair -(electric-pair-mode 1) - -;; auto insert templates -(auto-insert-mode 1) - -;; flycheck -(require 'flycheck) -(global-flycheck-mode) - -;; Tramp -(require 'tramp) -(setf tramp-default-method "ssh") - -;; sudo-edit -(require 'sudo-edit) -(setf sudo-edit-local-method "doas") ;; sudo is bloat - -;; Completions -(setf dabbrev-ignored-buffer-regexps '("\\.\\(?:pdf\\|jpe?g\\|png\\)\\'")) - -(setf completion-category-overrides '((file (style basic partial-completion))) - completion-styles '(orderless) - completion-cycle-threshold 2) - -;; Corfu -(global-corfu-mode) -(corfu-popupinfo-mode) - -(setf corfu-auto t - corfu-auto-delay 0.1 - corfu-auto-prefix 2 - corfu-cycle t - corfu-popupinfo-delay 0.3 - corfu-quit-at-boundary 'separator - corfu-quit-no-match t - corfu-preselect 'first - corfu-preview-current t - corfu-echo-mode t) - -(setf indent-tabs-mode nil) - -;; Register & Consult -(define-key global-map (kbd "C-x r d") 'bookmark-delete) -(define-key global-map (kbd "C-x r C-r") 'bookmark-rename) -(define-key global-map (kbd "C-x r .") 'consult-register) -(define-key global-map (kbd "C-x r s") 'consult-register-store) -(define-key global-map (kbd "C-x r b") 'consult-bookmark) - -(defvar-keymap thanos/search - :doc "Keymap for search commands." - "f" #'isearch-forward - "b" #'isearch-backward - "s" #'consult-line - "C-f" #'consult-find - "C-g" #'consult-grep - "C-i" #'consult-info - "C-l" #'consult-locate) - -(define-key global-map (kbd "C-s") thanos/search) -(define-key project-prefix-map (kbd "b") 'consult-project-buffer) -(define-key global-map (kbd "M-y") 'consult-yank-from-kill-ring) - -(setf xref-show-xrefs-function #'consult-xref - xref-show-definitions-function #'consult-xref) - -(setf register-preview-delay 0.5 - register-preview-function #'consult-register-format) - -(defun insert-brackets (&optional arg) - "Insert ARG brackets." - (interactive "P") - (insert-pair arg ?\[ ?\])) - -(global-set-key (kbd "C-x M-[") 'insert-brackets) - -;; Magit -(require 'magit) - -(defun project-magit () - "Run magit-status in the current project's root." - (interactive) - (magit-status (project-root (project-current t)))) - -(define-key project-prefix-map (kbd "g") 'project-magit) - -(setf magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1) - - -;; shell scripting -(define-auto-insert - '("\\.sh\\'" . "Bash skeleton") - '("Description:" - "#!/bin/bash\n\n")) - -(add-hook 'shell-script-mode #'auto-insert) - -;; Emacs lisp -(require 'flycheck) -(require 'rainbow-delimiters) - -(setf tab-always-indent 'complete) -(add-to-list 'completion-styles 'initials t) - -(add-hook 'emacs-lisp-mode-hook #'rainbow-delimiters-mode) -(setf flycheck-emacs-lisp-load-path 'inherit) - -(add-hook 'emacs-lisp-mode-hook 'prettify-symbols-mode) - -;; Disable checkdoc flycheck for org-src buffers -(add-hook 'org-src-mode-hook #'(lambda () - (flycheck-disable-checker 'emacs-lisp-checkdoc))) - -;; Common lisp -(setf inferior-lisp-program "sbcl") -(add-hook 'lisp-mode-hook #'rainbow-delimiters-mode) - -;; Scheme -(add-hook 'scheme-mode-hook #'rainbow-delimiters-mode) - -;; Python -(require 'python-mode) -(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode)) - -;; json -(require 'json-mode) -(add-to-list 'auto-mode-alist '("\\.json'" . json-mode)) - -;; Markdown -(require 'markdown-mode) -(add-hook 'markdown-mode-hook #'(lambda () (flyspell-mode))) -(setq markdown-header-scaling t - markdown-command "multimarkdown") - -(add-to-list 'auto-mode-alist '("\\.md\\'" . gfm-mode)) - -(provide 'thanos-tools) -;;; thanos-tools.el ends here |