Compare commits

...
10 Commits
6 changed files with 239 additions and 43 deletions

No files matched your search

+1 -1
View File
@@ -101,7 +101,7 @@
(buffer-size) (buffer-size)
(erase-buffer) (erase-buffer)
(goto-char (point-min)) (goto-char (point-min))
(insert-image (create-image "/home/joe/.config/emacs/Emacs@256.png")) (insert-image (create-image (expand-file-name "Emacs@256.png" user-emacs-directory)))
(insert "\n\n\n") (insert "\n\n\n")
(insert "Welcome to Emacs!\n\n") (insert "Welcome to Emacs!\n\n")
;; (dashboard-insert-center "testing this thing out\n\n") ;; (dashboard-insert-center "testing this thing out\n\n")
+191 -32
View File
@@ -205,6 +205,7 @@ Finish up
all-the-icons-completion all-the-icons-completion
;; eat ;; eat
;; Enhancements ;; Enhancements
centaur-tabs
olivetti olivetti
helpful helpful
vterm vterm
@@ -269,7 +270,7 @@ need to benchmark slow init times later.
** Misc Stuff ** Misc Stuff
#+begin_SRC emacs-lisp #+begin_SRC emacs-lisp
(setq default-directory "/home/joe/") (setq default-directory (expand-file-name "~"))
(setq vc-follow-symlinks t) ; Visit real file when editing a symlink without prompting. (setq vc-follow-symlinks t) ; Visit real file when editing a symlink without prompting.
(global-auto-revert-mode t) ; Revert buffer's file when the file changes on disk (global-auto-revert-mode t) ; Revert buffer's file when the file changes on disk
@@ -531,8 +532,8 @@ Setup other stuff
;; TODO Likely not needed anymore ;; TODO Likely not needed anymore
;; (dolist (mode '(dired-mode-hook lsp-help-mode-hook fundamental-mode-hook)) (dolist (mode '(dired-mode-hook lsp-help-mode-hook fundamental-mode-hook))
;; (add-hook mode (lambda () (setq truncate-lines t)))) (add-hook mode (lambda () (setq truncate-lines t))))
#+end_src #+end_src
Ligatures... are they that useful? Ligatures... are they that useful?
@@ -639,7 +640,7 @@ Emacs is an great operating system, if only it had a good text editor...
(global-set-key (kbd "M-o") #'joe/insert-line-below) (global-set-key (kbd "M-o") #'joe/insert-line-below)
(global-set-key (kbd "M-O") #'joe/insert-line-above) (global-set-key (kbd "M-O") #'joe/insert-line-above)
;; (setq-default truncate-lines nil) (setq-default truncate-lines t)
(setq-default truncate-partial-width-windows nil) (setq-default truncate-partial-width-windows nil)
(defun joe/backward-kill-word-or-kill-region () (defun joe/backward-kill-word-or-kill-region ()
@@ -844,6 +845,13 @@ Fill region is great, except when you don't need it...
(setq evil-goggles-pulse t) (setq evil-goggles-pulse t)
(setq evil-goggles-async-duration 0.55) (setq evil-goggles-async-duration 0.55)
(defun joe/evil-search-symbol-forward ()
(interactive)
(evil-search-word t nil t))
(evil-global-set-key 'normal "*" #'joe/evil-search-symbol-forward)
(evil-global-set-key 'normal "#" #'evil-search-word-forward)
;; Recenter lines after mark jump ;; Recenter lines after mark jump
;; (defun joe/recenter-after-goto-mark () ;; (defun joe/recenter-after-goto-mark ()
;; (interactive) ;; (interactive)
@@ -938,6 +946,18 @@ Fill region is great, except when you don't need it...
(keymap-set smartparens-mode-map "M-(" 'sp-wrap-round) (keymap-set smartparens-mode-map "M-(" 'sp-wrap-round)
(keymap-set smartparens-mode-map "M-[" 'sp-wrap-square) (keymap-set smartparens-mode-map "M-[" 'sp-wrap-square)
(keymap-set smartparens-mode-map "M-{" 'sp-wrap-curly) (keymap-set smartparens-mode-map "M-{" 'sp-wrap-curly)
(defun sp-wrap-single-quote ()
(interactive)
(sp-wrap-with-pair "'"))
(defun sp-wrap-double-quote ()
(interactive)
(sp-wrap-with-pair "\""))
(keymap-set smartparens-mode-map "M-'" 'sp-wrap-single-quote)
(keymap-set smartparens-mode-map "M-\"" 'sp-wrap-double-quote)
#+end_src #+end_src
*** expand-region *** expand-region
#+begin_src emacs-lisp #+begin_src emacs-lisp
@@ -1001,10 +1021,7 @@ Fill region is great, except when you don't need it...
(require 'all-the-icons-ibuffer) (require 'all-the-icons-ibuffer)
(add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode) (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode)
(global-set-key [remap list-buffers] 'ibuffer) (global-set-key [remap list-buffers] 'ibuffer)
(evil-define-key '(normal insert visual emacs) 'global (global-set-key (kbd "C-x b") #'consult-buffer)
(kbd "C-b") #'consult-buffer)
(evil-define-key '(normal insert visual emacs) 'global
(kbd "C-S-b") #'ibuffer)
(defun joe/switch-other-buffer () (defun joe/switch-other-buffer ()
"Switch to other buffer" "Switch to other buffer"
@@ -1012,6 +1029,7 @@ Fill region is great, except when you don't need it...
(switch-to-buffer (other-buffer))) (switch-to-buffer (other-buffer)))
(global-set-key (kbd "C-x l") 'joe/switch-other-buffer) (global-set-key (kbd "C-x l") 'joe/switch-other-buffer)
(global-set-key (kbd "C-x C-l") 'joe/switch-other-buffer)
(save-place-mode t) (save-place-mode t)
(setq save-place-file (expand-file-name "places" user-emacs-directory)) (setq save-place-file (expand-file-name "places" user-emacs-directory))
@@ -1051,6 +1069,78 @@ Harpoon lets you quickly switch between bookmarked buffers
#+end_src #+end_src
*** Centaur Tabs
#+begin_src emacs-lisp
;; (require 'centaur-tabs)
(setq centaur-tabs-set-bar 'under)
(setq x-underline-at-descent-line t)
(setq centaur-tabs-set-close-button nil)
(setq centaur-tabs-set-icons t)
(setq centaur-tabs-show-navigation-buttons nil)
(setq centaur-tabs-set-modified-marker nil)
(setq centaur-tabs-show-new-tab-button nil)
(setq centaur-tabs-label-fixed-length 0)
(setq centaur-tabs-label-rename-function
(lambda (buf) (if (> (length (buffer-name buf)) 20)
(concat (substring (buffer-name buf) 0 17) "...")
(buffer-name buf))))
(global-set-key (kbd "s-n") #'centaur-tabs-forward-tab)
(global-set-key (kbd "s-p") #'centaur-tabs-backward-tab)
(global-set-key (kbd "C-s-p") #'centaur-tabs-forward-group)
(global-set-key (kbd "C-s-n") #'centaur-tabs-backward-group)
(global-set-key (kbd "s-P") #'centaur-tabs-move-current-tab-to-left)
(global-set-key (kbd "s-N") #'centaur-tabs-move-current-tab-to-right)
(let ((modes '(magit-status-mode
dired-mode
mu4e-main-mode
mu4e-headers-mode
mu4e-view-mode)))
(dolist (mode modes)
(add-hook (intern (concat (symbol-name mode) "-hook"))
(lambda () (centaur-tabs-local-mode -1)))))
(with-eval-after-load 'centaur-tabs
(defun joe/fix-centaur-tabs (THEME)
(centaur-tabs-mode -1)
(centaur-tabs-mode))
(advice-add 'consult-theme :after #'joe/fix-centaur-tabs)
(defun centaur-tabs-buffer-groups ()
(list
(cond
;; Work buffers: REPLs, Claude, Chat, eww, cider-repl
((or (derived-mode-p 'comint-mode)
(derived-mode-p 'sql-interactive-mode)
(derived-mode-p 'compilation-mode)
(derived-mode-p 'compilation-mode)
(string-match "^\\*HTTP" (buffer-name))
(string-match "^\\*cider-repl" (buffer-name))
(bound-and-true-p gptel-mode)
(derived-mode-p 'eww-mode))
"Work")
;; Special *buffers* (scratch, Messages, etc.)
((and (string-equal "*" (substring (buffer-name) 0 1))
(not (string-match "^\\*Org Src" (buffer-name))))
"*Buffers*")
;; Everything else in one group
(t
"Emacs")))))
(global-set-key (kbd "M-1") 'centaur-tabs-select-visible-tab)
(global-set-key (kbd "M-2") 'centaur-tabs-select-visible-tab)
(global-set-key (kbd "M-3") 'centaur-tabs-select-visible-tab)
(global-set-key (kbd "M-4") 'centaur-tabs-select-visible-tab)
(global-set-key (kbd "M-5") 'centaur-tabs-select-visible-tab)
(global-set-key (kbd "M-6") 'centaur-tabs-select-visible-tab)
(global-set-key (kbd "M-7") 'centaur-tabs-select-visible-tab)
(global-set-key (kbd "M-8") 'centaur-tabs-select-visible-tab)
(global-set-key (kbd "M-9") 'centaur-tabs-select-visible-tab)
(centaur-tabs-mode +1)
#+end_src
*** Window Management *** Window Management
#+begin_src emacs-lisp #+begin_src emacs-lisp
@@ -1441,21 +1531,64 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
;; (require 'consult-lsp) ;; (require 'consult-lsp)
(global-set-key (kbd "M-s l") #'consult-line) (defvar consult-map (make-sparse-keymap))
(global-set-key (kbd "M-s g") #'consult-ripgrep) (global-set-key (kbd "C-;") consult-map)
(global-set-key (kbd "M-s f") #'consult-find) (define-key consult-map (kbd "a") 'command-a)
(global-set-key (kbd "M-s y") #'consult-yank-from-kill-ring) ;; Bind the prefix
(global-set-key (kbd "M-s r") #'consult-recent-file) (define-key consult-map (kbd "l") #'consult-line)
(global-set-key (kbd "M-s i") #'consult-imenu) (define-key consult-map (kbd "C-l") #'consult-line-multi)
(define-key consult-map (kbd "F") #'consult-find)
(define-key consult-map (kbd "g") #'consult-ripgrep)
(define-key consult-map (kbd "y") #'consult-yank-from-kill-ring)
(define-key consult-map (kbd "r") #'consult-recent-file)
(define-key consult-map (kbd "i") #'consult-imenu)
(define-key consult-map (kbd "t") #'consult-theme)
(defun joe/evil-search-symbol-forward ()
(interactive)
(evil-search-word-forward 1 t))
(evil-global-set-key 'normal "*" #'joe/evil-search-symbol-forward)
(evil-global-set-key 'normal "#" #'evil-search-word-forward)
(defun joe/consult-line-symbol-at-point ()
"Search for a line matching the symbol found near point."
(interactive)
(consult-line
(or (thing-at-point 'symbol))))
(defun joe/consult-line-word-at-point ()
"Search for a line matching the word found near point."
(interactive)
(consult-line
(or (thing-at-point 'word))))
(defun joe/consult-ripgrep-symbol-at-point ()
"Run consult-ripgrep with the symbol at point as the initial search term."
(interactive)
(let* ((term (thing-at-point 'symbol))
(search-term (if term term "")))
(consult-ripgrep nil search-term)))
(defun joe/consult-ripgrep-word-at-point ()
"Run consult-ripgrep with the word at point as the initial search term."
(interactive)
(let* ((term (thing-at-point 'symbol))
(search-term (if term term "")))
(consult-ripgrep default-directory search-term)))
(define-key consult-map (kbd ".") #'joe/consult-line-symbol-at-point)
(define-key consult-map (kbd "C-.") #'joe/consult-line-word-at-point)
(define-key consult-map (kbd ",") #'joe/consult-ripgrep-symbol-at-point)
(define-key consult-map (kbd "C-,") #'joe/consult-ripgrep-word-at-point)
#+end_src #+end_src
*** Orderless *** Orderless
#+begin_src emacs-lisp #+begin_src emacs-lisp
(require 'orderless) (require 'orderless)
(setq completion-styles '(orderless basic) (setq completion-styles '(orderless basic)
completion-category-overrides '((file (styles basic partial-completion)))) completion-category-overrides '((file (styles basic partial-completion))))
#+end_src #+end_src
** App Launcher ** App Launcher
#+begin_src emacs-lisp #+begin_src emacs-lisp
@@ -1523,7 +1656,7 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
(kbd "M-l") #'dirvish-ls-switches-menu (kbd "M-l") #'dirvish-ls-switches-menu
(kbd "M-m") #'dirvish-mark-menu (kbd "M-m") #'dirvish-mark-menu
(kbd "M-t") #'dirvish-layout-toggle (kbd "M-t") #'dirvish-layout-toggle
(kbd "M-s") #'dirvish-setup-menu (kbd "M-<return>") #'dirvish-setup-menu
(kbd "M-e") #'dirvish-emerge-menu (kbd "M-e") #'dirvish-emerge-menu
(kbd "M-j") #'dirvish-fd-jump))) (kbd "M-j") #'dirvish-fd-jump)))
@@ -1661,7 +1794,7 @@ odd looking ~'(t .t)~ is for specifying a default for all other actions.
(require 'avy) (require 'avy)
(setq avy-case-fold-search nil) (setq avy-case-fold-search nil)
(setq avy-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?u ?i ?o ?p ?z ?x ?c ?v ?n ?m)) (setq avy-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l ?q ?w ?e ?r ?u ?i ?o ?p ?z ?x ?c ?v ?n ?m))
(global-set-key (kbd "C-;") #'avy-goto-char) ;; I use this most frequently (global-set-key (kbd "M-s") #'avy-goto-char) ;; I use this most frequently
;; (define-key global-map (kbd "C-'") 'avy-goto-line) ;; Consistent with ivy-avy ;; (define-key global-map (kbd "C-'") 'avy-goto-line) ;; Consistent with ivy-avy
(define-key global-map (kbd "M-g c") 'avy-goto-char) (define-key global-map (kbd "M-g c") 'avy-goto-char)
(define-key global-map (kbd "M-g e") 'avy-goto-word-0) ;; lots of candidates (define-key global-map (kbd "M-g e") 'avy-goto-word-0) ;; lots of candidates
@@ -1895,6 +2028,7 @@ These help speed eglot up apparently [[https://www.reddit.com/r/emacs/comments/1
(setq lsp-modeline-diagnostics-enable nil) (setq lsp-modeline-diagnostics-enable nil)
(setq lsp-modeline-code-actions-enable nil) (setq lsp-modeline-code-actions-enable nil)
(setq lsp-lens-enable nil) (setq lsp-lens-enable nil)
(setq lsp-ui-doc-show-with-mouse nil)
(setq lsp-signature-auto-activate nil) (setq lsp-signature-auto-activate nil)
(setq lsp-eldoc-enable-hover nil) (setq lsp-eldoc-enable-hover nil)
(setq eldoc-echo-area-use-multiline-p 'truncate-sym-name-if-fit) (setq eldoc-echo-area-use-multiline-p 'truncate-sym-name-if-fit)
@@ -1970,6 +2104,7 @@ start it, so go through all existing buffers that match the mode and belong to t
(defun joe/flycheck-buffer-and-previous () (interactive) (flycheck-buffer) (flycheck-previous-error)) (defun joe/flycheck-buffer-and-previous () (interactive) (flycheck-buffer) (flycheck-previous-error))
(defun joe/flycheck-clear-if-active () (defun joe/flycheck-clear-if-active ()
(interactive)
(when (bound-and-true-p flycheck-mode) (when (bound-and-true-p flycheck-mode)
(flycheck-clear))) (flycheck-clear)))
@@ -2042,31 +2177,54 @@ start it, so go through all existing buffers that match the mode and belong to t
#+end_src #+end_src
** AI ** AI
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq gptel-default-mode #'org-mode)
(setq gptel-api-key (with-temp-buffer
(insert-file-contents (expand-file-name "gptel-gpt-key" user-emacs-directory))
(buffer-string)))
(gptel-make-anthropic "Claude" :stream t :key (with-temp-buffer
(insert-file-contents (expand-file-name "gptel-key" user-emacs-directory))
(buffer-string)))
(setq gptel-model 'claude-sonnet-4-6) (defun joe/read-file-or-nil (filename)
(setq gptel-backend (gptel-get-backend "Claude")) "Read FILENAME from emacs directory, return nil if file doesn't exist."
(let ((path (expand-file-name filename user-emacs-directory)))
(when (file-exists-p path)
(with-temp-buffer
(insert-file-contents path)
(string-trim (buffer-string))))))
(setq gptel-default-mode #'org-mode)
(when-let ((gpt-key (joe/read-file-or-nil "gptel-gpt-key")))
(setq gptel-api-key gpt-key))
(when-let ((claude-key (joe/read-file-or-nil "gptel-key")))
(gptel-make-anthropic "Claude" :stream t :key claude-key)
(setq gptel-model 'claude-sonnet-4-6)
(setq gptel-backend (gptel-get-backend "Claude")))
(when-let ((gpt-key (joe/read-file-or-nil "gptel-gpt-key")))
(gptel-make-openai "ChatGPT" :stream t :key gpt-key))
(setq gptel-prompt-prefix-alist '((markdown-mode . "### ") (setq gptel-prompt-prefix-alist '((markdown-mode . "### ")
(org-mode . "* ") (org-mode . "* ")
(text-mode . "### "))) (text-mode . "### ")))
(setq gptel-cache '(system message))
;; (setq gptel-log-level 'debug)
(define-prefix-command 'joe/gptel-map) (define-prefix-command 'joe/gptel-map)
(global-set-key (kbd "C-c a") 'joe/gptel-map) (global-set-key (kbd "C-c a") 'joe/gptel-map)
(define-key joe/gptel-map (kbd "a") #'gptel) (define-key joe/gptel-map (kbd "a") #'gptel)
(define-key joe/gptel-map (kbd "RET") #'gptel-ask) ;; (define-key joe/gptel-map (kbd "RET") #'gptel-ask)
(define-key joe/gptel-map (kbd "m") #'gptel-mode) (define-key joe/gptel-map (kbd "m") #'gptel-mode)
(define-key joe/gptel-map (kbd "c") #'gptel-add) (define-key joe/gptel-map (kbd "RET") #'gptel-add)
(define-key joe/gptel-map (kbd "q") #'gptel-abort) (define-key joe/gptel-map (kbd "q") #'gptel-abort)
(define-key joe/gptel-map (kbd "<backspace>") #'joe/gptel-context-remove-all) (define-key joe/gptel-map (kbd "<backspace>") #'joe/gptel-context-remove-all)
(define-key joe/gptel-map (kbd "r") #'gptel-rewrite) (define-key joe/gptel-map (kbd "r") #'gptel-rewrite)
(defun gptel-mark-region-role (start end role)
"Mark region from START to END with the llm or user role."
(interactive (list (region-beginning) (region-end)
(completing-read "Mark region role as: " '(response prompt))))
(if (or (not transient-mark-mode)
(use-region-p))
(with-silent-modifications
(put-text-property start end 'gptel (and (equal role "response") 'response))
(message "Region marked as %s" role))
(message "No region specified, action canceled")))
#+end_src #+end_src
gptel-context-remove-all without confirmation gptel-context-remove-all without confirmation
@@ -2272,7 +2430,7 @@ it doesn't close it.
(deactivate-mark)))) (deactivate-mark))))
;; This is required so that .dir-locals that read env files for credentials works ;; This is required so that .dir-locals that read env files for credentials works
(require 'dotenv) ;; (require 'dotenv)
(defun joe/sql-mode-hook () (defun joe/sql-mode-hook ()
(define-key sql-mode-map (kbd "C-M-h") #'joe/mark-sql-defun) (define-key sql-mode-map (kbd "C-M-h") #'joe/mark-sql-defun)
(define-key sql-mode-map (kbd "C-M-x") #'sql-send-pg-function) (define-key sql-mode-map (kbd "C-M-x") #'sql-send-pg-function)
@@ -2352,6 +2510,7 @@ Apparently this helps with the performance of dape, as well as LSP
** org-mode ** org-mode
*** General *** General
#+begin_src emacs-lisp #+begin_src emacs-lisp
(require 'org)
(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG"))) (setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG")))
(setq org-directory "~/Notes/") (setq org-directory "~/Notes/")
@@ -2718,7 +2877,7 @@ TODO: We need to create a var for a project based base branch
** Initial Buffer ** Initial Buffer
#+begin_src emacs-lisp #+begin_src emacs-lisp
(load-file "/home/joe/.config/emacs/elisp/welcome.el") (load-file (expand-file-name "elisp/welcome.el" user-emacs-directory))
#+end_src #+end_src
* COMMENT Local variables * COMMENT Local variables
;; Local Variables: ;; Local Variables:
+3 -5
View File
@@ -1,6 +1,3 @@
if status is-interactive
# Commands to run in interactive sessions can go here
end
set -gx XDG_CONFIG_HOME /home/joe/.config set -gx XDG_CONFIG_HOME /home/joe/.config
set -gx XDG_DATA_HOME /home/joe/.local/share set -gx XDG_DATA_HOME /home/joe/.local/share
set -gx XDG_CACHE_HOME /home/joe/.cache set -gx XDG_CACHE_HOME /home/joe/.cache
@@ -76,12 +73,13 @@ end
fish_ssh_agent fish_ssh_agent
# The next line updates PATH for the Google Cloud SDK. # The next line updates PATH for the Google Cloud SDK.
if [ -f '/home/joe/Downloads/google-cloud-sdk/path.fish.inc' ]; . '/home/joe/Downloads/google-cloud-sdk/path.fish.inc'; end # if [ -f '/home/joe/Downloads/google-cloud-sdk/path.fish.inc' ]; . '/home/joe/Downloads/google-cloud-sdk/path.fish.inc'; end
# opam configuration # opam configuration
source /home/joe/.opam/opam-init/init.fish > /dev/null 2> /dev/null; or true # source /home/joe/.opam/opam-init/init.fish > /dev/null 2> /dev/null; or true
if test -e "/home/joe/Repositories/emsdk/emsdk_env.fish" if test -e "/home/joe/Repositories/emsdk/emsdk_env.fish"
source "/home/joe/Repositories/emsdk/emsdk_env.fish" source "/home/joe/Repositories/emsdk/emsdk_env.fish"
set -gx EMSDK_QUIET 1 set -gx EMSDK_QUIET 1
end end
alias claude="/home/joe/.claude/local/claude"
+2 -2
View File
@@ -15,7 +15,7 @@ SETUVAR WINEPREFIX:/home/joe/\x2elocal/share/wine
SETUVAR XDG_CACHE_HOME:/home/joe/\x2ecache SETUVAR XDG_CACHE_HOME:/home/joe/\x2ecache
SETUVAR XDG_CONFIG_HOME:/home/joe/\x2econfig SETUVAR XDG_CONFIG_HOME:/home/joe/\x2econfig
SETUVAR XDG_DATA_HOME:/home/joe/\x2elocal/share SETUVAR XDG_DATA_HOME:/home/joe/\x2elocal/share
SETUVAR __fish_initialized:3400 SETUVAR __fish_initialized:3800
SETUVAR _fisher_ankitsumitg_2F_docker_2D_fish_2D_completions_files:/home/joe/\x2econfig/fish/completions/docker\x2efish SETUVAR _fisher_ankitsumitg_2F_docker_2D_fish_2D_completions_files:/home/joe/\x2econfig/fish/completions/docker\x2efish
SETUVAR _fisher_plugins:ankitsumitg/docker\x2dfish\x2dcompletions SETUVAR _fisher_plugins:ankitsumitg/docker\x2dfish\x2dcompletions
SETUVAR fish_color_autosuggestion:969896 SETUVAR fish_color_autosuggestion:969896
@@ -36,7 +36,7 @@ SETUVAR fish_color_operator:00a6b2
SETUVAR fish_color_param:81a2be SETUVAR fish_color_param:81a2be
SETUVAR fish_color_quote:b5bd68 SETUVAR fish_color_quote:b5bd68
SETUVAR fish_color_redirection:8abeb7 SETUVAR fish_color_redirection:8abeb7
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
SETUVAR fish_color_status:red SETUVAR fish_color_status:red
SETUVAR fish_color_user:brgreen SETUVAR fish_color_user:brgreen
+37 -3
View File
@@ -84,6 +84,34 @@ def new_client(client):
y = client.group.screen.height - client.height - padding - 22 y = client.group.screen.height - client.height - padding - 22
client.set_position_floating(x,y) client.set_position_floating(x,y)
def move_to_corner(corner: str) -> Callable:
def _inner(qtile) -> None:
win = qtile.current_window
if win is None:
return
if not win.floating:
win.toggle_floating()
screen = qtile.current_screen
padding = 0
bar_height = 24
w = win.width
h = win.height
sw = screen.width
sh = screen.height
positions = {
"top-left": (padding, bar_height + padding),
"top-right": (sw - w - padding, bar_height + padding),
"bottom-left": (padding, sh - h - padding),
"bottom-right": (sw - w - padding, sh - h - padding),
}
x, y = positions[corner]
win.set_position_floating(x, y)
return _inner
keys = [ keys = [
# A list of available commands that can be bound to keys can be found # A list of available commands that can be bound to keys can be found
# at https://docs.qtile.org/en/latest/manual/config/lazy.html # at https://docs.qtile.org/en/latest/manual/config/lazy.html
@@ -91,8 +119,8 @@ keys = [
# .when(wm_class != 'kitty') # .when(wm_class != 'kitty')
# Key([mod], "h", lazy.function(move_focus, direction='left'), desc="Move focus to left"), # Key([mod], "h", lazy.function(move_focus, direction='left'), desc="Move focus to left"),
Key([mod], "h", lazy.layout.left().when(focused=Match(wm_class=re.compile('(?![Ee]macs)'))), desc="Move focus to left"), Key([mod], "h", lazy.layout.left().when(focused=Match(wm_class=re.compile('(?![Ee]macs)'))), desc="Move focus to left"),
Key([mod], "j", lazy.layout.down().when(focused=Match(wm_class=re.compile('(?![Ee]macs)'))), desc="Move focus to left"), # Key([mod], "j", lazy.layout.down().when(focused=Match(wm_class=re.compile('(?![Ee]macs)'))), desc="Move focus to left"),
Key([mod], "k", lazy.layout.up().when(focused=Match(wm_class=re.compile('(?![Ee]macs)'))), desc="Move focus to left"), # Key([mod], "k", lazy.layout.up().when(focused=Match(wm_class=re.compile('(?![Ee]macs)'))), desc="Move focus to left"),
Key([mod], "l", lazy.layout.right().when(focused=Match(wm_class=re.compile('(?![Ee]macs)'))), desc="Move focus to left"), Key([mod], "l", lazy.layout.right().when(focused=Match(wm_class=re.compile('(?![Ee]macs)'))), desc="Move focus to left"),
# Key([alt], "tab", lazy.layout.next(), desc="Move window focus to other window"), # Key([alt], "tab", lazy.layout.next(), desc="Move window focus to other window"),
@@ -161,19 +189,25 @@ keys = [
), ),
Key([mod], "t", lazy.window.toggle_floating(), desc="Toggle floating on the focused window"), Key([mod], "t", lazy.window.toggle_floating(), desc="Toggle floating on the focused window"),
Key([mod, "control"], "r", lazy.reload_config(), desc="Reload the config"), Key([mod, "control"], "r", lazy.reload_config(), desc="Reload the config"),
Key([mod, "shift"], "r", lazy.spawn("reload_wm.sh"), desc="Kill Unity"),
Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"), Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown Qtile"),
Key([mod, alt], "space", lazy.function(toggle_language), desc="Toggle Language Layout"), Key([mod, alt], "space", lazy.function(toggle_language), desc="Toggle Language Layout"),
Key([mod], "r", lazy.spawncmd(), desc="Spawn a command using a prompt widget"), Key([mod], "r", lazy.spawncmd(), desc="Spawn a command using a prompt widget"),
Key([], "XF86AudioLowerVolume", lazy.spawn("amixer sset Master 5%-")), Key([], "XF86AudioLowerVolume", lazy.spawn("amixer sset Master 5%-")),
Key([], "XF86AudioRaiseVolume", lazy.spawn("amixer sset Master 5%+")), Key([], "XF86AudioRaiseVolume", lazy.spawn("amixer sset Master 5%+")),
Key([], "XF86Launch1", lazy.spawn("playerctl play-pause")), Key([], "XF86Launch1", lazy.spawn("playerctl play-pause")),
Key([], "XF86AudioMicMute", lazy.spawn("playerctl play-pause")),
Key([], "XF86AudioPlay", lazy.spawn("playerctl play-pause")), Key([], "XF86AudioPlay", lazy.spawn("playerctl play-pause")),
Key([], "XF86MonBrightnessDown", lazy.spawn("brightnessctl set 5%-")), Key([], "XF86MonBrightnessDown", lazy.spawn("brightnessctl set 5%-")),
Key([], "XF86MonBrightnessUp", lazy.spawn("brightnessctl set +5%")), Key([], "XF86MonBrightnessUp", lazy.spawn("brightnessctl set +5%")),
# This uses discrete values # This uses discrete values
Key([], "XF86KbdBrightnessDown", lazy.function(kbd_brightness_down)), Key([], "XF86KbdBrightnessDown", lazy.function(kbd_brightness_down)),
Key([], "XF86KbdBrightnessUp", lazy.function(kbd_brightness_up)), Key([], "XF86KbdBrightnessUp", lazy.function(kbd_brightness_up)),
Key([mod, "control", "shift", alt], "1", lazy.window.set_position_floating(5, 28), desc="Put the window in the corner"),
Key([mod, alt, "control", "shift"], "q", lazy.function(move_to_corner("top-left")), desc="Move float to top-left"),
Key([mod, alt, "control", "shift"], "w", lazy.function(move_to_corner("top-right")), desc="Move float to top-right"),
Key([mod, alt, "control", "shift"], "a", lazy.function(move_to_corner("bottom-left")), desc="Move float to bottom-left"),
Key([mod, alt, "control", "shift"], "s", lazy.function(move_to_corner("bottom-right")), desc="Move float to bottom-right"),
] ]
pape_dir = '/home/joe/Pictures/Wallpapers/' pape_dir = '/home/joe/Pictures/Wallpapers/'
+5
View File
@@ -1,6 +1,11 @@
#!/bin/bash #!/bin/bash
BATTERY_LEVEL=$(upower -i $(upower -e | grep 'BAT') | grep -E "percentage" | awk '{print $2}' | sed 's/%//') BATTERY_LEVEL=$(upower -i $(upower -e | grep 'BAT') | grep -E "percentage" | awk '{print $2}' | sed 's/%//')
AC_POWER=$(cat /sys/class/power_supply/AC0/online)
if [ $AC_POWER -eq 1 ]; then
exit
fi
if [ $BATTERY_LEVEL -le 5 ]; then if [ $BATTERY_LEVEL -le 5 ]; then
notify-send "Low Battery" "Battery level is ${BATTERY_LEVEL}%" -u critical notify-send "Low Battery" "Battery level is ${BATTERY_LEVEL}%" -u critical
exit exit