(defmacro defnyxt-search (name search-url command) `(stumpwm:defcommand ,(intern (concatenate 'string "nyxt-" name)) (query) ((:string "Search: ")) (stumpwm:run-shell-command (concatenate 'string "nyxt -r -e '(" ,command "\"" ,search-url query "\"" ")'")))) (defvar duckduckgo "https://duckduckgo.com/?q=") (defvar github "https://github.com/search?q=") (defnyxt-search "duck" duckduckgo "buffer-load") (defnyxt-search "duck-newb" duckduckgo "set-url-new-buffer :url") (defnyxt-search "http" "http://" "buffer-load") (defnyxt-search "gh" github "buffer-load") ;; Sly setup (ql:quickload :slynk) (defcommand sly-start-server () () "Start a slynk server for sly." (sb-thread:make-thread (lambda () (slynk:create-server :dont-close t)))) (defcommand sly-stop-server () () "Stop current slynk server for sly." (sb-thread:make-thread (lambda () (slynk:stop-server 4005)))) (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 #'run-shell-command '("picom" "transmission-daemon" "xsetroot -cursor_name left_ptr")) (thanos/set-wallpapers))