mirror of
http://github.com/JaeUs3792/dotfiles
synced 2025-12-13 23:51:34 +09:00
Emacs : Rational Config
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
(("default" . ((user-emacs-directory . "~/.emacs.rational")
|
||||
(env . (("RATIONAL_EMACS_HOME" . "~/.emacs.rational.d")))))
|
||||
(env . (("RATIONAL_EMACS_HOME" . "~/.emacs.rational.d")))))
|
||||
("vanilla" . ((user-emacs-directory . "~/.emacs.vanilla")))
|
||||
("doom" . ((user-emacs-directory . "~/.emacs.doom")
|
||||
(env . (("DOOMDIR" . "~/.emacs.doom.d")))))
|
||||
|
||||
@ -13,17 +13,21 @@
|
||||
|
||||
;;; Code:
|
||||
(require 'rational-defaults)
|
||||
(require 'rational-screencast)
|
||||
;;(require 'rational-screencast)
|
||||
(require 'rational-ui)
|
||||
(require 'rational-editing)
|
||||
;;(require 'rational-editing)
|
||||
(require 'rational-evil)
|
||||
(require 'rational-completion)
|
||||
(require 'rational-windows)
|
||||
;;(require 'rational-windows)
|
||||
(require 'rational-use-package)
|
||||
|
||||
(setq user-full-name "JaeYoo-Im"
|
||||
user-mail-address "cpu3792@gmail.com")
|
||||
|
||||
(setq system-time-locale "C")
|
||||
(setenv "LANG" "en_US.UTF-8")
|
||||
(setenv "LC_ALL" "en_US.UTF-8")
|
||||
|
||||
;; Set further font and theme customizations
|
||||
(custom-set-variables
|
||||
'(rational-ui-default-font
|
||||
@ -37,19 +41,96 @@
|
||||
(setq face-font-rescale-alist
|
||||
'(("D2Coding" . 1.25)))
|
||||
|
||||
|
||||
;; Fullscreen
|
||||
(set-frame-parameter (selected-frame) 'fullscreen 'maximized)
|
||||
(add-to-list 'default-frame-alist '(fullscreen . maximized))
|
||||
|
||||
(load-theme 'doom-dracula t)
|
||||
;; Favorite Themes
|
||||
(load-theme 'doom-palenight t)
|
||||
;;(load-theme 'doom-gruvbox t)
|
||||
;;(load-theme 'doom-one t)
|
||||
;;(load-theme 'doom-dracula t)
|
||||
|
||||
|
||||
(straight-use-package 'use-package)
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; Additional Evil
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; EVIL Numbers
|
||||
(use-package evil-numbers
|
||||
:straight t
|
||||
:after evil
|
||||
:config
|
||||
;; unfortunately C-x is emacs common key binding.
|
||||
(define-key evil-normal-state-map (kbd "g =") 'evil-numbers/inc-at-pt)
|
||||
(define-key evil-normal-state-map (kbd "g -") 'evil-numbers/dec-at-pt)
|
||||
(define-key evil-visual-state-map (kbd "g =") 'evil-numbers/inc-at-pt)
|
||||
(define-key evil-visual-state-map (kbd "g -") 'evil-numbers/dec-at-pt))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; Additional UI pkg
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Line numbers
|
||||
(column-number-mode)
|
||||
(global-display-line-numbers-mode t)
|
||||
(global-hl-line-mode)
|
||||
(dolist (mode '(org-mode-hook
|
||||
vterm-mode-hook
|
||||
shell-mode-hook
|
||||
treemacs-mode-hook
|
||||
dired-mode-hook
|
||||
eshell-mode-hook))
|
||||
(add-hook mode (lambda () (display-line-numbers-mode 0))))
|
||||
(use-package rainbow-delimiters
|
||||
:hook (prog-mode . rainbow-delimiters-mode))
|
||||
;; dashboard
|
||||
(use-package dashboard
|
||||
:straight t
|
||||
:after all-the-icons
|
||||
:init
|
||||
(setq dashboard-set-heading-icons t)
|
||||
(setq dashboard-set-file-icons t)
|
||||
;;(setq dashboard-banner-logo-title "Emacs is more than a text editor!")
|
||||
;;(setq dashboard-startup-banner 'logo)
|
||||
(setq dashboard-startup-banner "/home/jaeus/.emacs.rational.d/logos/emacs-e.png")
|
||||
(setq dashboard-center-content t)
|
||||
(setq dashboard-week-agenda t)
|
||||
(setq dashboard-agenda-time-string-format "%d/%m/%Y %A %H:%M")
|
||||
(setq dashboard-items '((recents . 10)
|
||||
(agenda . 5)
|
||||
(bookmarks . 5)
|
||||
;;(projects . 5)
|
||||
(registers . 5)))
|
||||
(setq dashboard-set-navigator t)
|
||||
;; Format: "(icon title help action face prefix suffix)"
|
||||
(setq dashboard-navigator-buttons
|
||||
`((;; Github
|
||||
(,(all-the-icons-octicon "mark-github" :height 1.1 :v-adjust 0.0)
|
||||
"Github"
|
||||
"Browse github"
|
||||
(lambda (&rest _) (browse-url "https://github.com/JaeYoo-Im/")))
|
||||
(,(all-the-icons-octicon "history" :height 1.1 :v-adjust 0.0)
|
||||
"Reload last session"
|
||||
"Reload last session"
|
||||
(lambda (&rest _) (persp-state-load persp-state-default-file))))))
|
||||
:config
|
||||
(dashboard-setup-startup-hook)
|
||||
(dashboard-modify-heading-icons '((recents . "file-text")
|
||||
(bookmarks . "book"))))
|
||||
(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*")))
|
||||
|
||||
(use-package vertico-posframe
|
||||
:straight t
|
||||
:disabled
|
||||
:after vertico
|
||||
:ensure t
|
||||
:init
|
||||
(setq vertico-posframe-parameters
|
||||
`((left-fringe . 8)
|
||||
(right-fringe . 8) (alpha . 100)))
|
||||
(vertico-posframe-mode 1))
|
||||
|
||||
;;; example-config.el ends here
|
||||
(setq user-full-name "JaeYoo-Im"
|
||||
user-mail-address "cpu3792@gmail.com")
|
||||
(defun toggle-transparency ()
|
||||
(interactive)
|
||||
(let ((alpha (frame-parameter nil 'alpha)))
|
||||
@ -64,53 +145,32 @@
|
||||
(global-set-key (kbd "C-c t") 'toggle-transparency)
|
||||
(set-frame-parameter (selected-frame) 'alpha '(75 . 75))
|
||||
|
||||
;; DASHBOARD
|
||||
(straight-use-package 'dashboard)
|
||||
(require 'all-the-icons)
|
||||
(setq dashboard-set-heading-icons t)
|
||||
(setq dashboard-set-file-icons t)
|
||||
(setq dashboard-startup-banner 'logo)
|
||||
(setq dashboard-center-content t)
|
||||
(setq dashboard-week-agenda t)
|
||||
(setq dashboard-agenda-time-string-format "%d/%m/%Y %A %H:%M")
|
||||
(setq dashboard-items '((recents . 10)
|
||||
(agenda . 5)
|
||||
(bookmarks . 5)
|
||||
(registers . 5)))
|
||||
(setq dashboard-set-navigator t)
|
||||
;; Format: "(icon title help action face prefix suffix)"
|
||||
(setq dashboard-navigator-buttons
|
||||
`((
|
||||
(,(all-the-icons-octicon "mark-github" :height 1.1 :v-adjust 0.0)
|
||||
"Github"
|
||||
"Browse github"
|
||||
(lambda (&rest _) (browse-url "https://github.com/JaeUs3792")))
|
||||
(,(all-the-icons-octicon "book" :height 1.1 :v-adjust 0.0)
|
||||
"My Blog"
|
||||
"Browse Blog"
|
||||
(lambda (&rest _) (browse-url "https://jaeus.net"))))))
|
||||
(setq dashboard-set-footer nil)
|
||||
(dashboard-setup-startup-hook)
|
||||
|
||||
|
||||
;; EMOJI
|
||||
(straight-use-package 'emojify)
|
||||
(global-emojify-mode)
|
||||
|
||||
;; Which Key
|
||||
(straight-use-package 'which-key)
|
||||
(setq which-key-idle-delay 0.5)
|
||||
(which-key-mode)
|
||||
|
||||
|
||||
;; GENERAL KEY MAP
|
||||
(straight-use-package 'general)
|
||||
(general-evil-setup t)
|
||||
(general-create-definer ju/leader-key-def
|
||||
:keymaps '(normal insert visual emacs)
|
||||
:prefix "SPC"
|
||||
:global-prefix "C-SPC")
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; EMOJIFY ♌
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package emojify
|
||||
:straight t
|
||||
:hook (after-init . global-emojify-mode))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; Key bindings
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package which-key
|
||||
:straight t
|
||||
:defer 0
|
||||
:diminish which-key-mode
|
||||
:config
|
||||
(which-key-mode)
|
||||
(setq which-key-idle-delay 0.5))
|
||||
(use-package general
|
||||
:straight t
|
||||
:ensure t
|
||||
:config
|
||||
(general-evil-setup t)
|
||||
(general-create-definer ju/leader-key-def
|
||||
:keymaps '(normal insert visual emacs)
|
||||
:prefix "SPC"
|
||||
:global-prefix "C-SPC"))
|
||||
;; General key definer key-prefix SPC
|
||||
(ju/leader-key-def
|
||||
"." 'find-file
|
||||
;; Buffer
|
||||
@ -125,6 +185,8 @@
|
||||
"e" '(:ignore t :which-key "eshell")
|
||||
"e h" '(counsel-esh-history :which "Kill history")
|
||||
"e s" '(eshell :which "run eshell")
|
||||
;; Magit
|
||||
"g" 'magit
|
||||
;; Workspace
|
||||
;; Counsel
|
||||
"f" '(:ignore t :which-key "file op.")
|
||||
@ -133,100 +195,590 @@
|
||||
"t t" '(toggle-truncate-lines :which-key "Toggle truncate lines")
|
||||
;; Shortcut
|
||||
"f d d" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.rational.d/desktop.el")) :which-key "open exwm config")
|
||||
"f d e" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.rational.d/config.el")) :which-key "open emacs config"))
|
||||
"f d e" '(lambda () (interactive) (find-file (expand-file-name "~/.emacs.rational.d/config.el")) :which-key "open emacs config")
|
||||
;; Insert something
|
||||
"i" '(:ignore t :which-key "insert something.")
|
||||
"ie" '(emojify-insert-emoji :which-key "emoji")
|
||||
;; AVY (easymotion)
|
||||
"v" '(:ignore t :which-key "Avy")
|
||||
"vc" '(avy-goto-char :which-key "Avy Goto Char")
|
||||
"vw" '(avy-goto-word-0 :which-key "Avy Goto Word")
|
||||
"vl" '(avy-goto-line :which-key "Avy Goto Line")
|
||||
;; Org mode
|
||||
"o" '(:ignore t :which-key "Org mode")
|
||||
"oa" '(:ignore t :which-key "Org Agenda")
|
||||
"oar" '(my/org-roam-refresh-agenda-list :which-key "Org agenda refresh list")
|
||||
"oaa" '(org-agenda :which-key "open org agenda")
|
||||
;; project.el
|
||||
"p" '(:ignore t :which-key "Project")
|
||||
"p." 'project-find-file
|
||||
"ps" 'project-switch-project
|
||||
"pg" 'consult-ripgrep
|
||||
"pc" 'project-compile
|
||||
"pd" 'project-dired
|
||||
;; Org roam
|
||||
"r" '(:ignore t :which-key "Org Roam")
|
||||
"ru" 'org-roam-ui-open
|
||||
"rl" 'org-roam-buffer-toggle
|
||||
"rf" 'org-roam-node-find
|
||||
"ri" 'org-roam-node-insert
|
||||
"rI" 'org-roam-node-insert-immediate
|
||||
"rp" 'my/org-roam-find-project)
|
||||
|
||||
(global-set-key (kbd "C-M-j") 'consult-buffer)
|
||||
|
||||
;; Make ESC quit prompts
|
||||
(global-set-key (kbd "<escape>") 'keyboard-escape-quit)
|
||||
;; this annoying binding.
|
||||
(global-unset-key (kbd "C-j"))
|
||||
(global-unset-key (kbd "C-k"))
|
||||
(global-unset-key (kbd "S-SPC")) ;; use only S-\
|
||||
|
||||
|
||||
;; tramp default is scp
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; tramp default is scp
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(setq tramp-default-method "ssh")
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; Flycheck
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package flycheck
|
||||
:straight t
|
||||
:ensure t
|
||||
:defer t
|
||||
:init (global-flycheck-mode t))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; AVY (like easymotion)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package avy
|
||||
:straight t
|
||||
:commands (avy-goto-char avy-goto-word-0 avy-goto-line))
|
||||
|
||||
(straight-use-package 'flycheck)
|
||||
(global-flycheck-mode t)
|
||||
|
||||
|
||||
;;(straight-use-package 'vertico-posframe)
|
||||
;;(setq vertico-posframe-parameters
|
||||
;; `((left-fringe . 8)
|
||||
;; (right-fringe . 8) (alpha . 100)))
|
||||
;;(vertico-posframe-mode 1)
|
||||
|
||||
|
||||
;; TODO
|
||||
(straight-use-package 'hl-todo)
|
||||
(setq hl-todo-highlight-punctuation ":"
|
||||
hl-todo-keyword-faces
|
||||
`(;; For things that need to be done, just not today.
|
||||
("TODO" warning bold)
|
||||
;; For problems that will become bigger problems later if not
|
||||
;; fixed ASAP.
|
||||
("FIXME" error bold)
|
||||
;; For tidbits that are unconventional and not intended uses of the
|
||||
;; constituent parts, and may break in a future update.
|
||||
("HACK" font-lock-constant-face bold)
|
||||
;; For things that were done hastily and/or hasn't been thoroughly
|
||||
;; tested. It may not even be necessary!
|
||||
("REVIEW" font-lock-keyword-face bold)
|
||||
;; For especially important gotchas with a given implementation,
|
||||
;; directed at another user other than the author.
|
||||
("NOTE" success bold)
|
||||
;; For things that just gotta go and will soon be gone.
|
||||
("DEPRECATED" font-lock-doc-face bold)
|
||||
;; For a known bug that needs a workaround
|
||||
("BUG" error bold)
|
||||
;; For warning about a problematic or misguiding code
|
||||
("XXX" font-lock-constant-face bold)))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; Hilight TODO
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package hl-todo
|
||||
:straight t
|
||||
:hook (prog-mode . hl-todo-mode)
|
||||
:hook (yaml-mode . hl-todo-mode)
|
||||
:config
|
||||
(setq hl-todo-highlight-punctuation ":"
|
||||
hl-todo-keyword-faces
|
||||
`(;; For things that need to be done, just not today.
|
||||
("TODO" warning bold)
|
||||
;; For problems that will become bigger problems later if not
|
||||
;; fixed ASAP.
|
||||
("FIXME" error bold)
|
||||
;; For tidbits that are unconventional and not intended uses of the
|
||||
;; constituent parts, and may break in a future update.
|
||||
("HACK" font-lock-constant-face bold)
|
||||
;; For things that were done hastily and/or hasn't been thoroughly
|
||||
;; tested. It may not even be necessary!
|
||||
("REVIEW" font-lock-keyword-face bold)
|
||||
;; For especially important gotchas with a given implementation,
|
||||
;; directed at another user other than the author.
|
||||
("NOTE" success bold)
|
||||
;; For things that just gotta go and will soon be gone.
|
||||
("DEPRECATED" font-lock-doc-face bold)
|
||||
;; For a known bug that needs a workaround
|
||||
("BUG" error bold)
|
||||
;; For warning about a problematic or misguiding code
|
||||
("XXX" font-lock-constant-face bold))))
|
||||
(global-hl-todo-mode)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; Dired
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package dired
|
||||
:ensure nil
|
||||
:straight nil
|
||||
:commands (dired dired-jump)
|
||||
:bind (("C-x C-j" . dired-jump))
|
||||
:custom ((dired-listing-switches "-agho --group-directories-first"))
|
||||
:config
|
||||
(evil-collection-define-key 'normal 'dired-mode-map
|
||||
"h" 'dired-single-up-directory
|
||||
"l" 'dired-single-buffer))
|
||||
(autoload 'dired-omit-mode "dired-x")
|
||||
(add-hook 'dired-load-hook
|
||||
(lambda ()
|
||||
(interactive)
|
||||
(dired-collapse)))
|
||||
;; to use h,l key
|
||||
(use-package dired-single
|
||||
:straight t
|
||||
:commands (dired dired-jump))
|
||||
(use-package diredfl
|
||||
:straight t
|
||||
:hook (dired-mode . diredfl-mode))
|
||||
|
||||
;; ORG Mode
|
||||
(setq org-todo-keywords
|
||||
'((sequence "TODO(t)" "HOLD(h)" "|" "KILL(k)" "DONE(d)")))
|
||||
(setq org-ellipsis " ▾")
|
||||
(setq org-hide-emphasis-markers t)
|
||||
(setq org-src-fontify-natively t)
|
||||
(setq org-fontify-quote-and-verse-blocks t)
|
||||
;; from doom emacs
|
||||
(defun +dired-enable-git-info-h ()
|
||||
"Enable `dired-git-info-mode' in git repos."
|
||||
(and (not (file-remote-p default-directory))
|
||||
(locate-dominating-file "." ".git")
|
||||
(dired-git-info-mode 1)))
|
||||
(use-package dired-git-info :straight t)
|
||||
(use-package diff-hl
|
||||
:straight t
|
||||
:hook (dired-mode . diff-hl-dired-mode-unless-remote)
|
||||
:hook (magit-post-refresh . diff-hl-magit-post-refresh)
|
||||
:config
|
||||
;; use margin instead of fringe
|
||||
(diff-hl-margin-mode))
|
||||
(use-package dired-rsync
|
||||
:straight t
|
||||
:config
|
||||
(bind-key "C-c C-r" 'dired-rsync dired-mode-map))
|
||||
(use-package all-the-icons-dired
|
||||
:straight t
|
||||
:hook (dired-mode . all-the-icons-dired-mode)
|
||||
:config
|
||||
;; HACK Fixes #1929: icons break file renaming in Emacs 27+, because the icon
|
||||
;; is considered part of the filename, so we disable icons while we're in
|
||||
;; wdired-mode.
|
||||
;;(when EMACS27+
|
||||
(defvar +wdired-icons-enabled -1))
|
||||
|
||||
(setq org-agenda-start-with-log-mode t)
|
||||
(setq org-log-done 'time)
|
||||
(setq org-log-into-drawer t)
|
||||
(add-hook 'org-mode-hook (lambda () (org-indent-mode)))
|
||||
;;(defadvice! +dired-disable-icons-in-wdired-mode-a (&rest _)
|
||||
;; :before #'wdired-change-to-wdired-mode
|
||||
;; (setq-local +wdired-icons-enabled (if all-the-icons-dired-mode 1 -1))
|
||||
;; (when all-the-icons-dired-mode
|
||||
;; (all-the-icons-dired-mode -1)))
|
||||
|
||||
;;(straight-use-package 'org-superstar)
|
||||
;;(add-hook 'org-mode-hook (lambda () (org-superstar-mode 1)))
|
||||
(straight-use-package 'org-attach-screenshot)
|
||||
(straight-use-package 'org-download)
|
||||
(defun efs/org-mode-visual-fill ()
|
||||
(setq visual-fill-column-width 100
|
||||
visual-fill-column-center-text t)
|
||||
(visual-fill-column-mode 1))
|
||||
;;(defadvice! +dired-restore-icons-after-wdired-mode-a (&rest _)
|
||||
;; :after #'wdired-change-to-dired-mode
|
||||
;; (all-the-icons-dired-mode +wdired-icons-enabled))))
|
||||
;;(use-package fd-dired)
|
||||
|
||||
(straight-use-package 'visual-fill-column)
|
||||
(add-hook 'org-mode-hook (lambda () org-mode . efs/org-mode-visual-fill))
|
||||
(use-package dired-hide-dotfiles
|
||||
:straight t
|
||||
:hook (dired-mode . dired-hide-dotfiles-mode)
|
||||
:config
|
||||
(evil-collection-define-key 'normal 'dired-mode-map
|
||||
"H" 'dired-hide-dotfiles-mode))
|
||||
;;(use-package ranger
|
||||
;; :config
|
||||
;; (setq ranger-preview-file t)
|
||||
;; (setq ranger-show-preview t)
|
||||
;; (setq ranger-show-literal nil)
|
||||
;; (ranger-override-dired-mode t))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; OpenWith
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package openwith
|
||||
:straight t
|
||||
:after dired
|
||||
:config
|
||||
(setq larget-file-warning-threshold nil)
|
||||
(openwith-mode t)
|
||||
(setq openwith-associations
|
||||
(list (list (openwith-make-extension-regexp
|
||||
'("mpg" "mpeg" "mp3" "mp4" "m4v"
|
||||
"avi" "wmv" "wav" "mov" "flv"
|
||||
"ogm" "ogg" "mkv"))
|
||||
"mpv"
|
||||
'(file)))))
|
||||
;;(list (openwith-make-extension-regexp
|
||||
;; '("pdf"))
|
||||
;; "evince"
|
||||
;; '(file)))))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; Magit
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package magit
|
||||
:straight t
|
||||
:commands (magit-status magit-get-current-branch)
|
||||
:custom
|
||||
(magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1))
|
||||
|
||||
;;(with-eval-after-load 'org
|
||||
;; (org-babel-do-load-languages
|
||||
;; 'org-babel-load-languages
|
||||
;; '((emacs-lisp . t)
|
||||
;; (python . t)
|
||||
;; (latex . t)))
|
||||
;;
|
||||
;; (push '("conf-unix" . conf-unix) org-src-lang-modes))
|
||||
;;
|
||||
;;(with-eval-after-load 'org
|
||||
;; ;; This is needed as of Org 9.2
|
||||
;; (require 'org-tempo)
|
||||
;;
|
||||
;; (add-to-list 'org-structure-template-alist '("sh" . "src shell"))
|
||||
;; (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
|
||||
;; (add-to-list 'org-structure-template-alist '("hs" . "src haskell"))
|
||||
;; (add-to-list 'org-structure-template-alist '("cc" . "src c"))
|
||||
;; (add-to-list 'org-structure-template-alist '("cp" . "src c++"))
|
||||
;; (add-to-list 'org-structure-template-alist '("rs" . "src rust"))
|
||||
;; (add-to-list 'org-structure-template-alist '("py" . "src python"))
|
||||
;; (add-to-list 'org-structure-template-alist '("oc" . "src octave"))
|
||||
;; (add-to-list 'org-structure-template-alist '("vl" . "src verilog"))
|
||||
;; (add-to-list 'org-structure-template-alist '("vh" . "src vhdl"))
|
||||
;; NOTE: Make sure to configure a GitHub token before using this package!
|
||||
;; - https://magit.vc/manual/forge/Token-Creation.html#Token-Creation
|
||||
;; - https://magit.vc/manual/ghub/Getting-Started.html#Getting-Started
|
||||
(use-package forge
|
||||
:straight t
|
||||
:after magit)
|
||||
(use-package magit-todos
|
||||
:straight t
|
||||
:defer t)
|
||||
(use-package git-link :straight t)
|
||||
(use-package git-gutter
|
||||
:straight git-gutter-fringe
|
||||
;;:diminish
|
||||
:hook ((text-mode . git-gutter-mode)
|
||||
(prog-mode . git-gutter-mode))
|
||||
:config
|
||||
(setq git-gutter:update-interval 2)
|
||||
(require 'git-gutter-fringe)
|
||||
(set-face-foreground 'git-gutter-fr:added "LightGreen")
|
||||
(fringe-helper-define 'git-gutter-fr:added nil
|
||||
".XXXXXX."
|
||||
"XX....XX"
|
||||
"X......X"
|
||||
"X......X"
|
||||
"XXXXXXXX"
|
||||
"XXXXXXXX"
|
||||
"X......X"
|
||||
"X......X")
|
||||
|
||||
(set-face-foreground 'git-gutter-fr:modified "LightGoldenrod")
|
||||
(fringe-helper-define 'git-gutter-fr:modified nil
|
||||
"XXXXXXXX"
|
||||
"X..XX..X"
|
||||
"X..XX..X"
|
||||
"X..XX..X"
|
||||
"X..XX..X"
|
||||
"X..XX..X"
|
||||
"X..XX..X"
|
||||
"X..XX..X")
|
||||
|
||||
(set-face-foreground 'git-gutter-fr:deleted "LightCoral")
|
||||
(fringe-helper-define 'git-gutter-fr:deleted nil
|
||||
"XXXXXX.."
|
||||
"XX....X."
|
||||
"XX.....X"
|
||||
"XX.....X"
|
||||
"XX.....X"
|
||||
"XX.....X"
|
||||
"XX....X."
|
||||
"XXXXXX..")
|
||||
|
||||
;; These characters are used in terminal mode
|
||||
(setq git-gutter:modified-sign "≡")
|
||||
(setq git-gutter:added-sign "≡")
|
||||
(setq git-gutter:deleted-sign "≡")
|
||||
(set-face-foreground 'git-gutter:added "LightGreen")
|
||||
(set-face-foreground 'git-gutter:modified "LightGoldenrod")
|
||||
(set-face-foreground 'git-gutter:deleted "LightCoral"))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; ORG mode
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(defun org-keyword-backend (command &optional arg &rest ignored)
|
||||
(interactive (list 'interactive))
|
||||
(cl-case command
|
||||
(interactive (company-begin-backend 'org-keyword-backend))
|
||||
(prefix (and (eq major-mode 'org-mode)
|
||||
(cons (company-grab-line "^#\\+\\(\\w*\\)" 1)
|
||||
t)))
|
||||
(candidates (mapcar #'upcase
|
||||
(cl-remove-if-not
|
||||
(lambda (c) (string-prefix-p arg c))
|
||||
(pcomplete-completions))))
|
||||
(ignore-case t)
|
||||
(duplicates t)))
|
||||
(defun efs/org-mode-setup ()
|
||||
(org-indent-mode)
|
||||
;;(variable-pitch-mode 1)
|
||||
(visual-line-mode 1))
|
||||
|
||||
(use-package org
|
||||
:straight t
|
||||
;;:pin org
|
||||
:commands (org-capture org-agenda)
|
||||
:hook (org-mode . efs/org-mode-setup)
|
||||
:config
|
||||
|
||||
(setq org-todo-keywords
|
||||
'((sequence "TODO(t)" "HOLD(h)" "|" "KILL(k)" "DONE(d)")))
|
||||
(setq org-ellipsis " ▾")
|
||||
(setq org-hide-emphasis-markers t)
|
||||
(setq org-src-fontify-natively t)
|
||||
(setq org-fontify-quote-and-verse-blocks t)
|
||||
|
||||
(setq org-agenda-start-with-log-mode t)
|
||||
(setq org-log-done 'time)
|
||||
(setq org-log-into-drawer t)
|
||||
(setq org-format-latex-options (plist-put org-format-latex-options :scale 1.8)))
|
||||
|
||||
(use-package org-superstar :straight t :after org :hook (org-mode . org-superstar-mode))
|
||||
(use-package org-attach-screenshot :straight t)
|
||||
(use-package org-download :straight t)
|
||||
|
||||
(defun efs/org-mode-visual-fill ()
|
||||
(setq visual-fill-column-width 100
|
||||
visual-fill-column-center-text t)
|
||||
(visual-fill-column-mode 1))
|
||||
|
||||
(use-package visual-fill-column
|
||||
:straight t
|
||||
:hook (org-mode . efs/org-mode-visual-fill))
|
||||
|
||||
(with-eval-after-load 'org
|
||||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages
|
||||
'((emacs-lisp . t)
|
||||
(python . t)
|
||||
(latex . t)))
|
||||
|
||||
(push '("conf-unix" . conf-unix) org-src-lang-modes))
|
||||
|
||||
(with-eval-after-load 'org
|
||||
;; This is needed as of Org 9.2
|
||||
(require 'org-tempo)
|
||||
|
||||
(add-to-list 'org-structure-template-alist '("sh" . "src shell"))
|
||||
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
|
||||
(add-to-list 'org-structure-template-alist '("hs" . "src haskell"))
|
||||
(add-to-list 'org-structure-template-alist '("cc" . "src c"))
|
||||
(add-to-list 'org-structure-template-alist '("cp" . "src c++"))
|
||||
(add-to-list 'org-structure-template-alist '("rs" . "src rust"))
|
||||
(add-to-list 'org-structure-template-alist '("py" . "src python"))
|
||||
(add-to-list 'org-structure-template-alist '("oc" . "src octave"))
|
||||
(add-to-list 'org-structure-template-alist '("vl" . "src verilog"))
|
||||
(add-to-list 'org-structure-template-alist '("vh" . "src vhdl")))
|
||||
|
||||
;; ODT export to docx
|
||||
(setq org-odt-preferred-output-format "docx")
|
||||
|
||||
;; Do not ask when run code block
|
||||
(setq org-confirm-babel-evaluate nil)
|
||||
(use-package org-contrib :straight t)
|
||||
|
||||
;; translate
|
||||
(use-package ob-translate
|
||||
:straight t
|
||||
:config
|
||||
(setq ob-translate:default-dest "ko"))
|
||||
|
||||
;; Noter
|
||||
(use-package pdf-tools
|
||||
:straight t
|
||||
:config
|
||||
(pdf-tools-install)
|
||||
(setq-default pdf-view-display-size 'fit-width)
|
||||
(define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward)
|
||||
:custom
|
||||
(pdf-annot-activate-created-annotations t "automatically annotate highlights"))
|
||||
(use-package org-pdfview
|
||||
:straight t)
|
||||
(use-package org-noter :straight t)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; ORG Roam
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package org-roam
|
||||
:ensure t
|
||||
:demand t ;; Ensure org-roam is loaded by default
|
||||
:init
|
||||
(setq org-roam-v2-ack t)
|
||||
:custom
|
||||
(org-roam-directory "~/Roam")
|
||||
(org-roam-completion-everywhere t)
|
||||
|
||||
:config
|
||||
(org-roam-db-autosync-mode))
|
||||
;;(org-roam-setup))
|
||||
|
||||
(defun org-roam-node-insert-immediate (arg &rest args)
|
||||
(interactive "P")
|
||||
(let ((args (push arg args))
|
||||
(org-roam-capture-templates (list (append (car org-roam-capture-templates)
|
||||
'(:immediate-finish t)))))
|
||||
(apply #'org-roam-node-insert args)))
|
||||
|
||||
(defun my/org-roam-filter-by-tag (tag-name)
|
||||
(lambda (node)
|
||||
(member tag-name (org-roam-node-tags node))))
|
||||
|
||||
(defun my/org-roam-list-notes-by-tag (tag-name)
|
||||
(mapcar #'org-roam-node-file
|
||||
(seq-filter
|
||||
(my/org-roam-filter-by-tag tag-name)
|
||||
(org-roam-node-list))))
|
||||
|
||||
(defun my/org-roam-refresh-agenda-list ()
|
||||
(interactive)
|
||||
(setq org-agenda-files (my/org-roam-list-notes-by-tag "Project")))
|
||||
|
||||
|
||||
(defun my/org-roam-project-finalize-hook ()
|
||||
"Adds the captured project file to `org-agenda-files' if the
|
||||
capture was not aborted."
|
||||
;; Remove the hook since it was added temporarily
|
||||
(remove-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook)
|
||||
|
||||
;; Add project file to the agenda list if the capture was confirmed
|
||||
(unless org-note-abort
|
||||
(with-current-buffer (org-capture-get :buffer)
|
||||
(add-to-list 'org-agenda-files (buffer-file-name)))))
|
||||
|
||||
(defun my/org-roam-find-project ()
|
||||
(interactive)
|
||||
;; Add the project file to the agenda after capture is finished
|
||||
(add-hook 'org-capture-after-finalize-hook #'my/org-roam-project-finalize-hook)
|
||||
|
||||
;; Select a project file to open, creating it if necessary
|
||||
(org-roam-node-find
|
||||
nil
|
||||
nil
|
||||
(my/org-roam-filter-by-tag "Project")
|
||||
:templates
|
||||
'(("p" "project" plain "* Goals\n\n%?\n\n* Tasks\n\n** TODO Add initial tasks\n\n* History\n\n* Notes\n\n"
|
||||
:if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n#+category: ${title}\n#+filetags: Project")
|
||||
:unnarrowed t))))
|
||||
|
||||
(add-to-list 'org-after-todo-state-change-hook
|
||||
(lambda ()
|
||||
(when (equal org-state "DONE")
|
||||
(my/org-roam-copy-todo-to-today))))
|
||||
|
||||
(use-package websocket
|
||||
:straight t
|
||||
:after org-roam)
|
||||
(use-package org-roam-ui
|
||||
:straight t
|
||||
:after org-roam
|
||||
;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have
|
||||
;; a hookable mode anymore, you're advised to pick something yourself
|
||||
;; if you don't care about startup time, use
|
||||
;; :hook (after-init . org-roam-ui-mode)
|
||||
:config
|
||||
(setq org-roam-ui-sync-theme t
|
||||
org-roam-ui-follow t
|
||||
org-roam-ui-update-on-save t
|
||||
org-roam-ui-open-on-start nil))
|
||||
|
||||
;; Build the agenda list the first time for the session
|
||||
;;(my/org-roam-refresh-agenda-list)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; Language Settings
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(custom-set-variables
|
||||
'(verilog-indent-level 2)
|
||||
'(verilog-indent-level-module 0)
|
||||
'(verilog-indent-level-declaration 0)
|
||||
'(verilog-indent-level-behavioral 0)
|
||||
'(verilog-indent-level-directive 0)
|
||||
'(verilog-cexp-indent 0)
|
||||
'(verilog-case-indent 2)
|
||||
|
||||
'(verilog-auto-newline nil))
|
||||
|
||||
(use-package rust-mode :straight t)
|
||||
|
||||
(use-package jupyter
|
||||
:straight t)
|
||||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages
|
||||
'((emacs-lisp . t) ;; Other languages
|
||||
(shell . t)
|
||||
;; Python & Jupyter
|
||||
(python . t)
|
||||
(jupyter . t)))
|
||||
(org-babel-jupyter-override-src-block "python")
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; Eshell
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(when (eq system-type 'windows-nt)
|
||||
(setq explicit-shell-file-name "powershell.exe")
|
||||
(setq explicit-powershell.exe-args '()))
|
||||
(defun dw/get-prompt-path ()
|
||||
(let* ((current-path (eshell/pwd))
|
||||
(git-output (shell-command-to-string "git rev-parse --show-toplevel"))
|
||||
(has-path (not (string-match "^fatal" git-output))))
|
||||
(if (not has-path)
|
||||
(abbreviate-file-name current-path)
|
||||
(string-remove-prefix (file-name-directory git-output) current-path))))
|
||||
|
||||
(defun dw/eshell-prompt ()
|
||||
(let ((current-branch (magit-get-current-branch)))
|
||||
(concat
|
||||
"\n"
|
||||
(propertize (system-name) 'face `(:foreground "#62aeed"))
|
||||
(propertize " ॐ " 'face `(:foreground "white"))
|
||||
(propertize (dw/get-prompt-path) 'face `(:foreground "#82cfd3"))
|
||||
(when current-branch
|
||||
(concat
|
||||
(propertize " • " 'face `(:foreground "white"))
|
||||
(propertize (concat " " current-branch) 'face `(:foreground "#c475f0"))))
|
||||
(propertize " • " 'face `(:foreground "white"))
|
||||
(propertize (format-time-string "%I:%M:%S %p") 'face `(:foreground "#5a5b7f"))
|
||||
(if (= (user-uid) 0)
|
||||
(propertize "\n#" 'face `(:foreground "red2"))
|
||||
(propertize "\nλ" 'face `(:foreground "#aece4a")))
|
||||
(propertize " " 'face `(:foreground "white")))))
|
||||
(defun efs/configure-eshell ()
|
||||
;; Save command history when commands are entered
|
||||
(add-hook 'eshell-pre-command-hook 'eshell-save-some-history)
|
||||
|
||||
;; Truncate buffer for performance
|
||||
(add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer)
|
||||
|
||||
;; Bind some useful keys for evil-mode
|
||||
(evil-define-key '(normal insert visual) eshell-mode-map (kbd "C-r") 'counsel-esh-history)
|
||||
(evil-define-key '(normal insert visual) eshell-mode-map (kbd "<home>") 'eshell-bol)
|
||||
(evil-normalize-keymaps)
|
||||
|
||||
(setq eshell-prompt-function 'dw/eshell-prompt
|
||||
eshell-prompt-regexp "^λ "
|
||||
eshell-history-size 10000
|
||||
eshell-buffer-maximum-lines 10000
|
||||
eshell-hist-ignoredups t
|
||||
eshell-scroll-to-bottom-on-input t))
|
||||
|
||||
(use-package eshell-git-prompt
|
||||
:straight t
|
||||
:after eshell)
|
||||
|
||||
(use-package eshell
|
||||
:straight t
|
||||
:hook (eshell-first-time-mode . efs/configure-eshell)
|
||||
:config
|
||||
|
||||
(with-eval-after-load 'esh-opt
|
||||
(setq eshell-destroy-buffer-when-process-dies t)
|
||||
(setq eshell-visual-commands '("htop" "zsh" "vim"))))
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; ELFEED (rss)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
(use-package elfeed
|
||||
:straight t
|
||||
:config
|
||||
(setq elfeed-search-feed-face ":foreground #fff :weight bold"
|
||||
elfeed-feeds (quote
|
||||
(("https://www.reddit.com/r/linux.rss" reddit linux)
|
||||
("https://www.reddit.com/r/emacs.rss" reddit emacs)
|
||||
("https://www.gamingonlinux.com/article_rss.php" gaming linux)
|
||||
("https://hackaday.com/blog/feed/" hackaday linux)
|
||||
("https://opensource.com/feed" opensource linux)
|
||||
("https://linux.softpedia.com/backend.xml" softpedia linux)
|
||||
("https://itsfoss.com/feed/" itsfoss linux)
|
||||
("https://www.zdnet.com/topic/linux/rss.xml" zdnet linux)
|
||||
("https://www.phoronix.com/rss.php" phoronix linux)
|
||||
("http://feeds.feedburner.com/d0od" omgubuntu linux)
|
||||
("https://www.computerworld.com/index.rss" computerworld linux)
|
||||
("https://www.networkworld.com/category/linux/index.rss" networkworld linux)
|
||||
("https://www.techrepublic.com/rssfeeds/topic/open-source/" techrepublic linux)
|
||||
("https://betanews.com/feed" betanews linux)
|
||||
("http://lxer.com/module/newswire/headlines.rss" lxer linux)
|
||||
("https://coolenjoy.net/rss?bo_table=38" coolenjoy IT)
|
||||
("https://gigglehd.com/gg/ggnews/rss" giggle IT)))))
|
||||
|
||||
(use-package elfeed-goodies
|
||||
:straight t
|
||||
:init
|
||||
(elfeed-goodies/setup)
|
||||
:config
|
||||
(setq elfeed-goodies/entry-pane-size 0.5))
|
||||
|
||||
(add-hook 'elfeed-show-mode-hook 'visual-line-mode)
|
||||
(evil-define-key 'normal elfeed-show-mode-map
|
||||
(kbd "J") 'elfeed-goodies/split-show-next
|
||||
(kbd "K") 'elfeed-goodies/split-show-prev)
|
||||
(evil-define-key 'normal elfeed-search-mode-map
|
||||
(kbd "J") 'elfeed-goodies/split-show-next
|
||||
(kbd "K") 'elfeed-goodies/split-show-prev)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;; ETC
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; ediff, keep it in one frame
|
||||
(setq ediff-diff-options "-w"
|
||||
ediff-split-window-function 'split-window-horizontally
|
||||
ediff-window-setup-function 'ediff-setup-windows-plain)
|
||||
|
||||
;; very large file
|
||||
(use-package vlf
|
||||
:straight t
|
||||
:config (progn
|
||||
(require 'vlf-setup)))
|
||||
|
||||
;; epub
|
||||
(use-package nov :straight t)
|
||||
(add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
|
||||
|
||||
165
.emacs.rational.d/desktop.el
Normal file
165
.emacs.rational.d/desktop.el
Normal file
@ -0,0 +1,165 @@
|
||||
(straight-use-package
|
||||
'(app-launcher :type git :host github :repo "SebastienWae/app-launcher"))
|
||||
(defun efs/run-in-background (command)
|
||||
(let ((command-parts (split-string command "[ ]+")))
|
||||
(apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts)))))
|
||||
(defun vifon/exwm-terminal ()
|
||||
(interactive)
|
||||
(let ((default-directory (if (derived-mode-p 'dired-mode)
|
||||
(dired-current-directory)
|
||||
default-directory)))
|
||||
(start-process "alacritty" nil "alacritty")))
|
||||
(defun efs/exwm-init-hook ()
|
||||
;; Make workspace 1 be the one where we land at startup
|
||||
(exwm-workspace-switch-create 1)
|
||||
(efs/start-panel)
|
||||
(set-frame-parameter (selected-frame) 'alpha '(75 . 75))
|
||||
;; if not wsl
|
||||
;;(efs/run-in-background "xsetroot -cursor_name left_ptr")
|
||||
;;(efs/run-in-background "nm-applet")
|
||||
;;(efs/run-in-background "pamac-tray")
|
||||
;;(efs/run-in-background "volumeicon")
|
||||
;;(efs/run-in-background "numlockx on")
|
||||
;;(efs/run-in-background "blueberry-tray")
|
||||
;;(efs/run-in-background "enpass -minimize")
|
||||
|
||||
;; Launch apps that will run in the background
|
||||
;;(efs/run-in-background "fcitx"))
|
||||
)
|
||||
|
||||
(defun efs/exwm-update-class ()
|
||||
(exwm-workspace-rename-buffer exwm-class-name))
|
||||
|
||||
(defun efs/exwm-update-title ()
|
||||
(pcase exwm-class-name
|
||||
("Firefox" (exwm-workspace-rename-buffer (format "Firefox: %s" exwm-title)))))
|
||||
|
||||
;; This function isn't currently used, only serves as an example how to
|
||||
;; position a window
|
||||
(defun efs/position-window ()
|
||||
(let* ((pos (frame-position))
|
||||
(pos-x (car pos))
|
||||
(pos-y (cdr pos)))
|
||||
|
||||
(exwm-floating-move (- pos-x) (- pos-y))))
|
||||
|
||||
(use-package exwm
|
||||
:straight t
|
||||
:config
|
||||
;; Set the default number of workspaces
|
||||
(setq exwm-workspace-number 10)
|
||||
|
||||
;; When window "class" updates, use it to set the buffer name
|
||||
(add-hook 'exwm-update-class-hook #'efs/exwm-update-class)
|
||||
|
||||
;; When window title updates, use it to set the buffer name
|
||||
(add-hook 'exwm-update-title-hook #'efs/exwm-update-title)
|
||||
|
||||
;; Configure windows as they're created
|
||||
;;(add-hook 'exwm-manage-finish-hook #'efs/configure-window-by-class)
|
||||
|
||||
;; When EXWM starts up, do some extra confifuration
|
||||
(add-hook 'exwm-init-hook #'efs/exwm-init-hook)
|
||||
|
||||
;; Automatically send the mouse cursor to the selected workspace's display
|
||||
(setq exwm-workspace-warp-cursor t)
|
||||
|
||||
;; Window focus should follow the mouse pointer
|
||||
(setq mouse-autoselect-window t
|
||||
focus-follows-mouse t)
|
||||
|
||||
(add-hook 'exwm-floating-setup-hook
|
||||
(lambda ()
|
||||
(exwm-layout-hide-mode-line)))
|
||||
|
||||
;; These keys should always pass through to Emacs
|
||||
(setq exwm-input-prefix-keys
|
||||
'(?\C-x
|
||||
?\C-u
|
||||
?\C-h
|
||||
?\M-x
|
||||
?\M-`
|
||||
?\M-&
|
||||
?\M-:
|
||||
?\C-\M-j ;; Buffer list
|
||||
?\C-\ )) ;; Ctrl+Space
|
||||
|
||||
;; Ctrl+Q will enable the next key to be sent directly
|
||||
(define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key)
|
||||
|
||||
;; Set up global key bindings. These always work, no matter the input state!
|
||||
;; Keep in mind that changing this list after EXWM initializes has no effect.
|
||||
(setq exwm-input-global-keys
|
||||
`(
|
||||
;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard)
|
||||
([?\s-r] . exwm-reset)
|
||||
|
||||
;; Move between windows
|
||||
([?\s-h] . windmove-left)
|
||||
([?\s-l] . windmove-right)
|
||||
([?\s-k] . windmove-up)
|
||||
([?\s-j] . windmove-down)
|
||||
|
||||
;;([s-space] . toggle-frame-fullscreen)
|
||||
([?\s-f] . exwm-floating-toggle-floating)
|
||||
|
||||
;; Launch applications via shell command
|
||||
([?\s-&] . (lambda (command)
|
||||
(interactive (list (read-shell-command "$ ")))
|
||||
(start-process-shell-command command nil command)))
|
||||
|
||||
([?\s-C] . (lambda () (interactive) (kill-buffer)))
|
||||
|
||||
;; App
|
||||
(,(kbd "<s-return>") . vifon/exwm-terminal)
|
||||
(,(kbd "<s-SPC>") . app-launcher-run-app)
|
||||
;; Switch workspace
|
||||
([?\s-w] . exwm-workspace-switch)
|
||||
([?\s-`] . (lambda () (interactive) (exwm-workspace-switch-create 0)))
|
||||
|
||||
;; 's-N': Switch to certain workspace with Super (Win) plus a number key (0 - 9)
|
||||
,@(mapcar (lambda (i)
|
||||
`(,(kbd (format "s-%d" i)) .
|
||||
(lambda ()
|
||||
(interactive)
|
||||
(exwm-workspace-switch-create ,i))))
|
||||
(number-sequence 0 9))))
|
||||
|
||||
(exwm-enable))
|
||||
|
||||
;; if not wsl
|
||||
;;(use-package desktop-environment
|
||||
;; :after exwm
|
||||
;; :config (desktop-environment-mode)
|
||||
;; :custom
|
||||
;; (desktop-environment-brightness-small-increment "2%+")
|
||||
;; (desktop-environment-brightness-small-decrement "2%-")
|
||||
;; (desktop-environment-brightness-normal-increment "5%+")
|
||||
;; (desktop-environment-brightness-normal-decrement "5%-"))
|
||||
|
||||
;; Make sure the server is started (better to do this in your main Emacs config!)
|
||||
(server-start)
|
||||
|
||||
(defvar efs/polybar-process nil
|
||||
"Holds the process of the running Polybar instance, if any")
|
||||
|
||||
(defun efs/kill-panel ()
|
||||
(interactive)
|
||||
(when efs/polybar-process
|
||||
(ignore-errors
|
||||
(kill-process efs/polybar-process)))
|
||||
(setq efs/polybar-process nil))
|
||||
|
||||
(defun efs/start-panel ()
|
||||
(interactive)
|
||||
(efs/kill-panel)
|
||||
(setq efs/polybar-process (start-process-shell-command "polybar" nil "polybar panel")))
|
||||
|
||||
(defun efs/send-polybar-hook (module-name hook-index)
|
||||
(start-process-shell-command "polybar-msg" nil (format "polybar-msg hook %s %s" module-name hook-index)))
|
||||
|
||||
(defun efs/send-polybar-exwm-workspace ()
|
||||
(efs/send-polybar-hook "exwm-workspace" 1))
|
||||
|
||||
;; Update panel indicator when workspace changes
|
||||
(add-hook 'exwm-workspace-switch-hook #'efs/send-polybar-exwm-workspace)
|
||||
6
.emacs.rational.d/exwm/.start-exwm.sh.~undo-tree~
Normal file
6
.emacs.rational.d/exwm/.start-exwm.sh.~undo-tree~
Normal file
@ -0,0 +1,6 @@
|
||||
(undo-tree-save-format-version . 1)
|
||||
"e976d2036366e62bb8915b7138e0b4a5fb4918fa"
|
||||
[nil nil nil nil (25145 39387 666368 202000) 0 nil]
|
||||
([nil nil ((445 . 454) (t 25145 11614 471859 40000)) nil (25145 39387 666364 698000) 0 nil])
|
||||
([nil current ((408 . 416) (#("vanilla" 0 7 (fontified t)) . 408) (undo-tree-id0 . -7) (undo-tree-id1 . -7) (undo-tree-id2 . -7) (undo-tree-id3 . -7) (undo-tree-id4 . -7) (undo-tree-id5 . -6) (undo-tree-id6 . -6) (undo-tree-id7 . -6) (undo-tree-id8 . -6) (undo-tree-id9 . -6) (undo-tree-id10 . -5) (undo-tree-id11 . -5) (undo-tree-id12 . -5) (undo-tree-id13 . -5) (undo-tree-id14 . -5) (undo-tree-id15 . -5) (undo-tree-id16 . -5) (undo-tree-id17 . -5) (undo-tree-id18 . -5) (undo-tree-id19 . -5) (undo-tree-id20 . -6) (undo-tree-id21 . -6) (undo-tree-id22 . -6) (undo-tree-id23 . -6) (undo-tree-id24 . -6) (undo-tree-id25 . -6) (undo-tree-id26 . -6) (undo-tree-id27 . -6) (undo-tree-id28 . -6) (undo-tree-id29 . -6) (undo-tree-id30 . -7) (undo-tree-id31 . -7) (undo-tree-id32 . -7) (undo-tree-id33 . -7) (undo-tree-id34 . -7) (undo-tree-id35 . -7) (undo-tree-id36 . -7) (undo-tree-id37 . -7) (undo-tree-id38 . -7) (undo-tree-id39 . -7) (undo-tree-id40 . -7) (undo-tree-id41 . -7) (undo-tree-id42 . -7) (undo-tree-id43 . -7) (undo-tree-id44 . -7) (undo-tree-id45 . -7) (undo-tree-id46 . -7) (undo-tree-id47 . -6) (undo-tree-id48 . -6) (undo-tree-id49 . -6) (undo-tree-id50 . -6) (undo-tree-id51 . -6) (undo-tree-id52 . -6) (undo-tree-id53 . -6) (undo-tree-id54 . -6) (undo-tree-id55 . -6) (undo-tree-id56 . -6) (undo-tree-id57 . -6) (undo-tree-id58 . -6) (undo-tree-id59 . -6) (undo-tree-id60 . -6) (undo-tree-id61 . -6) (undo-tree-id62 . -5) (undo-tree-id63 . -5) (undo-tree-id64 . -5) (undo-tree-id65 . -5) (undo-tree-id66 . -5) (undo-tree-id67 . -4) (undo-tree-id68 . -4) (undo-tree-id69 . -4) (undo-tree-id70 . -4) (undo-tree-id71 . -4) (undo-tree-id72 . -3) (undo-tree-id73 . -3) (undo-tree-id74 . -3) (undo-tree-id75 . -3) (undo-tree-id76 . -3) (undo-tree-id77 . -2) (undo-tree-id78 . -2) (undo-tree-id79 . -2) (undo-tree-id80 . -2) (undo-tree-id81 . -2) (undo-tree-id82 . -1) (undo-tree-id83 . -1) (undo-tree-id84 . -1) (undo-tree-id85 . -1) (undo-tree-id86 . -1) (undo-tree-id87 . -1) (undo-tree-id88 . -1) (undo-tree-id89 . -1) (undo-tree-id90 . -1) (undo-tree-id91 . -1) (t 25145 39387 681489 213000)) nil (25145 39399 354371 746000) 0 nil])
|
||||
nil
|
||||
8
.emacs.rational.d/exwm/EXWM.desktop
Normal file
8
.emacs.rational.d/exwm/EXWM.desktop
Normal file
@ -0,0 +1,8 @@
|
||||
[Desktop Entry]
|
||||
Name=EXWM
|
||||
Comment=Emacs Window Manager
|
||||
Exec=sh /home/jaeus/.emacs.d/exwm/start-exwm.sh
|
||||
TryExec=sh
|
||||
Type=Application
|
||||
X-LightDM-DesktopName=exwm
|
||||
DesktopNames=exwm
|
||||
14
.emacs.rational.d/exwm/start-exwm.sh
Executable file
14
.emacs.rational.d/exwm/start-exwm.sh
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
# Set the screen DPI (uncomment this if needed!)
|
||||
# xrdb ~/.emacs.d/exwm/Xresources
|
||||
|
||||
# Run the screen compositor
|
||||
#picom &
|
||||
#picom -b --config /home/jaeus/.config/i3/picom.conf &
|
||||
# Enable screen locking on suspend
|
||||
#xss-lock -- slock &
|
||||
|
||||
rm ~/.emacs.d/emacs.el
|
||||
picom -b --config $HOME/.xmonad/scripts/picom.conf &
|
||||
~/scripts/random_wallpaper.sh
|
||||
exec dbus-launch --exit-with-session emacs --with-profile rational -mm --debug-init -l ~/.emacs.rational.d/desktop.el
|
||||
14
.emacs.rational.d/exwm/start-exwm.sh~
Executable file
14
.emacs.rational.d/exwm/start-exwm.sh~
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
# Set the screen DPI (uncomment this if needed!)
|
||||
# xrdb ~/.emacs.d/exwm/Xresources
|
||||
|
||||
# Run the screen compositor
|
||||
#picom &
|
||||
#picom -b --config /home/jaeus/.config/i3/picom.conf &
|
||||
# Enable screen locking on suspend
|
||||
#xss-lock -- slock &
|
||||
|
||||
rm ~/.emacs.d/emacs.el
|
||||
picom -b --config $HOME/.xmonad/scripts/picom.conf &
|
||||
~/scripts/random_wallpaper.sh
|
||||
exec dbus-launch --exit-with-session emacs --with-profile vanilla -mm --debug-init -l ~/.emacs.d/desktop.el
|
||||
BIN
.emacs.rational.d/logos/emacs-e.png
Normal file
BIN
.emacs.rational.d/logos/emacs-e.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
@ -14,5 +14,6 @@ done < <(find $wal_dir -type f -name "*" -print0)
|
||||
randomfile=$(printf "%s\n" "${files[RANDOM % ${#files[@]}]}")
|
||||
echo $randomfile
|
||||
wal -i $randomfile --saturate 1.0
|
||||
#feh --bg-fill $randomfile
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user