From 71434b916f2c471e1cfe9fcba40f14b366068949 Mon Sep 17 00:00:00 2001 From: VincentKnightTesting Date: Wed, 9 Mar 2022 01:05:14 -0600 Subject: [PATCH] added doom/emacs, zsh, and polybar --- .doom.d/config.el | 553 ++++++++++++++++++ .doom.d/custom.el | 12 + .doom.d/init.el | 206 +++++++ .doom.d/packages.el | 79 +++ .doom.d/snippets/cider-mode/dump | 8 + .doom.d/snippets/clojure-mode/dump | 8 + .doom.d/snippets/clojure-mode/spy | 8 + .doom.d/snippets/clojurescript-mode/@sub | 6 + .doom.d/snippets/clojurescript-mode/dispatch | 5 + .doom.d/snippets/clojurescript-mode/dump | 8 + .doom.d/snippets/clojurescript-mode/log | 6 + .doom.d/snippets/clojurescript-mode/map | 10 + .doom.d/snippets/clojurescript-mode/reg-ev | 8 + .doom.d/snippets/clojurescript-mode/reg-sub | 7 + .emacs.d | 1 + .zshrc | 103 ++++ bin/compix | Bin 0 -> 56872 bytes cfg/polybar/config | 11 +- cfg/polybar/config.ini | 346 ----------- cfg/rofi/config.rasi | 160 ----- cfg/rofi/themes/applications.rasi | 87 --- cfg/rofi/themes/dock.rasi | 74 --- cfg/rofi/themes/dock_double_border.rasi | 77 --- cfg/rofi/themes/generic.rasi | 86 --- cfg/rofi/themes/images/pattern.png | Bin 144419 -> 0 bytes cfg/rofi/themes/images/pattern_big.png | Bin 525317 -> 0 bytes cfg/rofi/themes/images/pattern_dock.png | Bin 613059 -> 0 bytes cfg/rofi/themes/launchpad.rasi | 89 --- cfg/rofi/themes/music.rasi | 90 --- cfg/rofi/themes/powermenu.rasi | 90 --- cfg/tint2/horizontal-dark-transparent.tint2rc | 246 -------- ...dark-transparent.tint2rc.backup.1645321008 | 230 -------- cfg/tint2/tint2rc | 317 ---------- cfg/tint2/tint2rc.backup.1645320885 | 201 ------- cfg/tint2/tint2rc.backup.1645321020 | 254 -------- cfg/tint2/tint2rc.backup.1645413559 | 138 ----- cfg/tint2/tint2rc.backup.1645724511 | 316 ---------- cfg/tint2/tint2rc.backup.1645731579 | 317 ---------- 38 files changed, 1036 insertions(+), 3121 deletions(-) create mode 100644 .doom.d/config.el create mode 100644 .doom.d/custom.el create mode 100644 .doom.d/init.el create mode 100644 .doom.d/packages.el create mode 100644 .doom.d/snippets/cider-mode/dump create mode 100644 .doom.d/snippets/clojure-mode/dump create mode 100644 .doom.d/snippets/clojure-mode/spy create mode 100644 .doom.d/snippets/clojurescript-mode/@sub create mode 100644 .doom.d/snippets/clojurescript-mode/dispatch create mode 100644 .doom.d/snippets/clojurescript-mode/dump create mode 100644 .doom.d/snippets/clojurescript-mode/log create mode 100644 .doom.d/snippets/clojurescript-mode/map create mode 100644 .doom.d/snippets/clojurescript-mode/reg-ev create mode 100644 .doom.d/snippets/clojurescript-mode/reg-sub create mode 160000 .emacs.d create mode 100644 .zshrc create mode 100755 bin/compix delete mode 100644 cfg/polybar/config.ini delete mode 100644 cfg/rofi/config.rasi delete mode 100644 cfg/rofi/themes/applications.rasi delete mode 100644 cfg/rofi/themes/dock.rasi delete mode 100644 cfg/rofi/themes/dock_double_border.rasi delete mode 100644 cfg/rofi/themes/generic.rasi delete mode 100644 cfg/rofi/themes/images/pattern.png delete mode 100644 cfg/rofi/themes/images/pattern_big.png delete mode 100644 cfg/rofi/themes/images/pattern_dock.png delete mode 100644 cfg/rofi/themes/launchpad.rasi delete mode 100644 cfg/rofi/themes/music.rasi delete mode 100644 cfg/rofi/themes/powermenu.rasi delete mode 100644 cfg/tint2/horizontal-dark-transparent.tint2rc delete mode 100644 cfg/tint2/horizontal-dark-transparent.tint2rc.backup.1645321008 delete mode 100644 cfg/tint2/tint2rc delete mode 100644 cfg/tint2/tint2rc.backup.1645320885 delete mode 100644 cfg/tint2/tint2rc.backup.1645321020 delete mode 100644 cfg/tint2/tint2rc.backup.1645413559 delete mode 100644 cfg/tint2/tint2rc.backup.1645724511 delete mode 100644 cfg/tint2/tint2rc.backup.1645731579 diff --git a/.doom.d/config.el b/.doom.d/config.el new file mode 100644 index 0000000..2af4ecc --- /dev/null +++ b/.doom.d/config.el @@ -0,0 +1,553 @@ +;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- + +;; Place your private configuration here! Remember, you do not need to run 'doom +;; refresh' after modifying this file! + + +;; These are used for a number of things, particularly for GPG configuration, +;; some email clients, file templates and snippets. +(setq doom-localleader-key "'") + +;; (advice-add #'doom-load-session :ignore) + +;; Doom exposes five (optional) variables for controlling fonts in Doom. Here +;; are the three important ones: +;; +;; + `doom-font' +;; + `doom-variable-pitch-font' +;; + `doom-big-font' -- used for `doom-big-font-mode' +;; +;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd +;; font string. You generally only need these two: +;; test +(setq doom-font + (font-spec :family "CaskaydiaCove Nerd Font" :size 12) + doom-big-font + (font-spec :family "JetBrainsMono Nerd Font" :size 22) + doom-variable-pitch-font + (font-spec :family "Overpass" :size 12)) + +(advice-add 'doom/load-session :override #'ignore) + +;; There are two ways to load a theme. Both assume the theme is installed and +;; available. You can either set `doom-theme' or manually load a theme with the +;; `load-theme' function. These are the defaults. +(setq doom-theme 'doom-wilmersdorf) + +;; If you intend to use org, it is recommended you change this! +(setq org-directory "~/org/") + +;; If you want to change the style of line numbers, change this to `relative' or +;; `nil' to disable it: +(setq display-line-numbers-type nil) +(setq-default truncate-lines t) + +;; Here are some additional functions/macros that could help you configure Doom: +;; +;; - `load!' for loading external *.el files relative to this one +;; - `use-package' for configuring packages +;; - `after!' for running code after a package has loaded +;; - `add-load-path!' for adding directories to the `load-path', where Emacs +;; looks when you load packages with `require' or `use-package'. +;; - `map!' for binding new keys +;; +;; To get information about any of these functions/macros, move the cursor over +;; the highlighted symbol at press 'K' (non-evil users must press 'C-c g k'). +;; This will open documentation for it, including demos of how they are used. +;; +;; You can also try 'gd' (or 'C-c g d') to jump to their definition and see how +;; they are implemented. +;; +;; +;; +;; +;; + +;; don't ask for risky variables in dir-locals +(progn (advice-add 'risky-local-variable-p :override #'ignore) + (setq enable-local-variables t enable-local-eval t)) + +(after! evil-collection (setq evil-collection-mode-list (delete 'lispy evil-collection-mode-list))) + + + + + +;; deactived for now (dont need) +;; (add-hook! window-setup #'doom/quickload-session) +;; (add-hook! kill-emacs #'doom/quicksave-session) + +(after! magit + (map! :leader :n "ag" #'magit-status) + (magit-auto-revert-mode +1) + (global-auto-revert-mode +1) + (setq magit-git-global-arguments + '("--no-pager" "-c" "core.preloadindex=true" "-c" "log.showSignature=false" "-c" "color.ui=false" "-c" "color.diff=false")) + (magit-wip-mode +1) + (map! :map magit-mode-map :n "RET" #'magit-diff-visit-worktree-file) + (defun qleguennec/commit-to-wip () + (interactive) + (magit-with-toplevel + (dolist (file (magit-unstaged-files)) + (magit-stage-file file)) + (magit-run-git "commit" (concat "--message=[wip " (format-time-string "%Y-%m-%d %H:%M") "]"))))) + +(map! :leader :n "h." #'helpful-at-point) + +(map! :leader :n "o e" #'projectile-run-shell) + +(map! :n "gp" #'profiler-start + :n "gP" #'profiler-stop) + +(setq evil-vsplit-window-right t evil-split-window-below t evil-escape-key-sequence nil) + +(defun insert-random-uuid () + "Insert a UUID. +This commands calls “uuidgen” on MacOS, Linux, and calls PowelShell on Microsoft Windows. +URL `http://ergoemacs.org/emacs/elisp_generate_uuid.html' +Version 2020-06-04" + (interactive) + (let ((uuid (string-trim-right (shell-command-to-string "uuidgen")))) + (kill-new (concat ":" uuid)) + (insert uuid))) + +(setq warning-suppress-types '((yasnippet backquote-change))) + +(defun recenter-and-blink (&rest _ignore) (doom-recenter-a) (+nav-flash-blink-cursor)) +(advice-add #'+lookup/definition :after #'recenter-and-blink) + +(defun join-lines-after-delete (&rest _ignore) (interactive) (delete-blank-lines)) + +(after! lispy + (advice-add #'lispy-up :after #'doom-recenter-a) + (advice-add #'lispy-down :after #'doom-recenter-a) + (advice-add #'lispy-move-down :after #'doom-recenter-a) + (advice-add #'lispy-move-up :after #'doom-recenter-a) + (setq lispy-eval-display-style 'overlay) + (map! :map lispy-mode-map :i "[" #'lispy-brackets :i "{" #'lispy-braces)) + +(after! lispyville + :config + (add-hook 'lispyville-delete #'join-lines-after-delete) + (add-hook 'lispyville-delete-whole-line #'join-lines-after-delete) + (add-hook 'lispyville-delete-line #'join-lines-after-delete)) + +(after! projectile + (setq projectile-project-name-function + (lambda (project-root) + (let ((project-root (projectile-project-root)) + (wp-split (split-string project-root "wp/"))) + (if (= 2 (length wp-split)) + (replace-regexp-in-string "/$" "" (cadr wp-split)) + (projectile-default-project-name project-root))))) + (setq projectile-use-git-grep t) + (setq projectile-enable-caching nil) + (setq projectile-indexing-method 'alien) + (setq projectile-project-root-functions + #'(projectile-root-top-down projectile-root-top-down-recurring + projectile-root-bottom-up + projectile-root-local))) + +(advice-add 'evil-window-up + :after + (lambda (arg) + (when (string-equal " *NeoTree*" (buffer-name (current-buffer))) + (evil-window-right 1)))) + +(after! flycheck :config (advice-add #'flycheck-next-error :after #'recenter-and-blink)) + +(after! evil + (require 'evil-textobj-anyblock) + (evil-define-text-object my-evil-textobj-anyblock-inner-quote + (count &optional beg end type) + "Select the closest outer quote." + (let ((evil-textobj-anyblock-blocks + '(("'" . "'") ("\"" . "\"") ("`" . "`") ("“" . "”")))) + (evil-textobj-anyblock--make-textobj beg end type count nil))) + (evil-define-text-object my-evil-textobj-anyblock-a-quote + (count &optional beg end type) + "Select the closest outer quote." + (let ((evil-textobj-anyblock-blocks + '(("'" . "'") ("\"" . "\"") ("`" . "`") ("“" . "”")))) + (evil-textobj-anyblock--make-textobj beg end type count t))) + (define-key evil-inner-text-objects-map "q" 'my-evil-textobj-anyblock-inner-quote) + (define-key evil-outer-text-objects-map "q" 'my-evil-textobj-anyblock-a-quote) + (advice-add 'evil-scroll-line-to-center :after #'recenter-and-blink) + (advice-add 'evil-backward-paragraph :after #'recenter-and-blink) + (advice-add 'evil-forward-paragraph :after #'recenter-and-blink) + (advice-add 'evil-ex-search-next :after #'recenter-and-blink) + (advice-add 'evil-ex-search-previous :after #'recenter-and-blink) + (advice-add 'evil-goto-line :after #'recenter-and-blink) + (advice-add 'evil-goto-line :after #'recenter-and-blink) + (advice-add 'evil-forward-section-begin :after #'recenter-and-blink) + (advice-add 'evil-forward-section-end :after #'recenter-and-blink) + (advice-add 'evil-backward-section-begin :after #'recenter-and-blink) + (advice-add 'evil-backward-section-end :after #'recenter-and-blink) + (map! :n + "'" + #'evil-use-register + :n + "{" + #'evil-backward-section-begin + :n + "}" + #'evil-forward-section-begin + :nvi + "C-/" + #'evil-search-forward + :nvi + "C-j" + (cmd! () (save-excursion (evil-beginning-of-line))))) + +(after! evil-snipe :config (setq evil-snipe-scope 'whole-buffer)) + +(after! lsp-mode + (remove-hook 'lsp-mode-hook #'lsp-ui-mode) + (add-to-list 'lsp-file-watch-ignored-directories "[/\\\\]\\resources\\'") + (add-to-list 'lsp-file-watch-ignored-directories "[/\\\\]\\target\\'") + (add-to-list 'lsp-file-watch-ignored-directories "[/\\\\]\\node-modules\\'") + (map! :n + "C-/" #'lsp-find-references)) + +(after! cider + ;; (add-hook 'company-completion-started-hook 'ans/set-company-maps) + ;; (add-hook 'company-completion-finished-hook 'ans/unset-company-maps) + ;; (add-hook 'company-completion-cancelled-hook 'ans/unset-company-maps) + (remove-hook 'cider-mode-hook #'rainbow-delimiters-mode) + (remove-hook 'clojure-mode-hook #'rainbow-delimiters-mode) + + ;; (add-hook 'clojure-mode-hook #'lsp) + ;; (add-hook 'clojurescript-mode-hook #'lsp) + + (setq clojure-toplevel-inside-comment-form t) + (setq cider-show-error-buffer nil) + (map! :map lsp-mode-map + :nv "gd" #'lsp-find-definition + :nv "C-/" #'lsp-find-references) + + (defun qleguennec/avoid-compiled (filename) + (if (s-matches? ".*/resources/public/cljs-out/dev.*" filename) + (s-replace "/resources/public/cljs-out/dev" + "/src/cljs" + filename) + filename)) + + ;; (defadvice! lsp-xrefs-no-compiled (oldfunc locations) + ;; :around #'lsp--locations-to-xref-items + ;; (let* ((uri (gethash "uri" locations))) + ;; (remhash "uri" locations) + ;; (puthash "uri" (qleguennec/avoid-compiled uri) + ;; locations) + ;; (funcall oldfunc locations))) + ;; (advice-remove 'lsp--locations-to-xref-items #'lsp-xrefs-no-compiled) + + (defun clojure-before-save-hook (&rest _args) + (when (and (fboundp #'alix-controller/zprint-file) + (or + (equal major-mode 'clojure-mode) + (equal major-mode 'clojurescript-mode))) + ;; (alix-controller/zprint-file) + )) + + (add-hook 'before-save-hook + #'clojure-before-save-hook) + + (setq cljr-auto-clean-ns nil cljr-auto-sort-ns nil) + ;; (add-hook 'cider-repl-mode-hook #'cider-company-enable-fuzzy-completion) + ;; (add-hook 'cider-mode-hook #'cider-company-enable-fuzzy-completion) + (set-popup-rules! '(("^\\*cider-inspect" :vslot 2 :ttl nil :quit nil) + ("^\\*cider-result*" :slot 1 :vslot 1 :quit nil :select t))) + ;; (remove-hook 'before-save-hook #'cider/indent-before-save) + (defun indent-after-paste + (&rest _ignore) + (call-interactively #'+evil/reselect-paste) + (call-interactively #'evil-indent-line) + (call-interactively #'evil-indent) + (call-interactively #'evil-first-non-blank) + (when cider-mode (call-interactively #'clojure-align))) + (advice-add 'evil-paste-after :after #'indent-after-paste) + (advice-add 'evil-paste-before :after #'indent-after-paste) + (setq cider-font-lock-reader-conditionals + nil + cider-font-lock-dynamically + '(macro core) + cider-inspector-auto-select-buffer + nil + cider-save-file-on-load + t + cider-prompt-for-symbol + nil) + (add-hook 'cider-repl-mode-hook #'cider-company-enable-fuzzy-completion) + (add-hook 'cider-mode-hook #'cider-company-enable-fuzzy-completion) + (defun ans/unset-company-maps + (&rest unused) + "Set default mappings (outside of company). + Arguments (UNUSED) are ignored." + (general-def :states + 'insert + :keymaps + 'override + "" + nil + "" + nil + "C-j" + nil + "C-k" + nil + "RET" + nil + "*" + nil + [return] + nil)) + + (defun ans/set-company-maps + (&rest unused) + "Set maps for when you're inside company completion. + Arguments (UNUSED) are ignored." + (general-def :states + 'insert + :keymaps + 'override + "" + 'company-select-next + "" + 'company-select-previous + "C-j" + 'company-select-next + "C-k" + 'company-select-previous + "RET" + 'company-complete + "*" + 'counsel-company + [return] + 'company-complete)) + (setq nrepl-log-messages t) + (map! :map + cider-repl-mode-map + :ni + "" + #'cider-repl-forward-input + :ni + "" + #'cider-repl-backward-input) + (map! :map cider-inspector-mode-map :ni "" #'cider-inspector-pop) + (map! :map cider-mode-map :localleader "e D" #'cider-debug-defun-at-point) + (remove-hook 'cider-connected-hook #'+clojure--cider-dump-nrepl-server-log-h)) + +(defun qleguennec/set-frame-transparency (&optional frame) + (interactive) + (let ((frame (or frame (selected-frame)))) + (set-frame-parameter frame 'alpha-background 80))) + +(dolist (frame (visible-frame-list)) + (qleguennec/set-frame-transparency frame)) + +(add-to-list 'after-make-frame-functions + #'qleguennec/set-frame-transparency) + +;; (map! :n "C-l" #'+workspace/switch-right :n "C-h" #'+workspace/switch-left) + +(map! :map emacs-lisp-mode-map :localleader "e D" #'edebug-defun) +(map! :leader + :nv "w v" (lambda! () + (call-process "i3-msg" nil 0 nil "split" "h") + (make-frame)) + :nv "w s" (lambda! () + (call-process "i3-msg" nil 0 nil "split" "v") + (make-frame))) + +(after! company + :config + (setq company-echo-last-msg 't) + (map! + :map company-active-map + "`" + #'counsel-company)) + +;; (use-package wgrep :config (setq wgrep-change-readonly-file t)) + +(use-package marginalia + :config + (marginalia-mode +1) + (setq marginalia-annotators '(marginalia-annotators-heavy)) + :bind + (:map minibuffer-local-map ("M-a" . marginalia-cycle))) + +(use-package embark + :bind (("C-S-a" . embark-act) ;; pick some comfortable binding + ("C-h B" . embark-bindings) ;; alternative for `describe-bindings' + ("C-e" . embark-export)) + :init + ;; Optionally replace the key help with a completing-read interface + (setq prefix-help-command #'embark-prefix-help-command) + :config + ;; Hide the mode line of the Embark live/completions buffers + (add-to-list 'display-buffer-alist + '("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*" + nil + (window-parameters (mode-line-format . none))))) + +(use-package embark-consult + :after (embark consult) + :demand t ; only necessary if you have the hook below + ;; if you want to have consult previews as you move around an + ;; auto-updating embark collect buffer + :hook (embark-collect-mode . embark-consult-preview-minor-mode)) + +(use-package consult + :demand t + :init + ;; Optionally configure the register formatting. This improves the register + ;; preview for `consult-register', `consult-register-load', + ;; `consult-register-store' and the Emacs built-ins. + (setq register-preview-delay 0 register-preview-function #'consult-register-format) + ;; Optionally tweak the register preview window. + ;; This adds thin lines, sorting and hides the mode line of the window. + (advice-add #'register-preview :override #'consult-register-window) + :config + ;; Use Consult to select xref locations with preview + (setq xref-show-xrefs-function #'xref--show-xref-buffer xref-show-definitions-function #'xref-show-definitions-buffer) + (autoload 'projectile-project-root "projectile") + (setq consult-project-root-function #'projectile-project-root) + (setq consult-git-grep-command + (concat + "git --no-pager grep --null --color=always --extended-regexp --line-number -I -e ARG OPTS" + " -- :!orientdb-community-importers-2.2.37")) + (map! :vn + "?" + #'consult-git-grep + :n + "/" + #'consult-line + :n + "SPC '" + #'selectrum-repeat + :leader + "i m" + #'consult-global-mark + :leader + "i i" + #'consult-imenu-multi)) + + + +(use-package orderless + :init (icomplete-mode) ; optional but recommended! + :custom (completion-styles '(orderless))) + + + + + +(after! centaur-tabs + (centaur-tabs-group-by-projectile-project) + (map! + :map centaur-tabs-mode-map + "C-l" #'centaur-tabs-forward + "C-h" #'centaur-tabs-backward)) + +(defun qleguennec/put-file-name-on-clipboard () + "Put the current file name on the clipboard." + (interactive) + (let ((filename (if (equal major-mode 'dired-mode) default-directory (buffer-file-name)))) + (when filename + (with-temp-buffer (insert filename) (clipboard-kill-region (point-min) (point-max))) + (message filename)))) + + + +(advice-add #'evil-next-line :after #'doom-recenter-a) +(advice-add #'evil-previous-line :after #'doom-recenter-a) + +(setq frame-title-format + '((:eval (if (equal major-mode 'dired-mode) + default-directory + (buffer-file-name))) + " – Doom Emacs")) + +(defun qleguennec/cycle-themes () + (interactive) + (let* ((sorted-themes (->> (custom-available-themes) + (-filter (lambda (theme) + (and (not (-contains? + '(doom-tomorrow-day + doom-flatwhite + doom-homage-white) + theme)) + (let ((theme (symbol-name theme))) + (and (s-starts-with? "doom" theme) + (not (s-ends-with? "light" theme))))))) + (-sort #'string< ))) + (themes-from-current (-drop-while (lambda (theme) (not (eq doom-theme theme))) sorted-themes)) + (next-theme (cadr (append themes-from-current sorted-themes)))) + (message (symbol-name next-theme)) + (setq doom-theme next-theme) + (load-theme next-theme t) + (doom/reload-theme))) + +(defun qleguennec/toggle-transparency (&optional frame) + (interactive) + (let* ((frame (or frame (selected-frame))) + (alpha (frame-parameter frame 'alpha))) + (set-frame-parameter + frame 'alpha + (if (eql (cond ((numberp alpha) alpha) + ((numberp (cdr alpha)) (cdr alpha)) + ;; Also handle undocumented ( ) form. + ((numberp (cadr alpha)) (cadr alpha))) + 100) + '(85 . 50) '(100 . 100))))) + +(map! + :leader + :nvi "h h" #'qleguennec/cycle-themes) + +(defun qleguennec/prettier-parens:fontify-search (limit) + (let ((result nil) + (finish nil) + (bound (+ (point) limit))) + (while (not finish) + (if (re-search-forward "\\s)" bound t) + (when (and (= 0 (string-match-p "\\s)*$" (buffer-substring-no-properties (point) (line-end-position)))) + (not (eq (char-before (1- (point))) 92))) + (setq result (match-data) + finish t)) + (setq finish t))) + result)) + +(defface qleguennec/prettier-parens:dim-paren-face + '((((class color) (background dark)) + (:foreground "grey30")) + (((class color) (background light)) + (:foreground "grey60"))) + "Prettier parens" + :group 'prettier-parens) + + +(define-minor-mode prettier-parens-mode + "Prettier parens mode." + :init-value nil + (if prettier-parens-mode + (progn (rainbow-delimiters-mode-disable) + (font-lock-add-keywords + nil '((qleguennec/prettier-parens:fontify-search . 'qleguennec/prettier-parens:dim-paren-face))) + (if (fboundp 'font-lock-flush) + (font-lock-flush) + (when font-lock-mode + (with-no-warnings + (font-lock-fontify-buffer))))) + (progn + (font-lock-remove-keywords nil + '((qleguennec/prettier-parens:fontify-search . 'qleguennec/prettier-parens:dim-paren-face))) + (if (fboundp 'font-lock-flush) + (font-lock-flush) + (when font-lock-mode + (with-no-warnings + (font-lock-fontify-buffer))))))) + +(add-hook! '(clojure-mode-hook clojurescript-mode-hook emacs-lisp-mode-hook) + (defun enable-lisp-modes (&rest args) + (prettier-parens-mode))) diff --git a/.doom.d/custom.el b/.doom.d/custom.el new file mode 100644 index 0000000..dbeb7a9 --- /dev/null +++ b/.doom.d/custom.el @@ -0,0 +1,12 @@ +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(package-selected-packages '(cargo lsp-mode selectrum rust-mode flimenu amx))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + ) diff --git a/.doom.d/init.el b/.doom.d/init.el new file mode 100644 index 0000000..fb8ff4d --- /dev/null +++ b/.doom.d/init.el @@ -0,0 +1,206 @@ +;;; init.el -*- lexical-binding: t; -*- + +;; This file controls what Doom modules are enabled and what order they load in. +;; Remember to run 'doom sync' after modifying it! + +;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's +;; documentation. There you'll find information about all of Doom's modules +;; and what flags they support. + +;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or +;; 'C-c g k' for non-vim users) to view its documentation. This works on +;; flags as well (those symbols that start with a plus). +;; +;; Alternatively, press 'gd' (or 'C-c g d') on a module to browse its +;; directory (for easy access to its source code). +;; + +(doom! :input + ;;chinese + ;;japanese + + :completion + company ; the ultimate code completion backend + ;;helm ; the *other* search engine for love and life + ;;ido ; the other *other* search engine... + ;; (ivy + ;; +prescient + ;; +fuzzy + ;; +icons) + ; a search engine for love and life + + :ui + ;;deft ; notational velocity for Emacs + doom ; what makes DOOM look the way it does + doom-dashboard ; a nifty splash screen for Emacs + doom-quit ; DOOM quit-message prompts when you quit Emacs + ;;fill-column ; a `fill-column' indicator + hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW + ;;hydra + ;; indent-guides ; highlighted indent columns + modeline + ; snazzy, Atom-inspired modeline, plus API + nav-flash ; blink the current line after jumping + ;; neotree ; a project drawer, like NERDTree for vim + ophints + ; highlight the region an operation acts on + (popup ; tame sudden yet inevitable temporary windows + +all ; catch all popups that start with an asterix + +defaults) ; default popup rules + (ligatures +extra +fira) + ;; tabs ; an tab bar for Emacs + ;; treemacs + ; a project drawer, like neotree but cooler + ;;unicode ; extended unicode support for various languages + vc-gutter ; vcs diff in the fringe + ;; vi-tilde-fringe ; fringe tildes to mark beyond EOB + window-select ; visually switch windows + ;; workspaces ; tab emulation, persistence & separate workspaces + ;; zen + ; distraction-free coding or writing + + :editor + (evil +everywhere) ; come to the dark side, we have cookies + file-templates ; auto-snippets for empty files + ;; fold ; (nigh) universal code folding + ;; (format +onsave) + ; automated prettiness + ;;god ; run Emacs commands without modifier keys + lispy ; vim for lisp, for people who don't like vim + multiple-cursors + ; editing in many places at once + ;; objed ; text object editing for the innocent + ;; ^ + ;; parinfer ; turn lisp into python, sort of + ;; ;; rotate-text + ;; ; cycle region at point between text candidates + snippets + ; my elves. They type so I don't have to + ;;word-wrap ; soft wrapping with language-aware indent + + :emacs + (dired + +icons) ; making dired pretty [functional] + ;; electric ; smarter, keyword-based electric-indent + ;; ibuffer ; interactive buffer management + vc ; version-control and Emacs, sitting in a tree + + :term + ;; eshell ; a consistent, cross-platform shell (WIP) + ;;shell ; a terminal REPL for Emacs + ;; term ; terminals in Emacs + ;; vterm + ; another terminals in Emacs + + :checkers + syntax ; tasing you for every semicolon you forget + ;;spell ; tasing you for misspelling mispelling + ;;grammar ; tasing grammar mistake every you make + + :tools + ;;ansibly + ;;debugger ; FIXME stepping through code, to help you add bugs + ;;direnv + ;;docker + ;;editorconfig ; let someone else argue about tabs vs spaces + ;;ein ; tame Jupyter notebooks with emacs + (eval +overlay) ; run code, run (also, repls) + ;;flyspell ; tasing you for misspelling mispelling + ;;gist ; interacting with github gists + (lookup ; helps you navigate your code and documentation + +docsets) ; ...or in Dash docsets locally + lsp + ;;macos ; MacOS-specific commands + magit ; a git porcelain for Emacs + ;;make ; run make tasks from Emacs + ;;pass ; password manager for nerds + ;;pdf ; pdf enhancements + ;;prodigy ; FIXME managing external services & code builders + ;;rgb ; creating color strings + ;;terraform ; infrastructure as code + ;;tmux ; an API for interacting with tmux + ;;upload ; map local to remote projects via ssh/ftp + + :lang + ;;agda ; types of types of types of types... + ;;assembly ; assembly for fun or debugging + ;; cc ; C/C++/Obj-C madness + (clojure +lsp) + ;; clojure + ; java with a lisp + ;;common-lisp ; if you've seen one lisp, you've seen them all + ;;coq ; proofs-as-programs + ;;crystal ; ruby at the speed of c + ;; (csharp +lsp +unity) + ; unity, .NET, and mono shenanigans + data ; config/data formats + ;;elixir ; erlang done right + ;;elm ; care for a cup of TEA? + emacs-lisp ; drown in parentheses + ;;erlang ; an elegant language for a more civilized age + ;;ess ; emacs speaks statistics + ;;faust ; dsp, but you get to keep your soul + ;;fsharp ; ML stands for Microsoft's Language + ;;go ; the hipster dialect + ;; (haskell +lsp) ; a language that's lazier than I am + ;;hy ; readability of scheme w/ speed of python + ;;idris ; + ;;(java +meghanada) ; the poster child for carpal tunnel syndrome + ;; (javascript + ;; +typescript=mode + ;; +tide) + ; all(hope(abandon(ye(who(enter(here)))))) + ;;julia ; a better, faster MATLAB + ;;kotlin ; a better, slicker Java(Script) + ;; latex ; writing papers in Emacs has never been so fun + ;;lean + ;;factor + ;;ledger ; an accounting system in Emacs + ;;lua ; one-based indices? one-based indices + markdown ; writing docs for people to ignore + ;;nim ; python + lisp at the speed of c + ;;nix ; I hereby declare "nix geht mehr!" + ;; ocaml ; an objective camel + ;; (org ; organize your plain life in plain text + ;; +journal) + ;; +dragndrop ; drag & drop files/images into org buffers + ;; ;;+hugo ; use Emacs for hugo blogging + ;; ;;+jupyter ; ipython/jupyter support for babel + ;; ;;+pandoc ; export-with-pandoc support + ;; ;;+pomodoro ; be fruitful with the tomato technique + ;; +present + ; using org-mode for presentations + ;;perl ; write code no one else can comprehend + ;;php ; perl's insecure younger brother + ;;plantuml ; diagrams for confusing people more + ;;purescript ; javascript, but functional + ;;python ; beautiful is better than ugly + ;;qt ; the 'cutest' gui framework ever + ;;racket ; a DSL for DSLs + ;;rest ; Emacs as a REST client + ;;rst ; ReST in peace + ;;ruby ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} + ;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap() + ;;scala ; java, but good + ;;scheme ; a fully conniving family of lisps + sh ; she sells {ba,z,fi}sh shells on the C xor + ;;solidity ; do you need a blockchain? No. + ;;swift ; who asked for emoji variables? + ;;terra ; Earth and Moon in alignment for performance. + ;; web ; the tubes + + :email + ;;mu4e + ;;notmuch + ;;(wanderlust +gmail) + + :app + ;;calendar + ;;irc ; how neckbeards socialize + ;;(rss +org) ; emacs as an RSS reader + ;;twitter ; twitter client https://twitter.com/vnought + ;;write ; emacs for writers (fiction, notes, papers, etc.) + + :config + ;;literate + (default +bindings)) diff --git a/.doom.d/packages.el b/.doom.d/packages.el new file mode 100644 index 0000000..73c4923 --- /dev/null +++ b/.doom.d/packages.el @@ -0,0 +1,79 @@ +;; -*- no-byte-compile: t; -*- +;;; $DOOMDIR/packages.el + +;; This is where you install packages, by declaring them with the `package!' +;; macro, then running 'doom refresh' on the command line. You'll need to +;; restart Emacs for your changes to take effect! Or at least, run M-x +;; `doom/reload'. +;; +;; WARNING: Don't disable core packages listed in ~/.emacs.d/core/packages.el. +;; Doom requires these, and disabling them may have terrible side effects. +;; +;; Here are a couple examples: + +;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: + ;(package! some-package) + +;; To install a package directly from a particular repo, you'll need to specify +;; a `:recipe'. You'll find documentation on what `:recipe' accepts here: +;; https://github.com/raxod502/straight.el#the-recipe-format + ;(package! another-package + ; :recipe (:host github :repo "username/repo")) + +;; If the package you are trying to install does not contain a PACKAGENAME.el +;; file, or is located in a subdirectory of the repo, you'll need to specify +;; `:files' in the `:recipe': + ;(package! this-package + ; :recipe (:host github :repo "username/repo" + ; :files ("some-file.el" "src/lisp/*.el"))) + +;; If you'd like to disable a package included with Doom, for whatever reason, +;; you can do so here with the `:disable' property: + ;(package! builtin-package :disable t) + +;; You can override the recipe of a built in package without having to specify +;; all the properties for `:recipe'. These will inherit the rest of its recipe +;; from Doom or MELPA/ELPA/Emacsmirror: + ;(package! builtin-package :recipe (:nonrecursive t)) + ;(package! builtin-package-2 :recipe (:repo "myfork/package")) + +;; Specify a `:branch' to install a package from a particular branch or tag. +;; This is required for some packages whose default branch isn't 'master' (which +;; our package manager can't deal with; see raxod502/straight.el#279) + ;(package! builtin-package :recipe (:branch "develop")) + +;; editor features +;; (package! super-save) +(package! hungry-delete) +(package! centered-cursor-mode) +(package! aggressive-indent) + +(unpin! doom-themes) + +(unpin! cider) +(unpin! clojure-mode) +;; (unpin! clj-refactor) +(unpin! doom-themes) +(unpin! flycheck-clj-kondo) +(unpin! company) +(unpin! company-dict) + +(package! selectrum) +(package! consult) +(package! mini-frame) +(package! orderless) +(package! flimenu) + +(package! prescient) +(package! selectrum-prescient) +(package! amx) + +(package! highlight-indent-guides) + +(package! super-save) + +(package! marginalia) +(package! embark) +(package! embark-consult) + +(package! xref :pin "a82f459b37b31546bf274388baf8aca79e9c30d9") diff --git a/.doom.d/snippets/cider-mode/dump b/.doom.d/snippets/cider-mode/dump new file mode 100644 index 0000000..1231893 --- /dev/null +++ b/.doom.d/snippets/cider-mode/dump @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: dump +# uuid: dump +# key: dump +# condition: t +# -- + +(pm/dump :`(insert-random-uuid)`) \ No newline at end of file diff --git a/.doom.d/snippets/clojure-mode/dump b/.doom.d/snippets/clojure-mode/dump new file mode 100644 index 0000000..457165b --- /dev/null +++ b/.doom.d/snippets/clojure-mode/dump @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: dump +# uuid: dump +# key: dump +# condition: t +# -- + +(postmortem.core/dump :`(insert-random-uuid)`$0)`(evil-normal-state)` \ No newline at end of file diff --git a/.doom.d/snippets/clojure-mode/spy b/.doom.d/snippets/clojure-mode/spy new file mode 100644 index 0000000..02ce6bb --- /dev/null +++ b/.doom.d/snippets/clojure-mode/spy @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: spy +# uuid: spy +# key: spy +# condition: t +# -- + +(postmortem.core/spy>> :`(insert-random-uuid)`$0)`(evil-normal-state)` \ No newline at end of file diff --git a/.doom.d/snippets/clojurescript-mode/@sub b/.doom.d/snippets/clojurescript-mode/@sub new file mode 100644 index 0000000..756bb30 --- /dev/null +++ b/.doom.d/snippets/clojurescript-mode/@sub @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: @sub +# key: @sub +# -- + +@(subscribe [$0]) \ No newline at end of file diff --git a/.doom.d/snippets/clojurescript-mode/dispatch b/.doom.d/snippets/clojurescript-mode/dispatch new file mode 100644 index 0000000..a8a7c02 --- /dev/null +++ b/.doom.d/snippets/clojurescript-mode/dispatch @@ -0,0 +1,5 @@ +# key: dis +# name: dispatch +# -- + +(re-frame/dispatch [$0]) \ No newline at end of file diff --git a/.doom.d/snippets/clojurescript-mode/dump b/.doom.d/snippets/clojurescript-mode/dump new file mode 100644 index 0000000..433cd13 --- /dev/null +++ b/.doom.d/snippets/clojurescript-mode/dump @@ -0,0 +1,8 @@ +# -*- mode: snippet -*- +# name: dump +# uuid: dump +# key: dump +# condition: t +# -- + +(postmortem.core/dump $0:`(insert-random-uuid)``(alix-client/add-posmortem-core)`) \ No newline at end of file diff --git a/.doom.d/snippets/clojurescript-mode/log b/.doom.d/snippets/clojurescript-mode/log new file mode 100644 index 0000000..19e98b3 --- /dev/null +++ b/.doom.d/snippets/clojurescript-mode/log @@ -0,0 +1,6 @@ +# -*- mode: snippet -*- +# name: log +# key: log +# -- + +(.log js/console $0) \ No newline at end of file diff --git a/.doom.d/snippets/clojurescript-mode/map b/.doom.d/snippets/clojurescript-mode/map new file mode 100644 index 0000000..722e0ce --- /dev/null +++ b/.doom.d/snippets/clojurescript-mode/map @@ -0,0 +1,10 @@ +# -*- mode: snippet -*- +# name: map +# key: map +# -- + +{${1:$$(when (and yas-modified-p yas-moving-away-p) + (->> yas-text + (s-split " ") + (-map (lambda (key) (format ":%s %s" key key))) + (s-join " ")))}} \ No newline at end of file diff --git a/.doom.d/snippets/clojurescript-mode/reg-ev b/.doom.d/snippets/clojurescript-mode/reg-ev new file mode 100644 index 0000000..cd91fd4 --- /dev/null +++ b/.doom.d/snippets/clojurescript-mode/reg-ev @@ -0,0 +1,8 @@ +# key: reg-ev +# name: reg-ev +# -- +(re-frame/reg-event-db + :${1:ev-name} + base-middleware + (fn ${1:$(replace-regexp-in-string "^.*/" "" yas-text)} [db [_]] + )) \ No newline at end of file diff --git a/.doom.d/snippets/clojurescript-mode/reg-sub b/.doom.d/snippets/clojurescript-mode/reg-sub new file mode 100644 index 0000000..77da92e --- /dev/null +++ b/.doom.d/snippets/clojurescript-mode/reg-sub @@ -0,0 +1,7 @@ +# key: reg-sub +# name: reg-sub +# -- +(re-frame/reg-sub + ${1:sub-name} + (fn ${1:$(s-replace-regexp "^.*/" "" yas-text)}-input [[_ ]]) + (fn ${1:$(s-replace-regexp "^.*/" "" yas-text)} [[]])) \ No newline at end of file diff --git a/.emacs.d b/.emacs.d new file mode 160000 index 0000000..42e5763 --- /dev/null +++ b/.emacs.d @@ -0,0 +1 @@ +Subproject commit 42e5763782fdc1aabb9f2624d468248d6978abe2 diff --git a/.zshrc b/.zshrc new file mode 100644 index 0000000..052d259 --- /dev/null +++ b/.zshrc @@ -0,0 +1,103 @@ +# If you come from bash you might have to change your $PATH. +# export PATH=$HOME/bin:/usr/local/bin:$PATH + +# Path to your oh-my-zsh installation. +export ZSH="$HOME/.oh-my-zsh" + +# Set name of the theme to load --- if set to "random", it will +# load a random theme each time oh-my-zsh is loaded, in which case, +# to know which specific one was loaded, run: echo $RANDOM_THEME +# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes +ZSH_THEME="robbyrussell" + +# Set list of themes to pick from when loading at random +# Setting this variable when ZSH_THEME=random will cause zsh to load +# a theme from this variable instead of looking in $ZSH/themes/ +# If set to an empty array, this variable will have no effect. +# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. +# Case-sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment one of the following lines to change the auto-update behavior +# zstyle ':omz:update' mode disabled # disable automatic updates +# zstyle ':omz:update' mode auto # update automatically without asking +# zstyle ':omz:update' mode reminder # just remind me to update when it's time + +# Uncomment the following line to change how often to auto-update (in days). +# zstyle ':omz:update' frequency 13 + +# Uncomment the following line if pasting URLs and other text is messed up. +# DISABLE_MAGIC_FUNCTIONS="true" + +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" + +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# You can also set it to another string to have that shown instead of the default red dots. +# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" +# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) +# COMPLETION_WAITING_DOTS="true" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# You can set one of the optional three formats: +# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# or set a custom format using the strftime function format specifications, +# see 'man strftime' for details. +# HIST_STAMPS="mm/dd/yyyy" + +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder + +# Which plugins would you like to load? +# Standard plugins can be found in $ZSH/plugins/ +# Custom plugins may be added to $ZSH_CUSTOM/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=(git zsh-autosuggestions) + +source $ZSH/oh-my-zsh.sh + +# User configuration + +# export MANPATH="/usr/local/man:$MANPATH" + +# You may need to manually set your language environment +# export LANG=en_US.UTF-8 + +# Preferred editor for local and remote sessions +# if [[ -n $SSH_CONNECTION ]]; then +# export EDITOR='vim' +# else +# export EDITOR='mvim' +# fi + +# Compilation flags +# export ARCHFLAGS="-arch x86_64" + +# Set personal aliases, overriding those provided by oh-my-zsh libs, +# plugins, and themes. Aliases can be placed here, though oh-my-zsh +# users are encouraged to define aliases within the ZSH_CUSTOM folder. +# For a full list of active aliases, run `alias`. +# +# Example aliases +# alias zshconfig="mate ~/.zshrc" +# alias ohmyzsh="mate ~/.oh-my-zsh" +alias discord='discord --no-sandbox' +alias em='emacs' diff --git a/bin/compix b/bin/compix new file mode 100755 index 0000000000000000000000000000000000000000..e3396c27fd988d4747b3388836fdd2be7370fcc8 GIT binary patch literal 56872 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 MX`GUmAdj{F5Bs}&_W%F@ literal 0 HcmV?d00001 diff --git a/cfg/polybar/config b/cfg/polybar/config index 98c3932..3d71dc4 100644 --- a/cfg/polybar/config +++ b/cfg/polybar/config @@ -38,8 +38,8 @@ bottom = false line-size = 1 wm-restack = bspwm -modules-left = herbs -modules-center = +modules-left = mpd +modules-center = modules-right = alsa mem battery wlan round-left time round-right settings font-0 = CaskaydiaCove Nerd Font:style=Bold:pixelsize=11;3 @@ -50,7 +50,7 @@ font-3 = Dejavu Serif:fontformat=truetype:size=10:antialias=true;3 [module/mpd] type = internal/mpd interval = 2 -format-online = +format-online = icon-play-foreground = ${colors.color1} icon-play = 󰐊 icon-pause-foreground = ${colors.color1} @@ -67,6 +67,7 @@ icon-pause-underline = ${colors.color3} icon-prev-underline = ${colors.color3} + [module/alsa] type = internal/alsa format-volume = @@ -322,3 +323,7 @@ label-padding = 1 label-empty = "" ;label-empty-foreground = ${color.blue-light} label-empty-padding = 2 + +[module/settings] +screenchange-reload = true +pseudo-transparency = true diff --git a/cfg/polybar/config.ini b/cfg/polybar/config.ini deleted file mode 100644 index d70639f..0000000 --- a/cfg/polybar/config.ini +++ /dev/null @@ -1,346 +0,0 @@ - -[colors] -background = ${xrdb:background} -foreground = ${xrdb:foreground} -color0 = ${xrdb:color0} -color1 = ${xrdb:color1} -color2 = ${xrdb:color2} -color3 = ${xrdb:color3} -color4 = ${xrdb:color4} -color5 = ${xrdb:color5} -color6 = ${xrdb:color6} -color7 = ${xrdb:color7} -color8 = ${xrdb:color8} -color9 = ${xrdb:color9} -color10 = ${xrdb:color10} -color11 = ${xrdb:color11} -color12 = ${xrdb:color12} -color13 = ${xrdb:color13} -color14 = ${xrdb:color14} -color15 = ${xrdb:color15} -dark-light = #272A2B -active-light = #313435 - -[bar/example] -#tray-position = right -;monitor = LVDS1 -width = 98% -height = 35 -padding-left = 1 -padding-right = 1 -radius = 15 -offset-x = 1% -offset-y = 1% -background = ${colors.background} -foreground = ${colors.foreground} -bottom = false - -line-size = 1 -wm-restack = bspwm - -modules-left = bspwm -modules-center = -modules-right = alsa mem battery wlan round-left time round-right settings - -font-0 = CaskaydiaCove Nerd Font:style=Bold:pixelsize=11;3 -font-1 = CaskaydiaCove Nerd Font:size=15;3 -font-2 = Material Design Icons:style=Bold:size=13;3 -font-3 = Dejavu Serif:fontformat=truetype:size=10:antialias=true;3 - -[module/mpd] -type = internal/mpd -interval = 2 -format-online = -icon-play-foreground = ${colors.color1} -icon-play = 󰐊 -icon-pause-foreground = ${colors.color1} -icon-pause = 󰏥 -icon-stop-foreground = ${colors.color1} -icon-stop = 󰓛 -icon-prev-foreground = ${colors.color4} -icon-prev = 󰒮 -icon-next-foreground = ${colors.color4} -icon-next = 󰒭 -icon-play-underline = ${colors.color3} -icon-next-underline = ${colors.color3} -icon-pause-underline = ${colors.color3} -icon-prev-underline = ${colors.color3} - - -[module/alsa] -type = internal/alsa -format-volume = -label-volume =  -label-volume-foreground = ${colors.color4} - -format-muted-foreground = ${colors.foreground} -label-muted = 󰚙 - -format-muted-padding = 1 -format-muted-background = #131a1c - -bar-volume-width = 10 -bar-volume-foreground-0 = #58acc4 -bar-volume-foreground-1 = #58acc4 -bar-volume-foreground-2 = #58acc4 -bar-volume-foreground-3 = #58acc4 -bar-volume-foreground-4 = #58acc4 -bar-volume-foreground-5 = #58acc4 -bar-volume-foreground-6 = #58acc4 -bar-volume-gradient = true -bar-volume-indicator = -bar-volume-indicator-foreground = #58acc4 -bar-volume-indicator-font = 1 -bar-volume-fill = ━ -bar-volume-fill-foreground = #61afef -bar-volume-fill-font = 1 -bar-volume-empty = ━ -bar-volume-empty-font = 1 -bar-volume-empty-foreground = ${colors.foreground} -format-volume-padding = 1 - -[module/temperature] -type = internal/temperature -thermal-zone = 0 -warn-temperature = 65 -label-foreground = ${colors.color7} -format =