summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThanos Apollo <[email protected]>2023-08-31 19:51:37 +0300
committerThanos Apollo <[email protected]>2023-08-31 19:51:37 +0300
commit49deaaf1fbc4213e1a616e10eea4b652a3e5f3af (patch)
tree123ede512e9919c707c19991d5d9062e283244e7
parentd1c43b4dd50767d6421838ca3b16a8edfe9fbde0 (diff)
stumpwm: Redo using stow instead of org
-rw-r--r--.stumpwm.d/colors.lisp54
-rw-r--r--.stumpwm.d/init.lisp285
-rw-r--r--stumpwm.org356
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