2022-11-12 16:17:16 +01:00

120 lines
4.2 KiB
Common Lisp

(in-package :stumpwm)
(set-prefix-key (kbd "s-s"))
(set-font "-xos4-terminus-medium-r-normal--32-320-72-72-c-160-iso10646-1")
(setf *mouse-focus-policy* :sloppy
*message-window-gravity* :center
*input-window-gravity* :center
*window-border-style* :thin
*time-modeline-string* "%k:%M"
*screen-mode-line-format* "[^B%n^b] %W^>%d")
(when *initializing*
(setf (group-name (current-group)) "1")
(mapc #'gnewbg '("2" "3" "4" "5" "6" "7" "8" "9"))
(gnewbg-float "0"))
(loop for name in '("1" "2" "3" "4" "5" "6" "7" "8" "9" "0")
for shift in '("!" "@" "#" "$" "%" "^" "&" "*" "(" ")")
do (define-key *top-map* (kbd (concat "s-" name)) (concat "gselect " name))
(define-key *top-map* (kbd (concat "s-" shift)) (concat "gmove " name)))
(define-key *root-map* (kbd "c") "exec alacritty")
(define-key *root-map* (kbd "V") "vsplit")
(define-key *root-map* (kbd "e") "exec emacsclient -n -c -a ''")
(define-key *root-map* (kbd "M-e") "emacs")
(define-key *root-map* (kbd "s-l") "exec slock")
(define-key *top-map* (kbd "s-q") "restart-soft")
(define-key *top-map* (kbd "s-Q") "quit-confirm")
(define-key *top-map* (kbd "s-S-RET") "exec alacritty")
(define-key *top-map* (kbd "s-S-F6") "toggle-theme")
(define-key *top-map* (kbd "s-a") "gother")
(define-key *top-map* (kbd "s-b") "mode-line")
(define-key *top-map* (kbd "s-f") "fullscreen")
(define-key *top-map* (kbd "s-i") "gprev")
(define-key *top-map* (kbd "s-o") "gnext")
(define-key *top-map* (kbd "s-I") "gprev-with-window")
(define-key *top-map* (kbd "s-O") "gnext-with-window")
(define-key *top-map* (kbd "s-p") "exec")
(define-key *top-map* (kbd "s-P") "exec rofi -theme Arc-Dark -show combi")
(define-key *top-map* (kbd "s-j") "move-focus down")
(define-key *top-map* (kbd "s-k") "move-focus up")
(define-key *top-map* (kbd "s-h") "move-focus left")
(define-key *top-map* (kbd "s-l") "move-focus right")
(define-key *top-map* (kbd "s-J") "move-window down")
(define-key *top-map* (kbd "s-K") "move-window up")
(define-key *top-map* (kbd "s-H") "move-window left")
(define-key *top-map* (kbd "s-L") "move-window right")
(define-key *top-map* (kbd "s-w") "select-head 0")
(define-key *top-map* (kbd "s-e") "select-head 1")
(define-key *top-map* (kbd "s-r") "select-head 2")
(defpackage :my-stumpwm-config
(:use :cl))
(in-package :my-stumpwm-config)
(stumpwm:defcommand select-head (num) (:rest)
(let ((head (nth (parse-integer num) (stumpwm:screen-heads (stumpwm:current-screen)))))
(stumpwm::focus-frame (stumpwm:current-group)
(car (stumpwm::head-frames (stumpwm:current-group) head)))))
(load "~/quicklisp/setup.lisp")
(ql:quickload :slynk)
(stumpwm:defcommand slynk () ()
(let ((port 4005))
(slynk:create-server :dont-close t :port port)
(stumpwm:echo-string (stumpwm:current-screen) (format nil "Slynk started at port ~D" port))))
(stumpwm:load-module :stumpwm-base16)
(when stumpwm:*initializing*
(stumpwm-base16:load-theme "espresso"))
(dolist (head (stumpwm:screen-heads (stumpwm:current-screen)))
(stumpwm:enable-mode-line (stumpwm:current-screen) head t))
(defparameter *themes* '(:dark (:stumpwm "espresso"
:emacs "dark"
:alacritty "dark"
:gtk "Materia-dark")
:light (:stumpwm "nova"
:emacs "light"
:alacritty "light"
:gtk "Materia-light")))
(defparameter *themes-order* '(:dark :light :light :dark))
(defparameter *theme* :light)
(stumpwm:defcommand toggle-theme () ()
(setf *theme* (getf *themes-order* *theme*))
(let ((theme (getf *themes* *theme*)))
(stumpwm-base16:load-theme (getf theme :stumpwm))
(dolist (head (stumpwm:screen-heads (stumpwm:current-screen)))
(stumpwm:toggle-mode-line (stumpwm:current-screen) head)
(stumpwm:toggle-mode-line (stumpwm:current-screen) head))
(mapc #'stumpwm:run-shell-command
(list (concatenate 'string
"sed -i -E 's#Net/ThemeName .*#Net/ThemeName \""
(getf theme :gtk)
"\"#' ~/.config/xsettingsd/xsettingsd.conf")
"pkill -HUP -x xsettingsd; "
(concatenate 'string
"sed -i 's/^colors: [*].*/colors: *"
(getf theme :alacritty)
"/' ~/.config/alacritty/alacritty.yml; ")
(concatenate 'string
"emacsclient --eval \"(my-select-theme '"
(getf theme :emacs)
")\"")))))
(if stumpwm:*initializing*
(toggle-theme))