diff options
author | Thanos Apollo <[email protected]> | 2023-08-31 19:51:37 +0300 |
---|---|---|
committer | Thanos Apollo <[email protected]> | 2023-08-31 19:51:37 +0300 |
commit | 49deaaf1fbc4213e1a616e10eea4b652a3e5f3af (patch) | |
tree | 123ede512e9919c707c19991d5d9062e283244e7 | |
parent | d1c43b4dd50767d6421838ca3b16a8edfe9fbde0 (diff) |
stumpwm: Redo using stow instead of org
-rw-r--r-- | .stumpwm.d/colors.lisp | 54 | ||||
-rw-r--r-- | .stumpwm.d/init.lisp | 285 | ||||
-rw-r--r-- | stumpwm.org | 356 |
3 files changed, 339 insertions, 356 deletions
diff --git a/.stumpwm.d/colors.lisp b/.stumpwm.d/colors.lisp new file mode 100644 index 0000000..7967801 --- /dev/null +++ b/.stumpwm.d/colors.lisp @@ -0,0 +1,54 @@ +(defvar thanos-nord0 "#2e3440") +(defvar thanos-nord1 "#3b4252") +(defvar thanos-nord2 "#434c5e") +(defvar thanos-nord3 "#4c566a") +(defvar thanos-nord4 "#d8dee9") +(defvar thanos-nord5 "#e5e9f0") +(defvar thanos-nord6 "#eceff4") +(defvar thanos-nord7 "#8fbcbb") +(defvar thanos-nord8 "#88c0d0") +(defvar thanos-nord9 "#81a1c1") +(defvar thanos-nord10 "#5e81ac") +(defvar thanos-nord11 "#bf616a") +(defvar thanos-nord12 "#d08770") +(defvar thanos-nord13 "#ebcb8b") +(defvar thanos-nord14 "#a3be8c") +(defvar thanos-nord15 "#b48ead") + +(defvar thanos-hope "#1c1d20") +(defvar thanos-hope-alt "#151619") +(defvar thanos-hope0 "#1B2229") +(defvar thanos-hope1 "#1c1f24") +(defvar thanos-hope2 "#202328") +(defvar thanos-hope3 "#23272e") +(defvar thanos-hope4 "#3f444a") +(defvar thanos-hope5 "#5B6268") +(defvar thanos-hope6 "#686b78") +(defvar thanos-hope7 "#9ca0a4") +(defvar thanos-hope8 "#DFDFDF") +(defvar thanos-hope-fg "#cbccd1") +(defvar thanos-hope-alt "#5B6268") + +(setq *colors* + `(,thanos-nord0 ;; 0 black + ,thanos-nord11 ;; 1 red + ,thanos-nord14 ;; 2 green + ,thanos-nord13 ;; 3 yellow + ,thanos-nord10 ;; 4 blue + ,thanos-nord14 ;; 5 magenta + ,thanos-nord8 ;; 6 cyan + ,thanos-nord5)) ;; 7 white +(setq *colors* + `(,thanos-hope "#1c1d20" + ,thanos-hope-alt "#151619" + ,thanos-hope0 "#1B2229" + ,thanos-hope1 "#1c1f24" + ,thanos-hope2 "#202328" + ,thanos-hope3 "#23272e" + ,thanos-hope4 "#3f444a" + ,thanos-hope5 "#5B6268" + ,thanos-hope6 "#686b78" + ,thanos-hope7 "#9ca0a4" + ,thanos-hope8 "#DFDFDF" + ,thanos-hope-fg "#cbccd1" + ,thanos-hope-alt "#5B6268")) diff --git a/.stumpwm.d/init.lisp b/.stumpwm.d/init.lisp new file mode 100644 index 0000000..801fa04 --- /dev/null +++ b/.stumpwm.d/init.lisp @@ -0,0 +1,285 @@ +(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" + (user-homedir-pathname)))) + (when (probe-file quicklisp-init) + (load quicklisp-init))) + +(in-package :stumpwm) +(setf *default-package* :stumpwm) +(set-module-dir "~/.stumpwm.d/modules") + +(load-module "beckon") +(load-module "end-session") +(load-module "globalwindows") +(load-module "mpd") +(load-module "stump-backlight") +(load-module "urgentwindows") +(load-module "pinentry") +(load-module "swm-gaps") +(load-module "pass") +(load-module "kbd-layouts") +(load-module "ttf-fonts") +(load-module "battery-portable") + +(mpd:mpd-connect) + +(ql:quickload :slynk) + + +(stumpwm:defcommand sly-start-server () () + "Start a slynk server for sly." + (sb-thread:make-thread (lambda () (slynk:create-server :dont-close t)))) + + +(stumpwm:defcommand sly-stop-server () () + "Stop current slynk server for sly." + (sb-thread:make-thread (lambda () (slynk:stop-server 4005)))) + +(setf *wallpapers* "~/wallpapers/") + +(defun feh-set-wallpaper (wallpaper-name) + "Set wallpaper using feh" + (let ((wallpaper-dir "~/wallpapers/")) + (format t "Setting wallpaper: ~a~%" wallpaper-name) + (stumpwm:run-shell-command (format nil "feh --bg-scale ~a~a" wallpaper-dir wallpaper-name)))) + + +(defun thanos/set-wallpapers () + "Set wallpapers depending on hostname." + (cond ((equal (asdf:hostname) "zeus") (feh-set-wallpaper "anime-night-mountains.jpg")) + ((equal (asdf:hostname) "hermes") (feh-set-wallpaper "library-old-house.jpg")))) + +(when *initializing* + (mapc #'stumpwm:run-shell-command + '("emacs --daemon" + "picom" + "transmission-daemon" + "xsetroot -cursor_name left_ptr")) + (thanos/set-wallpapers)) + +(setf kbd-layouts:*caps-lock-behavior* :swapped) +(kbd-layouts:keyboard-layout-list "us" "gr" "ru -variant phonetic") + + +(setf *startup-message* "Welcome back, Thanos") + +;; Web jump (works for DuckDuckGo) +(defmacro make-web-jump (name prefix) + `(defcommand ,(intern name) (search) ((:rest ,(concatenate 'string "Ask the " name ": "))) + (nsubstitute #\+ #\Space search) + (run-shell-command (concatenate 'string ,prefix search)))) + +(make-web-jump "Duck" "firefox https://duckduckgo.com/?q=") +(make-web-jump "Invidious" "firefox https://yewtu.be/search?q=") +(defcommand firefox () () + "Run or raise Firefox." + (sb-thread:make-thread (lambda () (run-or-raise "firefox" '(:class "firefox") t nil)))) + +(defcommand delete-window-and-frame () () + "Delete the current frame with its window." + (delete-window) + (remove-split)) + + +(defcommand mpv-play-url (url) ((:string "URL: ")) + "Play video URL with mpv." + (stumpwm:run-shell-command (format nil "mpv '~s'" url))) + +(defcommand hsplit-and-focus () () + "Create a new frame on the right and focus it." + (hsplit) + (move-focus :right)) + +(defcommand vsplit-and-focus () () + "Create a new frame below and move focus to it." + (vsplit) + (move-focus :down)) + +(defcommand term (&optional program) () + "Invoke a terminal, possibly with a @arg{program}." + (sb-thread:make-thread + (lambda () + (run-shell-command (if program + (format nil "kitty ~A" program) + "kitty"))))) + +(defvar *my/desktop-dump-file* "~/.cache/stump-at-work" + "Where my desktop dump should go and be loaded from.") + +(defcommand dump-work () () + "Save desktop layout when at work." + (dump-desktop-to-file *my/desktop-dump-file*)) + +(defcommand at-work () () + "Restore desktop layout when at work." + (restore-from-file *my/desktop-dump-file*) + (run-shell-command "gpclient") + (run-shell-command "bluetoothctl power on && bluetoothctl connect 14:3F:A6:6D:E3:D9")) + +(setf *message-window-gravity* :center + *input-window-gravity* :center + *window-border-style :thin + *mouse-focus-policy* :click + *float-window-modifier* :META + *transient-border-width* 2 + *normal-size-border-width* 2 + *message-window-padding* 10 + *message-window-y-padding* 10) + + + + +;; Colors +(load ".stumpwm.d/colors.lisp") + +(when *initializing* + (update-color-map (current-screen))) + +(set-border-color thanos-hope) +(set-focus-color thanos-hope) +(set-unfocus-color thanos-hope-alt) +(set-float-focus-color thanos-hope1) +(set-float-unfocus-color thanos-hope3) + +(set-fg-color thanos-hope-fg) +(set-bg-color thanos-hope-alt) + +(setf swm-gaps:*head-gaps-size* 0 + swm-gaps:*inner-gaps-size* 5 + swm-gaps:*outer-gaps-size* 5) + +(when *initializing* + (swm-gaps:toggle-gaps-on)) + +(ql:quickload :clx-truetype) + +(set-font `(,(make-instance 'xft:font :family "JetBrains Mono" :subfamily "Regular" :size 12 :antialias t) + ;; ,(make-instance 'xft:font :family "DejaVu Sans Mono for Powerline" :subfamily "Book" :size 8.5 :antialias t) + ;; ,(make-instance 'xft:font :family "siji" :subfamily "Medium" :size 10 :antialias t) + ;; ,(make-instance 'xft:font :family "FantasqueSansMono Nerd Font Mono" :subfamily "Regular" :size 9.5 :antialias t) + )) + +(setf *mode-line-timeout* 2) +(setf *group-format* "%t") +(setf *window-format* "%n: %30t") + +;; set modeline colors and highlight +(setf *mode-line-background-color* thanos-hope + *mode-line-foreground-color* thanos-hope-fg + stumpwm:*mode-line-border-color* thanos-hope + stumpwm:*mode-line-highlight-template* "«~A»") + + +(setf *mode-line-border-color* thanos-hope1 + *mode-line-border-width* 2) + +(when *initializing* + (grename "[ALPHA]") + (gnewbg "[BETA]") + (gnewbg "[GAMMA]") + (gnewbg-dynamic "[DELTA]") + (gnewbg "[LAMBDA]")) + +(clear-window-placement-rules) +(setf *dynamic-group-master-split-ratio* 1/2) +(setf) + +(setf *time-modeline-string* "%a %d/%m/%Y | %H:%M") + +(setf stumpwm:*screen-mode-line-format* + (list "%g ^>" + "RAM:" + '(:eval (string-trim '(#\Newline) + (stumpwm:run-shell-command + "free | awk '/Mem/ { printf(\"%.2f%\"), $3/$2 * 100.0 }'" t))) + "% | CPU:" + '(:eval (string-trim '(#\Newline) + (stumpwm:run-shell-command + "grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {printf(\"%.2f\", usage)}'" t))) + "% | VOL:" + '(:eval (string-trim '(#\Newline) + (stumpwm:run-shell-command "pamixer --get-volume" t))) + "% | " + ;; Check when hermes(laptop) t display battery + (when (equal (asdf:hostname) "hermes") + "BAT:%B |") + "%d")) + +(when stumpwm:*initializing* + (mode-line)) + +(defcommand colon1 (&optional (initial "")) (:rest) + (let ((cmd (read-one-line (current-screen) ": " :initial-input initial))) + (when cmd + (eval-command cmd t)))) + +(define-key *root-map* (kbd "C-r") "exec emacsclient -e '(thanos/app-launcher\)'") +(define-key *root-map* (kbd ",") "exec flameshot gui") +(define-key *root-map* (kbd "C-R") "restart-hard") +(define-key *root-map* (kbd "M-r") "restart-soft") +(define-key *root-map* (kbd "p") "exec emacsclient -e '(thanos/pass-launcher)'") +(define-key *root-map* (kbd "F") "float-this") +(define-key *root-map* (kbd "U") "unfloat-this") +(define-key *root-map* (kbd "b") "windowlist") +(define-key *root-map* (kbd "d") "delete-window") +(define-key *root-map* (kbd "C-d") "remove") +;; Focus +(define-key *root-map* (kbd "C-f") "move-focus right") +(define-key *root-map* (kbd "C-b") "move-focus left") + +(defvar *thanos-buffers-map* + (let ((m (make-sparse-keymap))) + (define-key m (kbd "0") "delete-window-and-frame") + (define-key m (kbd "3") "hsplit-and-focus") + (define-key m (kbd "b") "windowlist") + m ; NOTE: this is important + )) + +(define-key *root-map* (kbd "C-x") *thanos-buffers-map*) + +(define-key *root-map* (kbd "e") "exec emacsclient -c") + +(define-key *root-map* (kbd "C-e") "exec emacs") + +;; Ssh somewhere +(define-key *root-map* (kbd "C-S") "colon1 exec xterm -e ssh ") + +;; Lock screen +(define-key *root-map* (kbd "C-l") "exec slock") + +(define-key *top-map* (kbd "F11") "fullscreen") +;; Audio +(define-key *top-map* (kbd "XF86AudioLowerVolume") "exec pamixer -d 5") +(define-key *top-map* (kbd "XF86AudioRaiseVolume") "exec pamixer -i 5") + +;; x220 specific +(define-key *top-map* (kbd "F1") "exec brightnessctl --device='intel_backlight' set 5%-") +(define-key *top-map* (kbd "F2") "exec brightnessctl --device='intel_backlight' set +5%") +(define-key *top-map* (kbd "F3") "exec ~/.scripts/keyboard-light-x220.sh") + + ;;; Groups +;; Switch to group +(define-key *root-map* (kbd "M-1") "gselect 1") +(define-key *root-map* (kbd "M-2") "gselect 2") +(define-key *root-map* (kbd "M-3") "gselect 3") +(define-key *root-map* (kbd "M-4") "gselect 4") +(define-key *root-map* (kbd "M-5") "gselect 5") +(define-key *root-map* (kbd "M-6") "gselect 6") +(define-key *root-map* (kbd "M-7") "gselect 7") +(define-key *root-map* (kbd "M-0") "gselect 5") +(define-key *root-map* (kbd "M-9") "gselect") +;; Move window to group +(define-key *root-map* (kbd "M-!") "gmove 1") +(define-key *root-map* (kbd "M-@") "gmove 2") +(define-key *root-map* (kbd "M-#") "gmove 3") +(define-key *root-map* (kbd "M-$") "gmove 4") +(define-key *root-map* (kbd "M-%") "gmove 5") +(define-key *root-map* (kbd "M-^") "gmove 6") +(define-key *root-map* (kbd "M-)") "gmove 5") +(define-key *root-map* (kbd "M-(") "gmove") +;; Focus +(define-key *root-map* (kbd "M-b") "move-window left") +(define-key *root-map* (kbd "M-f") "move-window right") +(define-key *root-map* (kbd "M-n") "move-window down") + +(define-key *root-map* (kbd "s") "Duck") +;(define-key *root-map* (kbd "v") "Invidious") diff --git a/stumpwm.org b/stumpwm.org deleted file mode 100644 index ccec942..0000000 --- a/stumpwm.org +++ /dev/null @@ -1,356 +0,0 @@ -#+TITLE: StumpWM Configuration -#+AUTHOR: Thanos Apollo -#+PROPERTY: header-args :tangle ~/.stumpwm.d/init.lisp :mkdirp yes -#+auto_tangle: t -#+STARTUP: overview - -* Load Modules -#+begin_src lisp - (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" - (user-homedir-pathname)))) - (when (probe-file quicklisp-init) - (load quicklisp-init))) - - (in-package :stumpwm) - (setf *default-package* :stumpwm) - (set-module-dir "~/.stumpwm.d/modules") - - (load-module "beckon") - (load-module "end-session") - (load-module "globalwindows") - (load-module "mpd") - (load-module "stump-backlight") - (load-module "urgentwindows") - (load-module "pinentry") - (load-module "swm-gaps") - (mpd:mpd-connect) -#+end_src -* Setup slynk -#+begin_src lisp - (ql:quickload :slynk) - - - (stumpwm:defcommand sly-start-server () () - "Start a slynk server for sly." - (sb-thread:make-thread (lambda () (slynk:create-server :dont-close t)))) - - (stumpwm:defcommand sly-stop-server () () - "Stop current slynk server for sly." - (sb-thread:make-thread (lambda () (slynk:stop-server 4005)))) - -#+end_src -* Autostart -#+begin_src lisp - (setf *wallpapers* "~/wallpapers/") - - (defun feh-set-wallpaper (wallpaper-name) - "Set wallpaper using feh" - (let ((wallpaper-dir "~/wallpapers/")) - (format t "Setting wallpaper: ~a~%" wallpaper-name) - (stumpwm:run-shell-command (format nil "feh --bg-scale ~a~a" wallpaper-dir wallpaper-name)))) - - - (defun thanos/set-wallpapers () - "Set wallpapers depending on hostname." - (cond ((equal (asdf:hostname) "zeus") (feh-set-wallpaper "anime-night-mountains.jpg")) - ((equal (asdf:hostname) "hermes") (feh-set-wallpaper "library-old-house.jpg")))) - - (when *initializing* - (mapc #'stumpwm:run-shell-command - '("emacs --daemon" - "picom" - "setxkbmap -layout us,gr,my-bg -option 'ctrl:swapcaps' -option 'grp:alt_space_toggle'" - "transmission-daemon")) - (thanos/set-wallpapers)) - - (setf *startup-message* "Welcome back, Thanos") -#+end_src -* Functions -#+begin_src lisp - ;; Web jump (works for DuckDuckGo) - (defmacro make-web-jump (name prefix) - `(defcommand ,(intern name) (search) ((:rest ,(concatenate 'string "Ask the " name ": "))) - (nsubstitute #\+ #\Space search) - (run-shell-command (concatenate 'string ,prefix search)))) - - (make-web-jump "Duck" "firefox https://duckduckgo.com/?q=") - (make-web-jump "Invidious" "firefox https://yewtu.be/search?q=") - (defcommand firefox () () - "Run or raise Firefox." - (sb-thread:make-thread (lambda () (run-or-raise "firefox" '(:class "firefox") t nil)))) - - (defcommand delete-window-and-frame () () - "Delete the current frame with its window." - (delete-window) - (remove-split)) - - (defcommand hsplit-and-focus () () - "Create a new frame on the right and focus it." - (hsplit) - (move-focus :right)) - - (defcommand vsplit-and-focus () () - "Create a new frame below and move focus to it." - (vsplit) - (move-focus :down)) - - (defcommand term (&optional program) () - "Invoke a terminal, possibly with a @arg{program}." - (sb-thread:make-thread - (lambda () - (run-shell-command (if program - (format nil "kitty ~A" program) - "kitty"))))) - - (defvar *my/desktop-dump-file* "~/.cache/stump-at-work" - "Where my desktop dump should go and be loaded from.") - - (defcommand dump-work () () - "Save desktop layout when at work." - (dump-desktop-to-file *my/desktop-dump-file*)) - - (defcommand at-work () () - "Restore desktop layout when at work." - (restore-from-file *my/desktop-dump-file*) - (run-shell-command "gpclient") - (run-shell-command "bluetoothctl power on && bluetoothctl connect 14:3F:A6:6D:E3:D9")) -#+end_src -* UI -** Frames -#+begin_src lisp - (setf *message-window-gravity* :center - ,*input-window-gravity* :center - ,*window-border-style :thin - ,*mouse-focus-policy* :click - ,*float-window-modifier* :META - ,*transient-border-width* 2 - ,*normal-size-border-width* 2 - ,*message-window-padding* 10 - ,*message-window-y-padding* 10) -#+end_src -** Theme -#+begin_src lisp - (defvar thanos-nord0 "#2e3440") - (defvar thanos-nord1 "#3b4252") - (defvar thanos-nord2 "#434c5e") - (defvar thanos-nord3 "#4c566a") - (defvar thanos-nord4 "#d8dee9") - (defvar thanos-nord5 "#e5e9f0") - (defvar thanos-nord6 "#eceff4") - (defvar thanos-nord7 "#8fbcbb") - (defvar thanos-nord8 "#88c0d0") - (defvar thanos-nord9 "#81a1c1") - (defvar thanos-nord10 "#5e81ac") - (defvar thanos-nord11 "#bf616a") - (defvar thanos-nord12 "#d08770") - (defvar thanos-nord13 "#ebcb8b") - (defvar thanos-nord14 "#a3be8c") - (defvar thanos-nord15 "#b48ead") - - (defvar thanos-hope "#1c1d20") - (defvar thanos-hope-alt "#151619") - (defvar thanos-hope0 "#1B2229") - (defvar thanos-hope1 "#1c1f24") - (defvar thanos-hope2 "#202328") - (defvar thanos-hope3 "#23272e") - (defvar thanos-hope4 "#3f444a") - (defvar thanos-hope5 "#5B6268") - (defvar thanos-hope6 "#686b78") - (defvar thanos-hope7 "#9ca0a4") - (defvar thanos-hope8 "#DFDFDF") - (defvar thanos-hope-fg "#cbccd1") - (defvar thanos-hope-alt "#5B6268") - - (setq *colors* - `(,thanos-nord0 ;; 0 black - ,thanos-nord11 ;; 1 red - ,thanos-nord14 ;; 2 green - ,thanos-nord13 ;; 3 yellow - ,thanos-nord10 ;; 4 blue - ,thanos-nord14 ;; 5 magenta - ,thanos-nord8 ;; 6 cyan - ,thanos-nord5)) ;; 7 white - (setq *colors* - `(,thanos-hope "#1c1d20" - ,thanos-hope-alt "#151619" - ,thanos-hope0 "#1B2229" - ,thanos-hope1 "#1c1f24" - ,thanos-hope2 "#202328" - ,thanos-hope3 "#23272e" - ,thanos-hope4 "#3f444a" - ,thanos-hope5 "#5B6268" - ,thanos-hope6 "#686b78" - ,thanos-hope7 "#9ca0a4" - ,thanos-hope8 "#DFDFDF" - ,thanos-hope-fg "#cbccd1" - ,thanos-hope-alt "#5B6268")) - - (when *initializing* - (update-color-map (current-screen))) - - (set-border-color thanos-hope) - (set-focus-color thanos-hope) - (set-unfocus-color thanos-hope-alt) - (set-float-focus-color thanos-hope1) - (set-float-unfocus-color thanos-hope3) - - (set-fg-color thanos-hope-fg) - (set-bg-color thanos-hope-alt) -#+end_src -** Gaps -#+begin_src emacs-lisp - (setf swm-gaps:*head-gaps-size* 5 - swm-gaps:*inner-gaps-size* 5 - swm-gaps:*outer-gaps-size* 5) - - (when *initializing* - (swm-gaps:toggle-gaps-on)) -#+end_src -** Fonts -#+begin_src lisp - (ql:quickload :clx-truetype) - (load-module "ttf-fonts") - - (set-font `(,(make-instance 'xft:font :family "JetBrains Mono" :subfamily "Regular" :size 12 :antialias t) - ;; ,(make-instance 'xft:font :family "DejaVu Sans Mono for Powerline" :subfamily "Book" :size 8.5 :antialias t) - ;; ,(make-instance 'xft:font :family "siji" :subfamily "Medium" :size 10 :antialias t) - ;; ,(make-instance 'xft:font :family "FantasqueSansMono Nerd Font Mono" :subfamily "Regular" :size 9.5 :antialias t) - ) - ) -#+end_src -* Modeline -#+begin_src lisp - (load-module "battery-portable") - - (setf *mode-line-timeout* 2) - (setf *group-format* "%t") - (setf *window-format* "%n: %30t") - - ;; set modeline colors and highlight - (setf *mode-line-background-color* thanos-hope - ,*mode-line-foreground-color* thanos-hope-fg - stumpwm:*mode-line-border-color* thanos-hope - stumpwm:*mode-line-highlight-template* "«~A»") - - - (setf *mode-line-border-color* thanos-hope1 - ,*mode-line-border-width* 2) - - (when *initializing* - (grename "[ALPHA]") - (gnewbg "[BETA]") - (gnewbg "[GAMMA]") - (gnewbg "[DELTA]") - (gnewbg "[LAMBDA]")) - (clear-window-placement-rules) - (setf *dynamic-group-master-split-ratio* 1/2) - - (setf *time-modeline-string* "%a %d/%m/%Y | %H:%M") - - (setf stumpwm:*screen-mode-line-format* - (list "%g ^>" - "RAM:" - '(:eval (string-trim '(#\Newline) - (stumpwm:run-shell-command - "free | awk '/Mem/ { printf(\"%.2f%\"), $3/$2 * 100.0 }'" t))) - "% | CPU:" - '(:eval (string-trim '(#\Newline) - (stumpwm:run-shell-command - "grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {printf(\"%.2f\", usage)}'" t))) - "% | VOL:" - '(:eval (string-trim '(#\Newline) - (stumpwm:run-shell-command "pamixer --get-volume" t))) - "% | " - ;; Check when hermes(laptop) t display battery - (when (equal (asdf:hostname) "hermes") - "BAT:%B |") - "%d")) - - (when stumpwm:*initializing* - (mode-line)) -#+end_src -/Note: to trim new line when using shell commands for mode-line use something like this:/ -#+begin_src emacs-lisp :tangle nil - (setf *screen-mode-line-format* - (list - '(:eval (string-trim '(#\Newline) - (run-shell-command "date" t))) - '(:eval (run-shell-command "date" t)))) -#+end_src -* Keybindings -#+begin_src lisp - (defcommand colon1 (&optional (initial "")) (:rest) - (let ((cmd (read-one-line (current-screen) ": " :initial-input initial))) - (when cmd - (eval-command cmd t)))) - - ;; Run rofi - (define-key *root-map* (kbd "C-r") "exec emacsclient -e '(thanos/app-launcher\)'") - (define-key *root-map* (kbd ",") "exec flameshot gui") - (define-key *root-map* (kbd "C-R") "restart-hard") - (define-key *root-map* (kbd "M-r") "restart-soft") - (define-key *root-map* (kbd "p") "exec emacsclient -e '(thanos/pass-launcher)'") - (define-key *root-map* (kbd "f") "float-this") - (define-key *root-map* (kbd "b") "windowlist") - (define-key *root-map* (kbd "d") "delete-window") - (define-key *root-map* (kbd "D") "delete-window-and-frame") - - (define-key *root-map* (kbd "C-f") "unfloat-this") - - (defvar *thanos-buffers-map* - (let ((m (make-sparse-keymap))) - (define-key m (kbd "0") "delete-window-and-frame") - (define-key m (kbd "3") "hsplit-and-focus") - m ; NOTE: this is important - )) - - (define-key *root-map* (kbd "x") *thanos-buffers-map*) - - (define-key *root-map* (kbd "e") "exec emacsclient -c") - - (define-key *root-map* (kbd "C-e") "exec emacs --daemon") - - ;; Ssh somewhere - (define-key *root-map* (kbd "C-S") "colon1 exec xterm -e ssh ") - - ;; Lock screen - (define-key *root-map* (kbd "C-l") "exec ~/Developer/scripts/lock.sh") - - (define-key *top-map* (kbd "F11") "fullscreen") - ;; Audio - (define-key *top-map* (kbd "XF86AudioLowerVolume") "exec pamixer -d 5") - (define-key *top-map* (kbd "XF86AudioRaiseVolume") "exec pamixer -i 5") - - ;; x220 specific - (define-key *top-map* (kbd "F1") "exec brightnessctl --device='intel_backlight' set 5%-") - (define-key *top-map* (kbd "F2") "exec brightnessctl --device='intel_backlight' set +5%") - (define-key *top-map* (kbd "F3") "exec ~/dotfiles/scripts/keyboard-light-x220.sh") - - ;;; Groups - ;; Switch to group - (define-key *root-map* (kbd "M-1") "gselect 1") - (define-key *root-map* (kbd "M-2") "gselect 2") - (define-key *root-map* (kbd "M-3") "gselect 3") - (define-key *root-map* (kbd "M-4") "gselect 4") - (define-key *root-map* (kbd "M-5") "gselect 5") - (define-key *root-map* (kbd "M-6") "gselect 6") - (define-key *root-map* (kbd "M-7") "gselect 7") - (define-key *root-map* (kbd "M-0") "gselect 5") - (define-key *root-map* (kbd "M-9") "gselect") - ;; Move window to group - (define-key *root-map* (kbd "M-!") "gmove 1") - (define-key *root-map* (kbd "M-@") "gmove 2") - (define-key *root-map* (kbd "M-#") "gmove 3") - (define-key *root-map* (kbd "M-$") "gmove 4") - (define-key *root-map* (kbd "M-%") "gmove 5") - (define-key *root-map* (kbd "M-^") "gmove 6") - (define-key *root-map* (kbd "M-)") "gmove 5") - (define-key *root-map* (kbd "M-(") "gmove") - ;; Focus - (define-key *root-map* (kbd "M-b") "move-focus left") - (define-key *root-map* (kbd "M-f") "move-focus right") - (define-key *root-map* (kbd "M-n") "move-focus down") - - (define-key *root-map* (kbd "s") "Duck") - ;(define-key *root-map* (kbd "v") "Invidious") -#+end_src |