;; Functions (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")))) ;; 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"))))) (when *initializing* (mapc #'stumpwm:run-shell-command '("emacs --daemon" "picom" "transmission-daemon" "xsetroot -cursor_name left_ptr")) (thanos/set-wallpapers))