151 lines
4.7 KiB
Common Lisp
151 lines
4.7 KiB
Common Lisp
(in-package :stumpwm)
|
|
|
|
;; Start up a swank server for happy SLIME hacking
|
|
(require :swank)
|
|
(swank-loader:init)
|
|
(swank:create-server :port 4004
|
|
:style swank:*communication-style*
|
|
:dont-close t)
|
|
|
|
(defun get-color (name)
|
|
(let ((colors '(("base03" . "#002b36")
|
|
("base02" . "#073642")
|
|
("base01" . "#586e75")
|
|
("base00" . "#657b83")
|
|
("base0" . "#839496")
|
|
("base1" . "#93a1a1")
|
|
("base2" . "#eee8d5")
|
|
("base3" . "#fdf6e3")
|
|
("yellow" . "#b58900")
|
|
("orange" . "#cb4b16")
|
|
("red" . "#dc322f")
|
|
("magenta" . "#d33682")
|
|
("violet" . "#6c71c4")
|
|
("blue" . "#268bd2")
|
|
("cyan" . "#2aa198")
|
|
("green" . "#859900"))))
|
|
(cdr (assoc name colors :test 'equal))))
|
|
|
|
;; StumpWM configs
|
|
(setq *message-window-gravity* :center
|
|
*input-window-gravity* :center
|
|
*window-border-style* :thin
|
|
*message-window-padding* 10
|
|
*message-window-y-padding* 5
|
|
*maxsize-border-width* 2
|
|
*normal-border-width* 2
|
|
*transient-border-width* 2
|
|
stumpwm::*float-window-border* 2
|
|
stumpwm::*float-window-title-height* 2
|
|
*mouse-focus-policy* :click
|
|
*colors* (list (get-color "base02")
|
|
(get-color "red")
|
|
(get-color "green")
|
|
(get-color "yellow")
|
|
(get-color "blue")
|
|
(get-color "magenta")
|
|
(get-color "cyan")
|
|
(get-color "base2")))
|
|
|
|
;; Input/message bar
|
|
(set-fg-color (get-color "base00"))
|
|
(set-bg-color (get-color "base3"))
|
|
(set-border-color (get-color "base2"))
|
|
(set-msg-border-width 2)
|
|
|
|
;; Windows
|
|
(set-focus-color (get-color "base2"))
|
|
(set-unfocus-color (get-color "base2"))
|
|
(set-float-focus-color (get-color "base2"))
|
|
(set-float-unfocus-color (get-color "base2"))
|
|
|
|
;; Sudo
|
|
(defcommand stumpwm-password (prompt) ((:string "prompt: "))
|
|
"Prompts the user for a password"
|
|
(read-one-line (current-screen) prompt :password t))
|
|
|
|
(defmacro run-sudo-command (cmd &optional collect-output-p)
|
|
`(run-shell-command
|
|
(format nil "SUDO_ASKPASS=~~/bin/stumpwm-sudo.sh sudo -A ~S" ,cmd)
|
|
,collect-output-p))
|
|
|
|
;; Commands
|
|
(defcommand shutdown () ()
|
|
(when (y-or-n-p (format nil "~@{~a~^~%~}"
|
|
"You are about to shut down the computer."
|
|
"Really ^1^Bshutdown^b^n?"
|
|
"^B^6Confirm?^n "))
|
|
(run-shell-command "shutdown now")))
|
|
|
|
(defcommand firefox () ()
|
|
(run-or-raise "firefox" '(:class "firefox")))
|
|
|
|
(defcommand lock () ()
|
|
(run-shell-command
|
|
(concatenate 'string
|
|
"i3lockmore "
|
|
"--image-fill ~/Pictures/space-background.png "
|
|
"-n "
|
|
"--lock-icon ~/Pictures/lock.png")))
|
|
|
|
(defcommand battery () ()
|
|
(let ((capacity
|
|
(string-trim
|
|
'(#\newline)
|
|
(run-shell-command
|
|
"cat /sys/class/power_supply/BAT0/capacity"
|
|
t))))
|
|
(echo-string (current-screen)
|
|
(format nil "Battery: ~A%" capacity))))
|
|
|
|
(defcommand caps->escape () ()
|
|
(run-shell-command "setxkbmap -option caps:escape"))
|
|
|
|
(defcommand org-capture () ()
|
|
(run-shell-command "emacsclient -a '' -e '(make-orgcapture-frame)'"))
|
|
|
|
(defcommand background-random () ()
|
|
(run-shell-command (concatenate 'string
|
|
"feh --bg-scale "
|
|
"\"/home/jdormit/Dropbox/pictures/desktop/"
|
|
"$(ls /home/jdormit/Dropbox/pictures/desktop | shuf -n 1)\"")))
|
|
|
|
;; Keybindings
|
|
(define-key stumpwm:*root-map* (kbd "C-f") "firefox")
|
|
(define-key stumpwm:*root-map* (kbd "d") "exec rofi -show drun")
|
|
(define-key stumpwm:*root-map* (kbd "w") "exec rofi -show window")
|
|
(define-key stumpwm:*root-map* (kbd "P") "exec passmenu")
|
|
(define-key stumpwm:*root-map* (kbd "N") "exec networkmanager_dmenu")
|
|
(define-key stumpwm:*root-map* (kbd "M") "exec ~/bin/monitor_layout.sh")
|
|
(define-key stumpwm:*root-map* (kbd "L") "lock")
|
|
(define-key stumpwm:*root-map* (kbd "b") "battery")
|
|
(define-key stumpwm:*root-map* (kbd "C-o") "org-capture")
|
|
(define-key stumpwm:*root-map* (kbd "C-q") "quit-confirm")
|
|
(define-key *top-map* (kbd "M-TAB") "pull-hidden-next")
|
|
(define-key *top-map* (kbd "XF86MonBrightnessDown") "exec light -U 5")
|
|
(define-key *top-map* (kbd "XF86MonBrightnessUp") "exec light -A 5")
|
|
(define-key *top-map* (kbd "XF86AudioRaiseVolume") "exec pavolume volup")
|
|
(define-key *top-map* (kbd "XF86AudioLowerVolume") "exec pavolume voldown")
|
|
(define-key *top-map* (kbd "XF86AudioMute") "exec pavolume mutetoggle")
|
|
|
|
;; X Windows config
|
|
(run-shell-command "xsetroot -cursor_name left_ptr")
|
|
(run-shell-command "setxkbmap -option caps:escape")
|
|
|
|
;; UI
|
|
(ql:quickload "clx-truetype")
|
|
(load-module "ttf-fonts")
|
|
(xft:cache-fonts)
|
|
(set-font
|
|
(make-instance 'xft:font :family "IBM Plex Mono" :subfamily "Regular" :size 12))
|
|
(set '*message-window-padding* 4)
|
|
|
|
;; Desktop background
|
|
(run-shell-command "feh --bg-scale ~/Dropbox/pictures/solarized-light-blank.png")
|
|
|
|
;; Notifications via Dunst
|
|
(run-shell-command "/usr/bin/dunst")
|
|
|
|
;; Picom compositor
|
|
(run-shell-command "picom -b")
|