Cool update
This commit is contained in:
parent
a9203c85e8
commit
24d8ba7352
30 changed files with 164 additions and 1373 deletions
|
@ -34,4 +34,3 @@ if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
|
|||
exec Hyprland
|
||||
logout
|
||||
fi
|
||||
|
||||
|
|
|
@ -1,311 +0,0 @@
|
|||
(beacon-mode 1)
|
||||
|
||||
(map! :leader
|
||||
(:prefix ("b". "buffer")
|
||||
:desc "List bookmarks" "L" #'list-bookmarks
|
||||
:desc "Save current bookmarks to bookmark file" "w" #'bookmark-save))
|
||||
|
||||
(global-auto-revert-mode 1)
|
||||
(setq global-auto-revert-non-file-buffers t)
|
||||
|
||||
(evil-define-key 'normal ibuffer-mode-map
|
||||
(kbd "f c") 'ibuffer-filter-by-content
|
||||
(kbd "f d") 'ibuffer-filter-by-directory
|
||||
(kbd "f f") 'ibuffer-filter-by-filename
|
||||
(kbd "f m") 'ibuffer-filter-by-mode
|
||||
(kbd "f n") 'ibuffer-filter-by-name
|
||||
(kbd "f x") 'ibuffer-filter-disable
|
||||
(kbd "g h") 'ibuffer-do-kill-lines
|
||||
(kbd "g H") 'ibuffer-update)
|
||||
|
||||
;; https://stackoverflow.com/questions/9547912/emacs-calendar-show-more-than-3-months
|
||||
(defun drk/year-calendar (&optional year)
|
||||
(interactive)
|
||||
(require 'calendar)
|
||||
(let* (
|
||||
(current-year (number-to-string (nth 5 (decode-time (current-time)))))
|
||||
(month 0)
|
||||
(year (if year year (string-to-number (format-time-string "%Y" (current-time))))))
|
||||
(switch-to-buffer (get-buffer-create calendar-buffer))
|
||||
(when (not (eq major-mode 'calendar-mode))
|
||||
(calendar-mode))
|
||||
(setq displayed-month month)
|
||||
(setq displayed-year year)
|
||||
(setq buffer-read-only nil)
|
||||
(erase-buffer)
|
||||
;; horizontal rows
|
||||
(dotimes (j 4)
|
||||
;; vertical columns
|
||||
(dotimes (i 3)
|
||||
(calendar-generate-month
|
||||
(setq month (+ month 1))
|
||||
year
|
||||
;; indentation / spacing between months
|
||||
(+ 5 (* 25 i))))
|
||||
(goto-char (point-max))
|
||||
(insert (make-string (- 10 (count-lines (point-min) (point-max))) ?\n))
|
||||
(widen)
|
||||
(goto-char (point-max))
|
||||
(narrow-to-region (point-max) (point-max)))
|
||||
(widen)
|
||||
(goto-char (point-min))
|
||||
(setq buffer-read-only t)))
|
||||
|
||||
(defun drk/scroll-year-calendar-forward (&optional arg event)
|
||||
"Scroll the yearly calendar by year in a forward direction."
|
||||
(interactive (list (prefix-numeric-value current-prefix-arg)
|
||||
last-nonmenu-event))
|
||||
(unless arg (setq arg 0))
|
||||
(save-selected-window
|
||||
(if (setq event (event-start event)) (select-window (posn-window event)))
|
||||
(unless (zerop arg)
|
||||
(let* (
|
||||
(year (+ displayed-year arg)))
|
||||
(drk/year-calendar year)))
|
||||
(goto-char (point-min))
|
||||
(run-hooks 'calendar-move-hook)))
|
||||
|
||||
(defun drk/scroll-year-calendar-backward (&optional arg event)
|
||||
"Scroll the yearly calendar by year in a backward direction."
|
||||
(interactive (list (prefix-numeric-value current-prefix-arg)
|
||||
last-nonmenu-event))
|
||||
(drk/scroll-year-calendar-forward (- (or arg 1)) event))
|
||||
|
||||
(map! :leader
|
||||
:desc "Scroll year calendar backward" "<left>" #'drk/scroll-year-calendar-backward
|
||||
:desc "Scroll year calendar forward" "<right>" #'drk/scroll-year-calendar-forward)
|
||||
|
||||
(defalias 'year-calendar 'drk/year-calendar)
|
||||
|
||||
(map! :leader
|
||||
(:prefix ("c h" . "Help info from Clippy")
|
||||
:desc "Clippy describes function under point" "f" #'clippy-describe-function
|
||||
:desc "Clippy describes variable under point" "v" #'clippy-describe-variable))
|
||||
|
||||
;; With dired-open plugin, you can launch external programs for certain
|
||||
;; extensions For example, I set all .png files to open in 'vimiv' and all .mp4
|
||||
;; files to open in 'mpv'
|
||||
(setq dired-open-extensions '(("gif" . "vimiv")
|
||||
("jpg" . "vimiv")
|
||||
("png" . "vimiv")
|
||||
("mkv" . "mpv")
|
||||
("mp4" . "mpv")))
|
||||
|
||||
(evil-define-key 'normal peep-dired-mode-map
|
||||
(kbd "j") 'peep-dired-next-file
|
||||
(kbd "k") 'peep-dired-prev-file)
|
||||
(add-hook 'peep-dired-hook 'evil-normalize-keymaps)
|
||||
|
||||
(setq delete-by-moving-to-trash t
|
||||
trash-directory "~/.local/share/Trash/files/")
|
||||
|
||||
(setq doom-theme 'catppuccin)
|
||||
(map! :leader
|
||||
:desc "Load new theme" "h t" #'load-theme)
|
||||
(setq catppuccin-flavor 'mocha) ;; or 'latte, 'macchiato, or 'mocha
|
||||
|
||||
(use-package emojify
|
||||
:hook (after-init . global-emojify-mode))
|
||||
|
||||
(setq doom-font (font-spec :family "Mononoki Nerd Font" :size 18)
|
||||
doom-variable-pitch-font (font-spec :family "Mononoki Nerd Font" :size 18)
|
||||
doom-big-font (font-spec :family "Mononoki Nerd Font" :size 24))
|
||||
(after! doom-themes
|
||||
(setq doom-themes-enable-bold t
|
||||
doom-themes-enable-italic t))
|
||||
(custom-set-faces!
|
||||
'(font-lock-comment-face :slant italic)
|
||||
'(font-lock-keyword-face :slant italic))
|
||||
|
||||
(defun drk/insert-todays-date (prefix)
|
||||
(interactive "P")
|
||||
(let ((format (cond
|
||||
((not prefix) "%A, %B %d, %Y")
|
||||
((equal prefix '(4)) "%m-%d-%Y")
|
||||
((equal prefix '(16)) "%Y-%m-%d"))))
|
||||
(insert (format-time-string format))))
|
||||
|
||||
(require 'calendar)
|
||||
(defun drk/insert-any-date (date)
|
||||
"Insert DATE using the current locale."
|
||||
(interactive (list (calendar-read-date)))
|
||||
(insert (calendar-date-string date)))
|
||||
|
||||
(map! :leader
|
||||
(:prefix ("i d" . "Insert date")
|
||||
:desc "Insert any date" "a" #'drk/insert-any-date
|
||||
:desc "Insert todays date" "t" #'drk/insert-todays-date))
|
||||
|
||||
(setq ivy-posframe-display-functions-alist
|
||||
'((swiper . ivy-posframe-display-at-point)
|
||||
(complete-symbol . ivy-posframe-display-at-point)
|
||||
(counsel-M-x . ivy-display-function-fallback)
|
||||
(counsel-esh-history . ivy-posframe-display-at-window-center)
|
||||
(counsel-describe-function . ivy-display-function-fallback)
|
||||
(counsel-describe-variable . ivy-display-function-fallback)
|
||||
(counsel-find-file . ivy-display-function-fallback)
|
||||
(counsel-recentf . ivy-display-function-fallback)
|
||||
(counsel-register . ivy-posframe-display-at-frame-bottom-window-center)
|
||||
(dmenu . ivy-posframe-display-at-frame-top-center)
|
||||
(nil . ivy-posframe-display))
|
||||
ivy-posframe-height-alist
|
||||
'((swiper . 20)
|
||||
(dmenu . 20)
|
||||
(t . 10)))
|
||||
(ivy-posframe-mode 1) ; 1 enables posframe-mode, 0 disables it.
|
||||
|
||||
(map! :leader
|
||||
(:prefix ("v" . "Ivy")
|
||||
:desc "Ivy push view" "v p" #'ivy-push-view
|
||||
:desc "Ivy switch view" "v s" #'ivy-switch-view))
|
||||
|
||||
(setq display-line-numbers-type t)
|
||||
(map! :leader
|
||||
:desc "Comment or uncomment lines" "TAB TAB" #'comment-line
|
||||
(:prefix ("t" . "toggle")
|
||||
:desc "Toggle line numbers" "l" #'doom/toggle-line-numbers
|
||||
:desc "Toggle line highlight in frame" "h" #'hl-line-mode
|
||||
:desc "Toggle line highlight globally" "H" #'global-hl-line-mode
|
||||
:desc "Toggle truncate lines" "t" #'toggle-truncate-lines))
|
||||
|
||||
(custom-set-faces
|
||||
'(markdown-header-face ((t (:inherit font-lock-function-name-face :weight bold :family "Mononoki Nerd Font"))))
|
||||
'(markdown-header-face-1 ((t (:inherit markdown-header-face :height 1.7))))
|
||||
'(markdown-header-face-2 ((t (:inherit markdown-header-face :height 1.6))))
|
||||
'(markdown-header-face-3 ((t (:inherit markdown-header-face :height 1.5))))
|
||||
'(markdown-header-face-4 ((t (:inherit markdown-header-face :height 1.4))))
|
||||
'(markdown-header-face-5 ((t (:inherit markdown-header-face :height 1.3))))
|
||||
'(markdown-header-face-6 ((t (:inherit markdown-header-face :height 1.2)))))
|
||||
|
||||
(set-face-attribute 'mode-line nil :font "Mononoki Nerd Font-14")
|
||||
(setq doom-modeline-height 30 ;; sets modeline height
|
||||
doom-modeline-bar-width 5 ;; sets right bar width
|
||||
doom-modeline-persp-name t ;; adds perspective name to modeline
|
||||
doom-modeline-persp-icon t) ;; adds folder icon next to persp name
|
||||
|
||||
(xterm-mouse-mode 1)
|
||||
|
||||
(map! :leader
|
||||
:desc "Toggle neotree" "e" #'neotree-toggle)
|
||||
(setq neo-theme 'nerd)
|
||||
(setq neo-smart-open t)
|
||||
(setq projectile-switch-project-action 'neotree-projectile-action)
|
||||
|
||||
(map! :leader
|
||||
(:prefix ("=" . "open file")
|
||||
:desc "Edit agenda file" "a" #'(lambda () (interactive) (find-file "~/org/agenda.org"))
|
||||
:desc "Edit doom config.org" "c" #'(lambda () (interactive) (find-file "~/.config/doom/config.org"))
|
||||
:desc "Edit doom init.el" "i" #'(lambda () (interactive) (find-file "~/.config/doom/init.el"))
|
||||
:desc "Edit doom packages.el" "p" #'(lambda () (interactive) (find-file "~/.config/doom/packages.el"))))
|
||||
|
||||
(map! :leader
|
||||
:desc "Org babel tangle" "m B" #'org-babel-tangle)
|
||||
(after! org
|
||||
(setq org-directory "~/org/"
|
||||
org-agenda-files '("~/org/agenda.org")
|
||||
org-default-notes-file (expand-file-name "notes.org" org-directory)
|
||||
org-ellipsis " ▼ "
|
||||
org-superstar-headline-bullets-list '("◉" "●" "○" "◆" "●" "○" "◆")
|
||||
org-superstar-item-bullet-alist '((?+ . ?➤) (?- . ?✦)) ; changes +/- symbols in item lists
|
||||
org-log-done 'time
|
||||
org-hide-emphasis-markers t
|
||||
;; ex. of org-link-abbrev-alist in action
|
||||
;; [[arch-wiki:Name_of_Page][Description]]
|
||||
org-link-abbrev-alist ; This overwrites the default Doom org-link-abbrev-list
|
||||
'(("google" . "http://www.google.com/search?q=")
|
||||
("arch-wiki" . "https://wiki.archlinux.org/index.php/")
|
||||
("ddg" . "https://duckduckgo.com/?q=")
|
||||
("wiki" . "https://en.wikipedia.org/wiki/"))
|
||||
org-todo-keywords ; This overwrites the default Doom org-todo-keywords
|
||||
'((sequence
|
||||
"TODO(t)" ; A task that is ready to be tackled
|
||||
"BLOG(b)" ; Blog writing assignments
|
||||
"GYM(g)" ; Things to accomplish at the gym
|
||||
"GAME(j)" ; Things to accomplish at the gym
|
||||
"PROJ(p)" ; A project that contains other tasks
|
||||
"VIDEO(v)" ; Video assignments
|
||||
"WAIT(w)" ; Something is holding up this task
|
||||
"|" ; The pipe necessary to separate "active" states and "inactive" states
|
||||
"DONE(d)" ; Task has been completed
|
||||
"CANCELLED(c)" )))) ; Task has been cancelled
|
||||
(setq org-agenda-custom-commands
|
||||
'(("p" "Priority view"
|
||||
((tags "PRIORITY=\"A\""
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "High priority unfinished tasks:")))
|
||||
(tags "PRIORITY=\"B\""
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Medium priority unfinished tasks:")))
|
||||
(tags "PRIORITY=\"C\""
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Low priority unfinished tasks:")))))
|
||||
("i" "INTEC view"
|
||||
((tags "homeworks"
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Pending homeworks:")))
|
||||
(tags "studies"
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Pending studies:")))
|
||||
(tags "exam"
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Pending exams:")))))
|
||||
))
|
||||
|
||||
(setq
|
||||
org-agenda-block-separator 985827
|
||||
org-fancy-priorities-list '("" "" "")
|
||||
org-priority-faces
|
||||
'((?A :foreground "#fb4934" :weight bold)
|
||||
(?B :foreground "#fabd2f" :weight bold)
|
||||
(?C :foreground "#83a598" :weight bold)))
|
||||
|
||||
(setq org-publish-use-timestamps-flag nil)
|
||||
(setq org-export-with-broken-links t)
|
||||
|
||||
(use-package! org-auto-tangle
|
||||
:defer t
|
||||
:hook (org-mode . org-auto-tangle-mode)
|
||||
:config
|
||||
(setq org-auto-tangle-default t))
|
||||
|
||||
(define-globalized-minor-mode global-rainbow-mode rainbow-mode
|
||||
(lambda () (rainbow-mode 1)))
|
||||
(global-rainbow-mode 1 )
|
||||
|
||||
(map! :leader
|
||||
(:prefix ("r" . "registers")
|
||||
:desc "Copy to register" "c" #'copy-to-register
|
||||
:desc "Frameset to register" "f" #'frameset-to-register
|
||||
:desc "Insert contents of register" "i" #'insert-register
|
||||
:desc "Jump to register" "j" #'jump-to-register
|
||||
:desc "List registers" "l" #'list-registers
|
||||
:desc "Number to register" "n" #'number-to-register
|
||||
:desc "Interactively choose a register" "r" #'counsel-register
|
||||
:desc "View a register" "v" #'view-register
|
||||
:desc "Window configuration to register" "w" #'window-configuration-to-register
|
||||
:desc "Increment register" "+" #'increment-register
|
||||
:desc "Point to register" "SPC" #'point-to-register))
|
||||
|
||||
(setq shell-file-name "/bin/fish"
|
||||
vterm-max-scrollback 5000)
|
||||
(map! :leader
|
||||
:desc "Vterm popup toggle" "v t" #'+vterm/toggle)
|
||||
|
||||
(defun prefer-horizontal-split ()
|
||||
(set-variable 'split-height-threshold nil t)
|
||||
(set-variable 'split-width-threshold 40 t)) ; make this as low as needed
|
||||
(add-hook 'markdown-mode-hook 'prefer-horizontal-split)
|
||||
(map! :leader
|
||||
:desc "Clone indirect buffer other window" "b c" #'clone-indirect-buffer-other-window)
|
||||
|
||||
(map! :leader
|
||||
(:prefix ("w" . "window")
|
||||
:desc "Winner redo" "<right>" #'winner-redo
|
||||
:desc "Winner undo" "<left>" #'winner-undo))
|
||||
|
||||
(map! :leader
|
||||
:desc "Zap to char" "z" #'zap-to-char
|
||||
:desc "Zap up to char" "Z" #'zap-up-to-char)
|
||||
|
||||
(set-frame-parameter nil 'alpha-background 90) ; For current frame
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 90)) ; For all new frames henceforth
|
|
@ -1,711 +0,0 @@
|
|||
#+TITLE: DRK's Doom Emacs Config
|
||||
#+AUTHOR: Clay Gomera (Drake)
|
||||
#+DESCRIPTION: DRK's personal Doom Emacs config.
|
||||
#+STARTUP: showeverything
|
||||
#+PROPERTY: header-args :tangle config.el
|
||||
|
||||
* TABLE OF CONTENTS :toc:
|
||||
- [[#about-this-config][ABOUT THIS CONFIG]]
|
||||
- [[#beacon][BEACON]]
|
||||
- [[#bookmarks-and-buffers][BOOKMARKS AND BUFFERS]]
|
||||
- [[#bookmarks][Bookmarks]]
|
||||
- [[#buffers][Buffers]]
|
||||
- [[#global-auto-revert][Global Auto Revert]]
|
||||
- [[#keybindings-within-ibuffer-mode][Keybindings within ibuffer mode]]
|
||||
- [[#calendar][CALENDAR]]
|
||||
- [[#clippy][CLIPPY]]
|
||||
- [[#dired][DIRED]]
|
||||
- [[#keybindings-within-dired-with-peep-dired-mode-enabled][Keybindings Within Dired With Peep-Dired-Mode Enabled]]
|
||||
- [[#making-deleted-files-go-to-trash-can][Making deleted files go to trash can]]
|
||||
- [[#doom-theme][DOOM THEME]]
|
||||
- [[#emojis][EMOJIS]]
|
||||
- [[#fonts][FONTS]]
|
||||
- [[#insert-date][INSERT DATE]]
|
||||
- [[#ivy][IVY]]
|
||||
- [[#ivy-posframe][IVY-POSFRAME]]
|
||||
- [[#ivy-keybindings][IVY KEYBINDINGS]]
|
||||
- [[#line-settings][LINE SETTINGS]]
|
||||
- [[#markdown][MARKDOWN]]
|
||||
- [[#modeline][MODELINE]]
|
||||
- [[#mouse-support][MOUSE SUPPORT]]
|
||||
- [[#neotree][NEOTREE]]
|
||||
- [[#open-specific-files][OPEN SPECIFIC FILES]]
|
||||
- [[#org-mode][ORG MODE]]
|
||||
- [[#org-publish][Org-publish]]
|
||||
- [[#org-auto-tangle][Org-auto-tangle]]
|
||||
- [[#rainbow-mode][RAINBOW MODE]]
|
||||
- [[#registers][REGISTERS]]
|
||||
- [[#shells][SHELLS]]
|
||||
- [[#splits][SPLITS]]
|
||||
- [[#winner-mode][WINNER MODE]]
|
||||
- [[#zap-to-char][ZAP TO CHAR]]
|
||||
- [[#transparent][TRANSPARENT]]
|
||||
|
||||
* ABOUT THIS CONFIG
|
||||
This is my personal Doom Emacs config. Doom Emacs is a distribution of Emacs
|
||||
that uses the "evil" keybindings (Vim keybindings) and includes a number of nice
|
||||
extensions and a bit of configuration out of the box. I am maintaining this
|
||||
config not just for myself, but also for those that want to explore some of what
|
||||
is possible with Emacs. I will add a lot of examples of plugins and settings,
|
||||
some of them I may not even use personally. I do this because many people
|
||||
following me on YouTube look at my configs as "documentation". This config is
|
||||
based on DistroTube's config.
|
||||
|
||||
* BEACON
|
||||
Never lose your cursor. When you scroll, your cursor will shine! This is a
|
||||
global minor-mode. Turn it on everywhere with:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(beacon-mode 1)
|
||||
#+end_src
|
||||
|
||||
* BOOKMARKS AND BUFFERS
|
||||
Doom Emacs uses 'SPC b' for keybindings related to bookmarks and buffers.
|
||||
|
||||
** Bookmarks
|
||||
Bookmarks are somewhat like registers in that they record positions you can jump
|
||||
to. Unlike registers, they have long names, and they persist automatically from
|
||||
one Emacs session to the next. The prototypical use of bookmarks is to record
|
||||
where you were reading in various files.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(map! :leader
|
||||
(:prefix ("b". "buffer")
|
||||
:desc "List bookmarks" "L" #'list-bookmarks
|
||||
:desc "Save current bookmarks to bookmark file" "w" #'bookmark-save))
|
||||
#+END_SRC
|
||||
|
||||
** Buffers
|
||||
Regarding /buffers/, the text you are editing in Emacs resides in an object called
|
||||
a /buffer/. Each time you visit a file, a buffer is used to hold the file’s text.
|
||||
Each time you invoke Dired, a buffer is used to hold the directory listing.
|
||||
/Ibuffer/ is a program that lists all of your Emacs /buffers/, allowing you to
|
||||
navigate between them and filter them.
|
||||
|
||||
| COMMAND | DESCRIPTION | KEYBINDING |
|
||||
|-----------------+----------------------+------------|
|
||||
| ibuffer | Launch ibuffer | SPC b i |
|
||||
| kill-buffer | Kill current buffer | SPC b k |
|
||||
| next-buffer | Goto next buffer | SPC b n |
|
||||
| previous-buffer | Goto previous buffer | SPC b p |
|
||||
| save-buffer | Save current buffer | SPC b s |
|
||||
|
||||
** Global Auto Revert
|
||||
A buffer can get out of sync with respect to its visited file on disk if that
|
||||
file is changed by another program. To keep it up to date, you can enable Auto
|
||||
Revert mode by typing M-x auto-revert-mode, or you can set it to be turned on
|
||||
globally with 'global-auto-revert-mode'. I have also turned on Global Auto
|
||||
Revert on non-file buffers, which is especially useful for 'dired' buffers.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(global-auto-revert-mode 1)
|
||||
(setq global-auto-revert-non-file-buffers t)
|
||||
#+end_src
|
||||
|
||||
** Keybindings within ibuffer mode
|
||||
|
||||
| COMMAND | DESCRIPTION | KEYBINDING |
|
||||
|-----------------------------------+----------------------------------------+------------|
|
||||
| ibuffer-mark-forward | Mark the buffer | m |
|
||||
| ibuffer-unmark-forward | Unmark the buffer | u |
|
||||
| ibuffer-do-kill-on-deletion-marks | Kill the marked buffers | x |
|
||||
| ibuffer-filter-by-content | Ibuffer filter by content | f c |
|
||||
| ibuffer-filter-by-directory | Ibuffer filter by directory | f d |
|
||||
| ibuffer-filter-by-filename | Ibuffer filter by filename (full path) | f f |
|
||||
| ibuffer-filter-by-mode | Ibuffer filter by mode | f m |
|
||||
| ibuffer-filter-by-name | Ibuffer filter by name | f n |
|
||||
| ibuffer-filter-disable | Disable ibuffer filter | f x |
|
||||
| ibuffer-do-kill-lines | Hide marked buffers | g h |
|
||||
| ibuffer-update | Restore hidden buffers | g H |
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(evil-define-key 'normal ibuffer-mode-map
|
||||
(kbd "f c") 'ibuffer-filter-by-content
|
||||
(kbd "f d") 'ibuffer-filter-by-directory
|
||||
(kbd "f f") 'ibuffer-filter-by-filename
|
||||
(kbd "f m") 'ibuffer-filter-by-mode
|
||||
(kbd "f n") 'ibuffer-filter-by-name
|
||||
(kbd "f x") 'ibuffer-filter-disable
|
||||
(kbd "g h") 'ibuffer-do-kill-lines
|
||||
(kbd "g H") 'ibuffer-update)
|
||||
#+end_src
|
||||
|
||||
* CALENDAR
|
||||
Let's make a 12-month calendar available so we can have a calendar app that,
|
||||
when we click on time/date in xmobar, we get a nice 12-month calendar to view.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
;; https://stackoverflow.com/questions/9547912/emacs-calendar-show-more-than-3-months
|
||||
(defun drk/year-calendar (&optional year)
|
||||
(interactive)
|
||||
(require 'calendar)
|
||||
(let* (
|
||||
(current-year (number-to-string (nth 5 (decode-time (current-time)))))
|
||||
(month 0)
|
||||
(year (if year year (string-to-number (format-time-string "%Y" (current-time))))))
|
||||
(switch-to-buffer (get-buffer-create calendar-buffer))
|
||||
(when (not (eq major-mode 'calendar-mode))
|
||||
(calendar-mode))
|
||||
(setq displayed-month month)
|
||||
(setq displayed-year year)
|
||||
(setq buffer-read-only nil)
|
||||
(erase-buffer)
|
||||
;; horizontal rows
|
||||
(dotimes (j 4)
|
||||
;; vertical columns
|
||||
(dotimes (i 3)
|
||||
(calendar-generate-month
|
||||
(setq month (+ month 1))
|
||||
year
|
||||
;; indentation / spacing between months
|
||||
(+ 5 (* 25 i))))
|
||||
(goto-char (point-max))
|
||||
(insert (make-string (- 10 (count-lines (point-min) (point-max))) ?\n))
|
||||
(widen)
|
||||
(goto-char (point-max))
|
||||
(narrow-to-region (point-max) (point-max)))
|
||||
(widen)
|
||||
(goto-char (point-min))
|
||||
(setq buffer-read-only t)))
|
||||
|
||||
(defun drk/scroll-year-calendar-forward (&optional arg event)
|
||||
"Scroll the yearly calendar by year in a forward direction."
|
||||
(interactive (list (prefix-numeric-value current-prefix-arg)
|
||||
last-nonmenu-event))
|
||||
(unless arg (setq arg 0))
|
||||
(save-selected-window
|
||||
(if (setq event (event-start event)) (select-window (posn-window event)))
|
||||
(unless (zerop arg)
|
||||
(let* (
|
||||
(year (+ displayed-year arg)))
|
||||
(drk/year-calendar year)))
|
||||
(goto-char (point-min))
|
||||
(run-hooks 'calendar-move-hook)))
|
||||
|
||||
(defun drk/scroll-year-calendar-backward (&optional arg event)
|
||||
"Scroll the yearly calendar by year in a backward direction."
|
||||
(interactive (list (prefix-numeric-value current-prefix-arg)
|
||||
last-nonmenu-event))
|
||||
(drk/scroll-year-calendar-forward (- (or arg 1)) event))
|
||||
|
||||
(map! :leader
|
||||
:desc "Scroll year calendar backward" "<left>" #'drk/scroll-year-calendar-backward
|
||||
:desc "Scroll year calendar forward" "<right>" #'drk/scroll-year-calendar-forward)
|
||||
|
||||
(defalias 'year-calendar 'drk/year-calendar)
|
||||
#+end_src
|
||||
|
||||
* CLIPPY
|
||||
Gives us a popup box with "Clippy, the paper clip". You can make him say various
|
||||
things by calling 'clippy-say' function. But the more useful functions of
|
||||
clippy are the two describe functions provided: 'clippy-describe-function' and
|
||||
'clippy-describe-variable'. Hit the appropriate keybinding while the point is
|
||||
over a function/variable to call it. A popup with helpful clippy will appear,
|
||||
telling you about the function/variable (using describe-function and
|
||||
describe-variable respectively).
|
||||
|
||||
| COMMAND | DESCRIPTION | KEYBINDING |
|
||||
|--------------------------+---------------------------------------+------------|
|
||||
| clippy-describe-function | /Clippy describes function under point/ | SPC c h f |
|
||||
| clippy-describe-variable | /Clippy describes variable under point/ | SPC c h v |
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(map! :leader
|
||||
(:prefix ("c h" . "Help info from Clippy")
|
||||
:desc "Clippy describes function under point" "f" #'clippy-describe-function
|
||||
:desc "Clippy describes variable under point" "v" #'clippy-describe-variable))
|
||||
#+end_src
|
||||
|
||||
* DIRED
|
||||
Dired is the file manager within Emacs.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
;; With dired-open plugin, you can launch external programs for certain
|
||||
;; extensions For example, I set all .png files to open in 'vimiv' and all .mp4
|
||||
;; files to open in 'mpv'
|
||||
(setq dired-open-extensions '(("gif" . "vimiv")
|
||||
("jpg" . "vimiv")
|
||||
("png" . "vimiv")
|
||||
("mkv" . "mpv")
|
||||
("mp4" . "mpv")))
|
||||
#+end_src
|
||||
|
||||
** Keybindings Within Dired With Peep-Dired-Mode Enabled
|
||||
If peep-dired is enabled, you will get image previews as you go up/down with 'j'
|
||||
and 'k'
|
||||
|
||||
| COMMAND | DESCRIPTION | KEYBINDING |
|
||||
|----------------------+------------------------------------------+------------|
|
||||
| peep-dired | /Toggle previews within dired/ | SPC d p |
|
||||
| peep-dired-next-file | /Move to next file in peep-dired-mode/ | j |
|
||||
| peep-dired-prev-file | /Move to previous file in peep-dired-mode/ | k |
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(evil-define-key 'normal peep-dired-mode-map
|
||||
(kbd "j") 'peep-dired-next-file
|
||||
(kbd "k") 'peep-dired-prev-file)
|
||||
(add-hook 'peep-dired-hook 'evil-normalize-keymaps)
|
||||
#+END_SRC
|
||||
|
||||
** Making deleted files go to trash can
|
||||
#+begin_src emacs-lisp
|
||||
(setq delete-by-moving-to-trash t
|
||||
trash-directory "~/.local/share/Trash/files/")
|
||||
#+end_src
|
||||
|
||||
* DOOM THEME
|
||||
Setting the theme to doom-one. To try out new themes, I set a keybinding for
|
||||
counsel-load-theme with 'SPC h t'.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq doom-theme 'catppuccin)
|
||||
(map! :leader
|
||||
:desc "Load new theme" "h t" #'load-theme)
|
||||
(setq catppuccin-flavor 'mocha) ;; or 'latte, 'macchiato, or 'mocha
|
||||
#+END_SRC
|
||||
|
||||
* EMOJIS
|
||||
Emojify is an Emacs extension to display emojis. It can display github style
|
||||
emojis like :smile: or plain ascii ones like :).
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package emojify
|
||||
:hook (after-init . global-emojify-mode))
|
||||
#+end_src
|
||||
|
||||
* FONTS
|
||||
Settings related to fonts within Doom Emacs:
|
||||
+ 'doom-font' -- standard monospace font that is used for most things in Emacs.
|
||||
+ 'doom-variable-pitch-font' -- variable font which is useful in some Emacs plugins.
|
||||
+ 'doom-big-font' -- used in doom-big-font-mode; useful for presentations.
|
||||
+ 'font-lock-comment-face' -- for comments.
|
||||
+ 'font-lock-keyword-face' -- for keywords with special significanclike 'setq' in elisp.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq doom-font (font-spec :family "Mononoki Nerd Font" :size 18)
|
||||
doom-variable-pitch-font (font-spec :family "Mononoki Nerd Font" :size 18)
|
||||
doom-big-font (font-spec :family "Mononoki Nerd Font" :size 24))
|
||||
(after! doom-themes
|
||||
(setq doom-themes-enable-bold t
|
||||
doom-themes-enable-italic t))
|
||||
(custom-set-faces!
|
||||
'(font-lock-comment-face :slant italic)
|
||||
'(font-lock-keyword-face :slant italic))
|
||||
#+END_SRC
|
||||
|
||||
* INSERT DATE
|
||||
Some custom functions to insert the date. The function 'insert-todays-date' can
|
||||
be used one of three different ways: (1) just the keybinding without the
|
||||
universal argument prefix, (2) with one universal argument prefix, or (3) with
|
||||
two universal argument prefixes. The universal argument prefix is 'SPC-u' in
|
||||
Doom Emacs (C-u in standard GNU Emacs). The function 'insert-any-date' only
|
||||
outputs to one format, which is the same format as 'insert-todays-date' without
|
||||
a prefix.
|
||||
|
||||
| COMMAND | EXAMPLE OUTPUT | KEYBINDING |
|
||||
|------------------------+---------------------------+-----------------------|
|
||||
| drk/insert-todays-date | Friday, November 19, 2021 | SPC i d t |
|
||||
| drk/insert-todays-date | 11-19-2021 | SPC u SPC i d t |
|
||||
| drk/insert-todays-date | 2021-11-19 | SPC u SPC u SPC i d t |
|
||||
| drk/insert-any-date | Friday, November 19, 2021 | SPC i d a |
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(defun drk/insert-todays-date (prefix)
|
||||
(interactive "P")
|
||||
(let ((format (cond
|
||||
((not prefix) "%A, %B %d, %Y")
|
||||
((equal prefix '(4)) "%m-%d-%Y")
|
||||
((equal prefix '(16)) "%Y-%m-%d"))))
|
||||
(insert (format-time-string format))))
|
||||
|
||||
(require 'calendar)
|
||||
(defun drk/insert-any-date (date)
|
||||
"Insert DATE using the current locale."
|
||||
(interactive (list (calendar-read-date)))
|
||||
(insert (calendar-date-string date)))
|
||||
|
||||
(map! :leader
|
||||
(:prefix ("i d" . "Insert date")
|
||||
:desc "Insert any date" "a" #'drk/insert-any-date
|
||||
:desc "Insert todays date" "t" #'drk/insert-todays-date))
|
||||
#+end_src
|
||||
|
||||
* IVY
|
||||
Ivy is a generic completion mechanism for Emacs.
|
||||
|
||||
** IVY-POSFRAME
|
||||
Ivy-posframe is an ivy extension, which lets ivy use posframe to show its
|
||||
candidate menu. Some of the settings below involve:
|
||||
+ ivy-posframe-display-functions-alist -- sets the display position for specific
|
||||
programs
|
||||
+ ivy-posframe-height-alist -- sets the height of the list displayed for
|
||||
specific programs
|
||||
|
||||
Available functions (positions) for 'ivy-posframe-display-functions-alist'
|
||||
+ ivy-posframe-display-at-frame-center
|
||||
+ ivy-posframe-display-at-window-center
|
||||
+ ivy-posframe-display-at-frame-bottom-left
|
||||
+ ivy-posframe-display-at-window-bottom-left
|
||||
+ ivy-posframe-display-at-frame-bottom-window-center
|
||||
+ ivy-posframe-display-at-point
|
||||
+ ivy-posframe-display-at-frame-top-center
|
||||
|
||||
=NOTE:= If the setting for 'ivy-posframe-display' is set to 'nil' (false),
|
||||
anything that is set to 'ivy-display-function-fallback' will just default to
|
||||
their normal position in Doom Emacs (usually a bottom split). However, if this
|
||||
is set to 't' (true), then the fallback position will be centered in the window.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq ivy-posframe-display-functions-alist
|
||||
'((swiper . ivy-posframe-display-at-point)
|
||||
(complete-symbol . ivy-posframe-display-at-point)
|
||||
(counsel-M-x . ivy-display-function-fallback)
|
||||
(counsel-esh-history . ivy-posframe-display-at-window-center)
|
||||
(counsel-describe-function . ivy-display-function-fallback)
|
||||
(counsel-describe-variable . ivy-display-function-fallback)
|
||||
(counsel-find-file . ivy-display-function-fallback)
|
||||
(counsel-recentf . ivy-display-function-fallback)
|
||||
(counsel-register . ivy-posframe-display-at-frame-bottom-window-center)
|
||||
(dmenu . ivy-posframe-display-at-frame-top-center)
|
||||
(nil . ivy-posframe-display))
|
||||
ivy-posframe-height-alist
|
||||
'((swiper . 20)
|
||||
(dmenu . 20)
|
||||
(t . 10)))
|
||||
(ivy-posframe-mode 1) ; 1 enables posframe-mode, 0 disables it.
|
||||
#+END_SRC
|
||||
|
||||
** IVY KEYBINDINGS
|
||||
By default, Doom Emacs does not use 'SPC v', so the format I use for these
|
||||
bindings is 'SPC v' plus 'key'.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(map! :leader
|
||||
(:prefix ("v" . "Ivy")
|
||||
:desc "Ivy push view" "v p" #'ivy-push-view
|
||||
:desc "Ivy switch view" "v s" #'ivy-switch-view))
|
||||
#+END_SRC
|
||||
|
||||
* LINE SETTINGS
|
||||
I set comment-line to 'SPC TAB TAB' which is a rather comfortable keybinding for
|
||||
me on my ZSA Moonlander keyboard. The standard Emacs keybinding for
|
||||
comment-line is 'C-x C-;'. The other keybindings are for commands that toggle
|
||||
on/off various line-related settings. Doom Emacs uses 'SPC t' for "toggle"
|
||||
commands, so I choose 'SPC t' plus 'key' for those bindings.
|
||||
|
||||
| COMMAND | DESCRIPTION | KEYBINDING |
|
||||
|--------------------------+-------------------------------------------+-------------|
|
||||
| comment-line | /Comment or uncomment lines/ | SPC TAB TAB |
|
||||
| hl-line-mode | /Toggle line highlighting in current frame/ | SPC t h |
|
||||
| global-hl-line-mode | /Toggle line highlighting globally/ | SPC t H |
|
||||
| doom/toggle-line-numbers | /Toggle line numbers/ | SPC t l |
|
||||
| toggle-truncate-lines | /Toggle truncate lines/ | SPC t t |
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq display-line-numbers-type t)
|
||||
(map! :leader
|
||||
:desc "Comment or uncomment lines" "TAB TAB" #'comment-line
|
||||
(:prefix ("t" . "toggle")
|
||||
:desc "Toggle line numbers" "l" #'doom/toggle-line-numbers
|
||||
:desc "Toggle line highlight in frame" "h" #'hl-line-mode
|
||||
:desc "Toggle line highlight globally" "H" #'global-hl-line-mode
|
||||
:desc "Toggle truncate lines" "t" #'toggle-truncate-lines))
|
||||
#+END_SRC
|
||||
|
||||
* MARKDOWN
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(custom-set-faces
|
||||
'(markdown-header-face ((t (:inherit font-lock-function-name-face :weight bold :family "Mononoki Nerd Font"))))
|
||||
'(markdown-header-face-1 ((t (:inherit markdown-header-face :height 1.7))))
|
||||
'(markdown-header-face-2 ((t (:inherit markdown-header-face :height 1.6))))
|
||||
'(markdown-header-face-3 ((t (:inherit markdown-header-face :height 1.5))))
|
||||
'(markdown-header-face-4 ((t (:inherit markdown-header-face :height 1.4))))
|
||||
'(markdown-header-face-5 ((t (:inherit markdown-header-face :height 1.3))))
|
||||
'(markdown-header-face-6 ((t (:inherit markdown-header-face :height 1.2)))))
|
||||
#+end_src
|
||||
|
||||
* MODELINE
|
||||
The modeline is the bottom status bar that appears in Emacs windows. For more
|
||||
information on what is available to configure in the Doom modeline, check out:
|
||||
https://github.com/seagle0128/doom-modeline
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(set-face-attribute 'mode-line nil :font "Mononoki Nerd Font-14")
|
||||
(setq doom-modeline-height 30 ;; sets modeline height
|
||||
doom-modeline-bar-width 5 ;; sets right bar width
|
||||
doom-modeline-persp-name t ;; adds perspective name to modeline
|
||||
doom-modeline-persp-icon t) ;; adds folder icon next to persp name
|
||||
#+end_src
|
||||
|
||||
* MOUSE SUPPORT
|
||||
Adding mouse support in the terminal version of Emacs.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(xterm-mouse-mode 1)
|
||||
#+end_src
|
||||
|
||||
* NEOTREE
|
||||
1. SPC + e to toggle neotree
|
||||
2. Make neotree prettier
|
||||
3. Every time when the neotree window is opened, let it find current file and jump to node.
|
||||
4. When running ‘projectile-switch-project’ (SPC p p), ‘neotree’ will change root automatically.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(map! :leader
|
||||
:desc "Toggle neotree" "e" #'neotree-toggle)
|
||||
(setq neo-theme 'nerd)
|
||||
(setq neo-smart-open t)
|
||||
(setq projectile-switch-project-action 'neotree-projectile-action)
|
||||
#+end_src
|
||||
|
||||
* OPEN SPECIFIC FILES
|
||||
Keybindings to open files that I work with all the time using the find-file
|
||||
command, which is the interactive file search that opens with 'C-x C-f' in GNU
|
||||
Emacs or 'SPC f f' in Doom Emacs. These keybindings use find-file
|
||||
non-interactively since we specify exactly what file to open. The format I use
|
||||
for these bindings is 'SPC =' plus 'key' since Doom Emacs does not use 'SPC ='.
|
||||
|
||||
| PATH TO FILE | DESCRIPTION | KEYBINDING |
|
||||
|--------------------------------+-----------------------+------------|
|
||||
| ~/org/agenda.org | /Edit agenda file/ | SPC = a |
|
||||
| ~/.config/doom/config.org" | /Edit doom config.org/ | SPC = c |
|
||||
| ~/.config/doom/init.el" | /Edit doom init.el/ | SPC = i |
|
||||
| ~/.config/doom/packages.el" | /Edit doom packages.el/ | SPC = p |
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(map! :leader
|
||||
(:prefix ("=" . "open file")
|
||||
:desc "Edit agenda file" "a" #'(lambda () (interactive) (find-file "~/org/agenda.org"))
|
||||
:desc "Edit doom config.org" "c" #'(lambda () (interactive) (find-file "~/.config/doom/config.org"))
|
||||
:desc "Edit doom init.el" "i" #'(lambda () (interactive) (find-file "~/.config/doom/init.el"))
|
||||
:desc "Edit doom packages.el" "p" #'(lambda () (interactive) (find-file "~/.config/doom/packages.el"))))
|
||||
#+END_SRC
|
||||
|
||||
* ORG MODE
|
||||
I wrapped most of this block in (after! org). Without this, my settings might
|
||||
be evaluated too early, which will result in my settings being overwritten by
|
||||
Doom's defaults. I have also enabled org-journal, org-superstar and org-roam by
|
||||
adding (+journal +pretty +roam2) to the org section of my Doom Emacs init.el.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(map! :leader
|
||||
:desc "Org babel tangle" "m B" #'org-babel-tangle)
|
||||
(after! org
|
||||
(setq org-directory "~/org/"
|
||||
org-agenda-files '("~/org/agenda.org")
|
||||
org-default-notes-file (expand-file-name "notes.org" org-directory)
|
||||
org-ellipsis " ▼ "
|
||||
org-superstar-headline-bullets-list '("◉" "●" "○" "◆" "●" "○" "◆")
|
||||
org-superstar-item-bullet-alist '((?+ . ?➤) (?- . ?✦)) ; changes +/- symbols in item lists
|
||||
org-log-done 'time
|
||||
org-hide-emphasis-markers t
|
||||
;; ex. of org-link-abbrev-alist in action
|
||||
;; [[arch-wiki:Name_of_Page][Description]]
|
||||
org-link-abbrev-alist ; This overwrites the default Doom org-link-abbrev-list
|
||||
'(("google" . "http://www.google.com/search?q=")
|
||||
("arch-wiki" . "https://wiki.archlinux.org/index.php/")
|
||||
("ddg" . "https://duckduckgo.com/?q=")
|
||||
("wiki" . "https://en.wikipedia.org/wiki/"))
|
||||
org-todo-keywords ; This overwrites the default Doom org-todo-keywords
|
||||
'((sequence
|
||||
"TODO(t)" ; A task that is ready to be tackled
|
||||
"BLOG(b)" ; Blog writing assignments
|
||||
"GYM(g)" ; Things to accomplish at the gym
|
||||
"GAME(j)" ; Things to accomplish at the gym
|
||||
"PROJ(p)" ; A project that contains other tasks
|
||||
"VIDEO(v)" ; Video assignments
|
||||
"WAIT(w)" ; Something is holding up this task
|
||||
"|" ; The pipe necessary to separate "active" states and "inactive" states
|
||||
"DONE(d)" ; Task has been completed
|
||||
"CANCELLED(c)" )))) ; Task has been cancelled
|
||||
(setq org-agenda-custom-commands
|
||||
'(("p" "Priority view"
|
||||
((tags "PRIORITY=\"A\""
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "High priority unfinished tasks:")))
|
||||
(tags "PRIORITY=\"B\""
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Medium priority unfinished tasks:")))
|
||||
(tags "PRIORITY=\"C\""
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Low priority unfinished tasks:")))))
|
||||
("i" "INTEC view"
|
||||
((tags "homeworks"
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Pending homeworks:")))
|
||||
(tags "studies"
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Pending studies:")))
|
||||
(tags "exam"
|
||||
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
|
||||
(org-agenda-overriding-header "Pending exams:")))))
|
||||
))
|
||||
|
||||
(setq
|
||||
org-agenda-block-separator 985827
|
||||
org-fancy-priorities-list '("" "" "")
|
||||
org-priority-faces
|
||||
'((?A :foreground "#fb4934" :weight bold)
|
||||
(?B :foreground "#fabd2f" :weight bold)
|
||||
(?C :foreground "#83a598" :weight bold)))
|
||||
#+END_SRC
|
||||
|
||||
** Org-publish
|
||||
#+begin_src emacs-lisp
|
||||
(setq org-publish-use-timestamps-flag nil)
|
||||
(setq org-export-with-broken-links t)
|
||||
#+end_src
|
||||
|
||||
** Org-auto-tangle
|
||||
=org-auto-tangle= allows you to add the option =#+auto_tangle: t= in your Org file
|
||||
so that it automatically tangles when you save the document.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(use-package! org-auto-tangle
|
||||
:defer t
|
||||
:hook (org-mode . org-auto-tangle-mode)
|
||||
:config
|
||||
(setq org-auto-tangle-default t))
|
||||
#+end_src
|
||||
|
||||
* RAINBOW MODE
|
||||
Rainbox mode displays the actual color for any hex value color. It's such a
|
||||
nice feature that I wanted it turned on all the time, regardless of what mode I
|
||||
am in. The following creates a global minor mode for rainbow-mode and enables
|
||||
it.
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(define-globalized-minor-mode global-rainbow-mode rainbow-mode
|
||||
(lambda () (rainbow-mode 1)))
|
||||
(global-rainbow-mode 1 )
|
||||
#+end_src
|
||||
|
||||
* REGISTERS
|
||||
Emacs registers are compartments where you can save text, rectangles and
|
||||
positions for later use. Once you save text or a rectangle in a register, you
|
||||
can copy it into the buffer once or many times; once you save a position in a
|
||||
register, you can jump back to that position once or many times. The default
|
||||
GNU Emacs keybindings for these commands (with the exception of
|
||||
counsel-register) involves 'C-x r' followed by one or more other keys. I wanted
|
||||
to make this a little more user friendly, and since I am using Doom Emacs, I
|
||||
choose to replace the 'C-x r' part of the key chords with 'SPC r'.
|
||||
|
||||
| COMMAND | DESCRIPTION | KEYBINDING |
|
||||
|----------------------------------+----------------------------------+------------|
|
||||
| copy-to-register | /Copy to register/ | SPC r c |
|
||||
| frameset-to-register | /Frameset to register/ | SPC r f |
|
||||
| insert-register | /Insert contents of register/ | SPC r i |
|
||||
| jump-to-register | /Jump to register/ | SPC r j |
|
||||
| list-registers | /List registers/ | SPC r l |
|
||||
| number-to-register | /Number to register/ | SPC r n |
|
||||
| counsel-register | /Interactively choose a register/ | SPC r r |
|
||||
| view-register | /View a register/ | SPC r v |
|
||||
| window-configuration-to-register | /Window configuration to register/ | SPC r w |
|
||||
| increment-register | /Increment register/ | SPC r + |
|
||||
| point-to-register | /Point to register/ | SPC r SPC |
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(map! :leader
|
||||
(:prefix ("r" . "registers")
|
||||
:desc "Copy to register" "c" #'copy-to-register
|
||||
:desc "Frameset to register" "f" #'frameset-to-register
|
||||
:desc "Insert contents of register" "i" #'insert-register
|
||||
:desc "Jump to register" "j" #'jump-to-register
|
||||
:desc "List registers" "l" #'list-registers
|
||||
:desc "Number to register" "n" #'number-to-register
|
||||
:desc "Interactively choose a register" "r" #'counsel-register
|
||||
:desc "View a register" "v" #'view-register
|
||||
:desc "Window configuration to register" "w" #'window-configuration-to-register
|
||||
:desc "Increment register" "+" #'increment-register
|
||||
:desc "Point to register" "SPC" #'point-to-register))
|
||||
#+END_SRC
|
||||
|
||||
* SHELLS
|
||||
Settings for the various shells and terminal emulators within Emacs.
|
||||
+ 'shell-file-name' -- sets the shell to be used in M-x shell, M-x term, M-x
|
||||
ansi-term and M-x vterm.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq shell-file-name "/bin/fish"
|
||||
vterm-max-scrollback 5000)
|
||||
(map! :leader
|
||||
:desc "Vterm popup toggle" "v t" #'+vterm/toggle)
|
||||
#+END_SRC
|
||||
|
||||
* SPLITS
|
||||
I set splits to default to opening on the right using 'prefer-horizontal-split'.
|
||||
I set a keybinding for 'clone-indirect-buffer-other-window' for when I want to
|
||||
have the same document in two splits. The text of the indirect buffer is always
|
||||
identical to the text of its base buffer; changes made by editing either one are
|
||||
visible immediately in the other. But in all other respects, the indirect
|
||||
buffer and its base buffer are completely separate. For example, I can fold one
|
||||
split but other will be unfolded.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun prefer-horizontal-split ()
|
||||
(set-variable 'split-height-threshold nil t)
|
||||
(set-variable 'split-width-threshold 40 t)) ; make this as low as needed
|
||||
(add-hook 'markdown-mode-hook 'prefer-horizontal-split)
|
||||
(map! :leader
|
||||
:desc "Clone indirect buffer other window" "b c" #'clone-indirect-buffer-other-window)
|
||||
#+END_SRC
|
||||
|
||||
* WINNER MODE
|
||||
Winner mode has been included with GNU Emacs since version 20. This is a global
|
||||
minor mode and, when activated, it allows you to “undo” (and “redo”) changes in
|
||||
the window configuration with the key commands 'SCP w <left>' and 'SPC w
|
||||
<right>'.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(map! :leader
|
||||
(:prefix ("w" . "window")
|
||||
:desc "Winner redo" "<right>" #'winner-redo
|
||||
:desc "Winner undo" "<left>" #'winner-undo))
|
||||
#+END_SRC
|
||||
|
||||
* ZAP TO CHAR
|
||||
Emacs provides a 'zap-to-char' command that kills from the current point to a
|
||||
character. It is bound to 'M-z' in standard GNU Emacs but since Doom Emacs uses
|
||||
'SPC' as its leader key and does not have 'SPC z' binded to anything, it just
|
||||
makes since to use it for 'zap-to-char'. Note that 'zap-to-char' can be used
|
||||
with the universal argument 'SPC u' to modify its behavior. Examples of
|
||||
'zap-to-char' usage are listed in the table below:
|
||||
|
||||
| KEYBINDING | WHAT IS DOES |
|
||||
|---------------------------+------------------------------------------------------------|
|
||||
| SPC z e | deletes all chars to the next occurrence of 'e' |
|
||||
| SPC u 2 SPC z e | deletes all chars to the second occurrence of 'e' |
|
||||
| SPC u - SPC z e | deletes all chars to the previous occurrence of 'e' |
|
||||
| SPC u -2 SPC z e | deletes all chars to the fourth previous occurrence of 'e' |
|
||||
| SPC u 1 0 0 SPC u SPC z e | deletes all chars to the 100th occurrence of 'e' |
|
||||
|
||||
=TIP:= The universal argument (SPC u) can only take a single integer by default.
|
||||
If you need to use a multi-digit number (like 100 in the last example in the
|
||||
table above), then you must terminate the universal argument with another 'SPC
|
||||
u' after typing the number.
|
||||
|
||||
'zap-up-to-char' is an alternative command that does not zap the char specified.
|
||||
It is binded to 'SPC Z'. It can also be used in conjunction with the universal
|
||||
argument 'SPC u' in similar fashion to the the 'zap-to-char' examples above.
|
||||
|
||||
=NOTE:= Vim (evil mode) has similar functionality builtin. You can delete to the
|
||||
next occurrence of 'e' by using 'dte' in normal. To delete to the next
|
||||
occurrence of 'e' including the 'e', then you would use 'dfe'. And you can
|
||||
modify 'dt' and 'df' by prefixing them with numbers, so '2dte' would delete to
|
||||
the second occurrence of 'e'.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(map! :leader
|
||||
:desc "Zap to char" "z" #'zap-to-char
|
||||
:desc "Zap up to char" "Z" #'zap-up-to-char)
|
||||
#+END_SRC
|
||||
|
||||
|
||||
* TRANSPARENT
|
||||
Transparent window
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(set-frame-parameter nil 'alpha-background 90) ; For current frame
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 90)) ; For all new frames henceforth
|
||||
#+END_SRC
|
|
@ -1,195 +0,0 @@
|
|||
;;; 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 a link to Doom's Module Index where all
|
||||
;; of our modules are listed, including what flags they support.
|
||||
|
||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||
;; 'C-c c 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 c d') on a module to browse its
|
||||
;; directory (for easy access to its source code).
|
||||
|
||||
(doom! :input
|
||||
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||
;;chinese
|
||||
;;japanese
|
||||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
;;(corfu +orderless) ; complete with cap(f), cape and a flying feather!
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
;;ivy ; a search engine for love and life
|
||||
vertico ; the search engine of the future
|
||||
|
||||
: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
|
||||
(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
indent-guides ; highlighted indent columns
|
||||
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||
;;minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
;;nav-flash ; blink cursor line after big motions
|
||||
neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
;;tabs ; a tab bar for Emacs
|
||||
;;treemacs ; a project drawer, like neotree but cooler
|
||||
;;unicode ; extended unicode support for various languages
|
||||
(vc-gutter +pretty) ; 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 ; making dired pretty [functional]
|
||||
electric ; smarter, keyword-based electric-indent
|
||||
ibuffer ; interactive buffer management
|
||||
undo ; persistent, smarter undo for your inevitable mistakes
|
||||
vc ; version-control and Emacs, sitting in a tree
|
||||
|
||||
:term
|
||||
;;eshell ; the elisp shell that works everywhere
|
||||
;;shell ; simple shell REPL for Emacs
|
||||
;;term ; basic terminal emulator for Emacs
|
||||
vterm ; the best terminal emulation in Emacs
|
||||
|
||||
:checkers
|
||||
syntax ; tasing you for every semicolon you forget
|
||||
;;(spell +flyspell) ; tasing you for misspelling mispelling
|
||||
;;grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
;;ansible
|
||||
;;biblio ; Writes a PhD for you (citation needed)
|
||||
;;collab ; buffers with friends
|
||||
;;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)
|
||||
lookup ; navigate your code and its documentation
|
||||
lsp ; M-x vscode
|
||||
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
|
||||
;;taskrunner ; taskrunner for all your projects
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
;tree-sitter ; syntax and parsing, sitting in a tree...
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:os
|
||||
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
|
||||
;;tty ; improve the terminal Emacs experience
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;beancount ; mind the GAAP
|
||||
(cc +lsp) ; C > C++ == 1
|
||||
;;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 ; unity, .NET, and mono shenanigans
|
||||
;;data ; config/data formats
|
||||
(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
;;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
|
||||
;;factor
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
;;gdscript ; the language you waited for
|
||||
(go +lsp) ; the hipster dialect
|
||||
;;(graphql +lsp) ; Give queries a REST
|
||||
;;(haskell +lsp) ; a language that's lazier than I am
|
||||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
json ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
javascript ; 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 ; for folks with too much to prove
|
||||
;;ledger ; be audit you can be
|
||||
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
|
||||
;;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
|
||||
;;raku ; the artist formerly known as perl6
|
||||
rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
;;(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
web ; the tubes
|
||||
yaml ; JSON, but readable
|
||||
;;zig ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
:app
|
||||
calendar
|
||||
;;emms
|
||||
;;everywhere ; *leave* Emacs!? You must be joking
|
||||
;;irc ; how neckbeards socialize
|
||||
(rss +org) ; emacs as an RSS reader
|
||||
;;twitter ; twitter client https://twitter.com/vnought
|
||||
|
||||
:config
|
||||
;;literate
|
||||
(default +bindings +smartparens))
|
|
@ -1,83 +0,0 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; $DOOMDIR/packages.el
|
||||
|
||||
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||
;; use 'M-x doom/reload'.
|
||||
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;; (package! some-package)
|
||||
|
||||
;; To install a package directly from a remote git repo, you must specify a
|
||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||
;; https://github.com/radian-software/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, 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 radian-software/straight.el#279)
|
||||
;; (package! builtin-package :recipe (:branch "develop"))
|
||||
|
||||
;; Use `:pin' to specify a particular commit to install.
|
||||
;; (package! builtin-package :pin "1a2b3c4d5e")
|
||||
|
||||
|
||||
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||
;; (unpin! pinned-package)
|
||||
;; ...or multiple packages
|
||||
;; (unpin! pinned-package another-pinned-package)
|
||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||
;; (unpin! t)
|
||||
|
||||
(package! gitconfig-mode
|
||||
:recipe (:host github :repo "magit/git-modes"
|
||||
:files ("gitconfig-mode.el")))
|
||||
(package! gitignore-mode
|
||||
:recipe (:host github :repo "magit/git-modes"
|
||||
:files ("gitignore-mode.el")))
|
||||
(package! flycheck-aspell)
|
||||
(package! async)
|
||||
(package! dired-open)
|
||||
(package! dired-subtree)
|
||||
(package! esxml)
|
||||
(package! evil-tutor)
|
||||
(package! imenu-list)
|
||||
(package! ivy-posframe)
|
||||
(package! mw-thesaurus)
|
||||
(package! org-board)
|
||||
(package! org-web-tools)
|
||||
(package! org-auto-tangle)
|
||||
(package! peep-dired)
|
||||
(package! rainbow-mode)
|
||||
(package! request)
|
||||
(package! resize-window)
|
||||
(package! s)
|
||||
(package! tldr)
|
||||
(package! wc-mode)
|
||||
(package! beacon)
|
||||
(package! olivetti)
|
||||
(package! sharper)
|
||||
(package! csproj-mode)
|
||||
(package! dap-mode)
|
||||
(package! vimrc-mode)
|
||||
(package! catppuccin-theme)
|
|
@ -12,7 +12,7 @@ frame_color = "#89b4fa"
|
|||
separator_color= frame
|
||||
sort = yes
|
||||
idle_threshold = 120
|
||||
font = mononoki Nerd Font 14
|
||||
font = mononoki Nerd Font 10
|
||||
line_height = 0
|
||||
markup = full
|
||||
format = "<b>%s</b>\n%b"
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# First line removes the path; second line sets it. Without the first line,
|
||||
# your path gets massive and fish becomes very slow.
|
||||
set -e fish_user_paths
|
||||
set -U fish_user_paths $HOME/.bin $HOME/.local/bin $HOME/.go/bin $HOME/Applications /var/lib/flatpak/exports/bin/ $fish_user_paths
|
||||
set -U fish_user_paths $HOME/.bin $HOME/.local/bin $HOME/.go/bin $HOME/Applications $HOME/.local/share/JetBrains/Toolbox/scripts /var/lib/flatpak/exports/bin/ $fish_user_paths
|
||||
|
||||
### EXPORT ###
|
||||
set fish_greeting # Supresses fish's intro message
|
||||
|
@ -35,7 +35,6 @@ set fish_color_command brcyan
|
|||
set fish_color_error '#fb4934'
|
||||
set fish_color_param brcyan
|
||||
|
||||
|
||||
### FUNCTIONS ###
|
||||
# Functions needed for !! and !$
|
||||
function __history_previous_command
|
||||
|
@ -238,3 +237,4 @@ alias blt='bluetoothctl'
|
|||
|
||||
### SETTING THE STARSHIP PROMPT ###
|
||||
starship init fish | source
|
||||
zoxide init fish | source
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
gtk-theme-name="Catppuccin-Mocha-BL"
|
||||
gtk-theme-name="Catppuccin-Dark-BL-MB"
|
||||
gtk-icon-theme-name="Papirus-Dark"
|
||||
gtk-font-name="Inter 12"
|
||||
gtk-font-name="Inter 10"
|
||||
gtk-cursor-theme-name="Simp1e-Catppuccin-Mocha"
|
||||
gtk-cursor-theme-size=16
|
||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[Settings]
|
||||
gtk-theme-name=Catppuccin-Mocha-BL
|
||||
gtk-theme-name=Catppuccin-Dark-BL-MB
|
||||
gtk-icon-theme-name=Papirus-Dark
|
||||
gtk-font-name=Inter 12
|
||||
gtk-font-name=Inter 10
|
||||
gtk-cursor-theme-name=Simp1e-Catppuccin-Mocha
|
||||
gtk-cursor-theme-size=16
|
||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# ┻ ┻┛ ┗┛┗┛
|
||||
|
||||
general {
|
||||
lock_cmd = pidof lock || $HOME/.config/hypr/scripts/lock # avoid starting multiple hyprlock instances.
|
||||
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
||||
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
||||
}
|
||||
|
|
|
@ -8,9 +8,8 @@ exec-once = waybar
|
|||
exec-once = dunst --config $HOME/.config/dunst/dunstrc
|
||||
exec-once = wl-paste --type text --watch cliphist store
|
||||
exec-once = wl-paste --type image --watch cliphist store
|
||||
exec-once = swww-daemon
|
||||
exec-once = hyprpaper
|
||||
exec-once = hypridle
|
||||
exec-once = /usr/bin/emacs --daemon
|
||||
|
||||
# environment variables
|
||||
env = SSH_AUTH_SOCK,$XDG_RUNTIME_DIR/ssh-agent.socket
|
||||
|
@ -30,14 +29,17 @@ env = HYPRLAND_NO_SD_NOTIFY=0
|
|||
env = XKB_DEFAULT_LAYOUT,us
|
||||
env = ELECTRON_OZONE_PLATFORM_HINT,auto
|
||||
env = TERMINAL,kitty
|
||||
env = BROWSER,flatpak run org.mozilla.firefox
|
||||
env = BROWSER,flatpak run com.brave.Browser
|
||||
env = VIEWER,zathura
|
||||
env = RUNNER,rofi -dmenu
|
||||
env = RUNNER_EX,rofi -show drun
|
||||
|
||||
# monitor settings
|
||||
monitor = eDP-1, preferred, auto, 1
|
||||
monitor = HDMI-A-1, preferred, auto, 1, mirror, eDP-1
|
||||
monitor = eDP-1, preferred, -1920x0, 1
|
||||
monitor = DP-1, highrr, 0x0, 1
|
||||
monitor = HDMI-A-2, highrr, 1920x0, 1
|
||||
# monitor = eDP-1, preferred, -1920x0, 1
|
||||
# monitor = HDMI-A-2, preferred, auto, 1, mirror, eDP-1
|
||||
bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "eDP-1, preferred, auto, 1"
|
||||
bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "eDP-1, disable"
|
||||
|
||||
|
@ -75,7 +77,7 @@ dwindle {
|
|||
|
||||
master {
|
||||
no_gaps_when_only = true
|
||||
new_is_master = false
|
||||
new_status = slave
|
||||
drop_at_cursor = false
|
||||
orientation = left
|
||||
mfact = 0.50
|
||||
|
@ -91,6 +93,11 @@ misc {
|
|||
mouse_move_focuses_monitor = true
|
||||
}
|
||||
|
||||
binds {
|
||||
workspace_center_on = 1
|
||||
allow_workspace_cycles = true
|
||||
}
|
||||
|
||||
# source
|
||||
source = ~/.config/hypr/animations.conf
|
||||
source = ~/.config/hypr/keybindings.conf
|
||||
|
|
62
.config/hypr/hyprlock.conf
Normal file
62
.config/hypr/hyprlock.conf
Normal file
|
@ -0,0 +1,62 @@
|
|||
# _ _ _
|
||||
# | |__ _ _ _ __ _ __| | ___ ___| | __
|
||||
# | '_ \| | | | '_ \| '__| |/ _ \ / __| |/ /
|
||||
# | | | | |_| | |_) | | | | (_) | (__| <
|
||||
# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\
|
||||
# |___/|_|
|
||||
|
||||
general {
|
||||
grace = 1
|
||||
}
|
||||
|
||||
background {
|
||||
monitor =
|
||||
path = $HOME/.config/hypr/wall/lock.png # only png supported for now
|
||||
blur_passes = 3 # 0 disables blurring
|
||||
blur_size = 3
|
||||
noise = 0.0117
|
||||
contrast = 0.8916
|
||||
brightness = 0.8172
|
||||
vibrancy = 0.1696
|
||||
vibrancy_darkness = 0.0
|
||||
}
|
||||
|
||||
input-field {
|
||||
monitor =
|
||||
size = 300, 50
|
||||
outline_thickness = 2
|
||||
dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true
|
||||
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
|
||||
outer_color = rgb(203, 166, 247)
|
||||
inner_color = rgb(30, 30, 46)
|
||||
font_color = rgb(205, 214, 244)
|
||||
fade_on_empty = false
|
||||
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
|
||||
placeholder_text = <span foreground="##cdd6f4" font_family="Inter">Input password...</span> # Text rendered in the input box when it's empty.
|
||||
hide_input = false
|
||||
rounding = -1 # -1 means complete rounding (circle/oval)
|
||||
check_color = rgb(249, 226, 175)
|
||||
fail_color = rgb(243, 139, 168) # if authentication failed, changes outer_color and fail message color
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
|
||||
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
|
||||
capslock_color = rgb(166, 227, 161)
|
||||
numlock_color = -1
|
||||
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
|
||||
invert_numlock = false # change color if numlock is off
|
||||
position = 0, -50
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$TIME"
|
||||
color = rgb(205, 214, 244)
|
||||
font_size = 92
|
||||
font_family = Inter Bold
|
||||
position = 0, 80
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
5
.config/hypr/hyprpaper.conf
Normal file
5
.config/hypr/hyprpaper.conf
Normal file
|
@ -0,0 +1,5 @@
|
|||
preload = $HOME/.config/hypr/wall/wall.png
|
||||
wallpaper = eDP-1,$HOME/.config/hypr/wall/wall.png
|
||||
wallpaper = HDMI-A-2,$HOME/.config/hypr/wall/wall.png
|
||||
wallpaper = DP-1,$HOME/.config/hypr/wall/wall.png
|
||||
splash = false
|
|
@ -35,16 +35,16 @@ bindm = $supMod, mouse:272, movewindow # window movement wi
|
|||
bindm = $supMod, mouse:273, resizewindow # window resizing with mouse
|
||||
|
||||
# workspaces binds
|
||||
bind = $supMod, 1, workspace, 1 # switch to workspace 1
|
||||
bind = $supMod, 2, workspace, 2 # switch to workspace 2
|
||||
bind = $supMod, 3, workspace, 3 # switch to workspace 3
|
||||
bind = $supMod, 4, workspace, 4 # switch to workspace 4
|
||||
bind = $supMod, 5, workspace, 5 # switch to workspace 5
|
||||
bind = $supMod, 6, workspace, 6 # switch to workspace 6
|
||||
bind = $supMod, 7, workspace, 7 # switch to workspace 7
|
||||
bind = $supMod, 8, workspace, 8 # switch to workspace 8
|
||||
bind = $supMod, 9, workspace, 9 # switch to workspace 9
|
||||
bind = $supMod, 0, workspace, 10 # switch to workspace 10
|
||||
bind = $supMod, 1, focusworkspaceoncurrentmonitor, 1 # switch to workspace 1
|
||||
bind = $supMod, 2, focusworkspaceoncurrentmonitor, 2 # switch to workspace 2
|
||||
bind = $supMod, 3, focusworkspaceoncurrentmonitor, 3 # switch to workspace 3
|
||||
bind = $supMod, 4, focusworkspaceoncurrentmonitor, 4 # switch to workspace 4
|
||||
bind = $supMod, 5, focusworkspaceoncurrentmonitor, 5 # switch to workspace 5
|
||||
bind = $supMod, 6, focusworkspaceoncurrentmonitor, 6 # switch to workspace 6
|
||||
bind = $supMod, 7, focusworkspaceoncurrentmonitor, 7 # switch to workspace 7
|
||||
bind = $supMod, 8, focusworkspaceoncurrentmonitor, 8 # switch to workspace 8
|
||||
bind = $supMod, 9, focusworkspaceoncurrentmonitor, 9 # switch to workspace 9
|
||||
bind = $supMod, 0, focusworkspaceoncurrentmonitor, 10 # switch to workspace 10
|
||||
|
||||
bind = $supMod_SHIFT, 1, movetoworkspace, 1 # move active window to workspace 1
|
||||
bind = $supMod_SHIFT, 2, movetoworkspace, 2 # move active window to workspace 2
|
||||
|
@ -98,11 +98,12 @@ binde = $supMod_$altMod, m, exec, kitty --class ytfzf_music ytfzf -mlstT kitty
|
|||
binde = $supMod_$altMod, f, exec, kitty --class flix_cli flix-cli # launch torrent movie player
|
||||
binde = $supMod_$altMod, a, exec, kitty --class ani_cli ani-cli # launch anime player
|
||||
binde = $supMod_$altMod, b, exec, kitty --class btop btop # launch resource monitor
|
||||
binde = $supMod_$altMod, h, exec, kitty --class htop htop # launch resource monitor
|
||||
binde = $supMod_$altMod, p, exec, kitty --class pulsemixer pulsemixer # launch audio mixer
|
||||
binde = $supMod_$conMod, f, exec, kitty --class file_manager yazi # launch file manager
|
||||
binde = $supMod_$conMod, e, exec, /usr/bin/emacsclient -c -a 'emacs' # launch text editor
|
||||
binde = $supMod_$conMod, e, exec, kitty --class editor $HOME/.local/bin/lvim # launch text editor
|
||||
binde = $supMod_$conMod, m, exec, kitty --class music_player cmus # launch music player
|
||||
binde = $supMod_$conMod, r, exec, kitty --class newsboat newsboat # launch rss feed reader
|
||||
binde = $supMod_$conMod, w, exec, flatpak run org.mozilla.firefox # launch web browser
|
||||
binde = $supMod_$conMod, w, exec, flatpak run com.brave.Browser # launch web browser
|
||||
binde = $supMod_$conMod, c, exec, flatpak run org.signal.Signal # launch chat app
|
||||
binde = $supMod_$conMod, p, exec, flatpak run com.bitwarden.desktop # launch password manager
|
||||
|
|
|
@ -15,6 +15,8 @@ windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$
|
|||
windowrulev2 = float,class:^(com.obsproject.Studio)$,title:^(Controls)$
|
||||
windowrulev2 = float,class:^(qalculate-gtk)$
|
||||
windowrulev2 = float,class:^(xdg-desktop-portal-gtk)$
|
||||
windowrulev2 = float,class:^(xfce-polkit)$
|
||||
windowrulev2 = float,class:^(com.saivert.pwvucontrol)$
|
||||
|
||||
# ╻ ╻┏━┓┏━┓╻┏ ┏━┓┏━┓┏━┓┏━╸┏━╸ ┏━┓╻ ╻╻ ┏━╸┏━┓
|
||||
# ┃╻┃┃ ┃┣┳┛┣┻┓┗━┓┣━┛┣━┫┃ ┣╸ ┣┳┛┃ ┃┃ ┣╸ ┗━┓
|
||||
|
@ -41,6 +43,7 @@ windowrule = workspace 2, ^(wdisplays)$
|
|||
windowrule = workspace 2, ^(font-manager)$
|
||||
windowrule = workspace 2, ^(org.qbittorrent.qBittorrent)$
|
||||
windowrule = workspace 2, ^(btop)$
|
||||
windowrule = workspace 2, ^(htop)$
|
||||
windowrule = workspace 2, ^(file-roller)$
|
||||
|
||||
# workspace 3 - file management
|
||||
|
@ -53,7 +56,7 @@ windowrule = workspace 4, ^(org.qutebrowser.qutebrowser)$
|
|||
windowrule = workspace 4, ^(org.mozilla.firefox)$
|
||||
windowrule = workspace 4, ^(LibreWolf)$
|
||||
windowrule = workspace 4, ^(Chromium)$
|
||||
windowrule = workspace 4, ^(Brave-browser)$
|
||||
windowrule = workspace 4, ^(brave-browser)$
|
||||
windowrule = workspace 4, ^(newsboat)$
|
||||
windowrule = workspace 4, ^(org.kde.akregator)$
|
||||
windowrule = workspace 4, ^(io.gitlab.news_flash.NewsFlash)$
|
||||
|
@ -140,3 +143,9 @@ windowrule = workspace 10, ^(duckstation-qt)$
|
|||
windowrule = workspace 10, ^(pcsx2-qt)$
|
||||
windowrule = workspace 10, ^(info.cemu.Cemu)$
|
||||
windowrule = workspace 10, ^(org.ppsspp.PPSSPP)$
|
||||
|
||||
windowrulev2 = fullscreen,class:^steam_app\d+$
|
||||
windowrulev2 = workspace 10,class:^steam_app_\d+$
|
||||
windowrulev2 = fullscreen,class:^lutris\d+$
|
||||
windowrulev2 = workspace 10,class:^lutris\d+$
|
||||
workspace = 10, border:false, rounding:false
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
currwall=$(swww query | awk '{print $8}')
|
||||
|
||||
swaylock -f -i "$currwall"
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
env = XCURSOR_THEME,Simp1e-Catppuccin-Mocha
|
||||
env = XCURSOR_SIZE,16
|
||||
env = GTK_THEME,Catppuccin-Mocha-BL
|
||||
env = GTK_THEME,Catppuccin-Dark-BL-MB
|
||||
|
||||
exec = hyprctl setcursor Simp1e-Catppuccin-Mocha 16
|
||||
exec = gsettings set org.gnome.desktop.interface cursor-theme 'Simp1e-Catppuccin-Mocha'
|
||||
exec = gsettings set org.gnome.desktop.interface cursor-size 16
|
||||
exec = gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark'
|
||||
exec = gsettings set org.gnome.desktop.interface gtk-theme 'Catppuccin-Mocha-BL'
|
||||
exec = gsettings set org.gnome.desktop.interface gtk-theme 'Catppuccin-Dark-BL-MB'
|
||||
exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
||||
|
||||
general {
|
||||
|
@ -52,8 +52,8 @@ decoration {
|
|||
# ┣╸ ┃ ┃┃┗┫ ┃
|
||||
# ╹ ┗━┛╹ ╹ ╹
|
||||
|
||||
exec = gsettings set org.gnome.desktop.interface font-name 'Inter 12'
|
||||
exec = gsettings set org.gnome.desktop.interface document-font-name 'Liberation Sans 12'
|
||||
exec = gsettings set org.gnome.desktop.interface monospace-font-name 'Mononoki Nerd Font 12'
|
||||
exec = gsettings set org.gnome.desktop.interface font-name 'Inter 10'
|
||||
exec = gsettings set org.gnome.desktop.interface document-font-name 'Liberation Sans 10'
|
||||
exec = gsettings set org.gnome.desktop.interface monospace-font-name 'Mononoki Nerd Font 10'
|
||||
exec = gsettings set org.gnome.desktop.interface font-antialiasing 'rgba'
|
||||
exec = gsettings set org.gnome.desktop.interface font-hinting 'full'
|
||||
|
|
BIN
.config/hypr/wall/lock.png
Normal file
BIN
.config/hypr/wall/lock.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 MiB |
BIN
.config/hypr/wall/wall.png
Normal file
BIN
.config/hypr/wall/wall.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 MiB |
|
@ -4,7 +4,7 @@ font_family Mononoki Nerd Font
|
|||
bold_font auto
|
||||
italic_font auto
|
||||
bold_italic_font auto
|
||||
font_size 14.0
|
||||
font_size 12.0
|
||||
shell fish
|
||||
confirm_os_window_close 0
|
||||
background_opacity 0.95
|
||||
|
|
|
@ -21,14 +21,12 @@ lvim.builtin.alpha.mode = "dashboard"
|
|||
lvim.builtin.terminal.active = true
|
||||
lvim.builtin.nvimtree.setup.view.side = "left"
|
||||
lvim.builtin.nvimtree.setup.renderer.icons.show.git = false
|
||||
lvim.builtin.lualine.style = "default"
|
||||
|
||||
lvim.builtin.treesitter.ensure_installed = {
|
||||
"bash",
|
||||
"c",
|
||||
"javascript",
|
||||
"json",
|
||||
"lua",
|
||||
"python",
|
||||
"typescript",
|
||||
"tsx",
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
fg-col2: @blue;
|
||||
|
||||
width: 800px;
|
||||
font: "Mononoki Nerd Font 12";
|
||||
font: "Mononoki Nerd Font 10";
|
||||
}
|
||||
|
||||
element-text, element-icon , mode-switcher {
|
||||
|
|
|
@ -29,7 +29,7 @@ CheckDependencies() {
|
|||
fi
|
||||
|
||||
local missing_deps=()
|
||||
for dep in swww; do
|
||||
for dep in hyprpaper; do
|
||||
if ! command -v "$dep" &> /dev/null; then
|
||||
missing_deps+=("$dep")
|
||||
fi
|
||||
|
@ -49,9 +49,14 @@ CheckDependencies() {
|
|||
CheckDependencies
|
||||
|
||||
cd "$walldir" || exit 1
|
||||
wallpaper=$(fd -p "$walldir" | $RUNNER -i -p " Wallpaper Selector")
|
||||
wallpaper=$(fd -p "$walldir" | $RUNNER -only-match -i -p " Wallpaper Selector")
|
||||
if [ -n "$wallpaper" ]; then
|
||||
swww img "$wallpaper"
|
||||
cp "$wallpaper" "$HOME/.config/hypr/wall/wall.png"
|
||||
cp "$wallpaper" "$HOME/.config/hypr/wall/lock.png"
|
||||
pidof hyprpaper && pkill hyprpaper
|
||||
sleep 0.5
|
||||
hyprpaper &
|
||||
disown
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
# This file is written by xdg-user-dirs-update
|
||||
# If you want to change or add directories, just edit the line you're
|
||||
# interested in. All local changes will be retained on the next run.
|
||||
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
|
||||
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
||||
# absolute path. No other format is supported.
|
||||
#
|
||||
XDG_DESKTOP_DIR="$HOME/Desktop"
|
||||
XDG_DOWNLOAD_DIR="$HOME/Downloads"
|
||||
XDG_TEMPLATES_DIR="$HOME/Templates"
|
||||
XDG_PUBLICSHARE_DIR="$HOME/Public"
|
||||
XDG_DOCUMENTS_DIR="$HOME/Documents"
|
||||
XDG_MUSIC_DIR="$HOME/Music"
|
||||
XDG_PICTURES_DIR="$HOME/Pictures"
|
||||
XDG_VIDEOS_DIR="$HOME/Videos"
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"position": "top",
|
||||
"height": 35,
|
||||
"height": 34,
|
||||
"layer": "top",
|
||||
|
||||
// Modules order
|
||||
|
@ -24,6 +24,7 @@
|
|||
"idle_inhibitor",
|
||||
"power-profiles-daemon",
|
||||
"battery",
|
||||
"battery#bat2",
|
||||
"custom/arrow5",
|
||||
"network",
|
||||
"custom/arrow6",
|
||||
|
@ -56,7 +57,7 @@
|
|||
},
|
||||
|
||||
"hyprland/window": {
|
||||
"format": "{initialTitle}",
|
||||
"format": "{title}",
|
||||
"icon": true,
|
||||
"icon-size": 24,
|
||||
"separate-outputs": true
|
||||
|
@ -127,6 +128,7 @@
|
|||
},
|
||||
|
||||
"battery": {
|
||||
"bat": "BAT0",
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
|
@ -144,15 +146,37 @@
|
|||
"\udb80\udc79"
|
||||
],
|
||||
"tooltip-format": "{capacity}% - {timeTo}",
|
||||
"on-click": "$HOME/.config/fuzzel/scripts/fuzz_power"
|
||||
"on-click": "$HOME/.config/rofi/scripts/rs_power"
|
||||
},
|
||||
|
||||
"battery#bat2": {
|
||||
"bat": "BAT1",
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon}",
|
||||
"format-charging": "{icon} \udb81\udea5",
|
||||
"format-plugged": "{icon} \udb81\udea5",
|
||||
"format-critical": "{icon} \udb84\ude38",
|
||||
"format-warning": "{icon} \udb84\ude38",
|
||||
"format-icons": [
|
||||
"\udb80\udc7a",
|
||||
"\udb80\udc7c",
|
||||
"\udb80\udc7e",
|
||||
"\udb80\udc80",
|
||||
"\udb80\udc79"
|
||||
],
|
||||
"tooltip-format": "{capacity}% - {timeTo}",
|
||||
"on-click": "$HOME/.config/rofi/scripts/rs_power"
|
||||
},
|
||||
|
||||
"network": {
|
||||
"format-wifi": "\udb81\udda9 {essid}",
|
||||
"format-wifi": "\udb81\udda9",
|
||||
"format-ethernet": "\udb80\ude00",
|
||||
"format-disconnected": "\udb81\uddaa Disconnected",
|
||||
"tooltip-format": "{signalStrength}% - {ifname}: {ipaddr}/{cidr}",
|
||||
"on-click": "$HOME/.config/fuzzel/scripts/fuzz_wifi"
|
||||
"format-disconnected": "\udb80\udd5b",
|
||||
"tooltip-format": "{essid} ({signalStrength}%) - {ifname}: {ipaddr}/{cidr}",
|
||||
"on-click": "$HOME/.config/rofi/scripts/rs_wifi"
|
||||
},
|
||||
|
||||
"clock": {
|
||||
|
|
|
@ -68,7 +68,7 @@ button:hover {
|
|||
window#waybar {
|
||||
background-color: @wbackground;
|
||||
font-family: Symbols Nerd Font Mono, Mononoki Nerd Font;
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/* Workspaces */
|
||||
|
@ -185,7 +185,7 @@ label:focus {
|
|||
#custom-arrow4,
|
||||
#custom-arrow5,
|
||||
#custom-arrow6 {
|
||||
font-size: 26pt;
|
||||
font-size: 25pt;
|
||||
}
|
||||
|
||||
/* Individual Modeline arrows */
|
||||
|
|
|
@ -7,7 +7,7 @@ ratio = [ 1, 4, 3 ]
|
|||
sort_by = "natural"
|
||||
sort_sensitive = false
|
||||
sort_reverse = false
|
||||
sort_dir_first = false
|
||||
sort_dir_first = true
|
||||
linemode = "none"
|
||||
show_hidden = false
|
||||
show_symlink = true
|
||||
|
|
|
@ -5,15 +5,16 @@ clone them and edit them as you wish. Part of this work was based on other
|
|||
people's dotfiles (Distrotube for example), and it may contain scripts or
|
||||
binaries that they made or modify.
|
||||
|
||||
![screenshot](./screenshot.jpg)
|
||||
![screenshot](./screenshot.png)
|
||||
|
||||
|
||||
# Dependencies
|
||||
# Dependencies (some of them)
|
||||
- hyprland
|
||||
- hyprpaper
|
||||
- hyprpicker
|
||||
- hypridle
|
||||
- hyprlock
|
||||
- waybar
|
||||
- fuzzel
|
||||
- rofi
|
||||
- dunst
|
||||
- vimiv
|
||||
|
|
BIN
screenshot.jpg
BIN
screenshot.jpg
Binary file not shown.
Before Width: | Height: | Size: 3.2 MiB |
BIN
screenshot.png
Normal file
BIN
screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 MiB |
Loading…
Reference in a new issue