#-quicklisp (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) ;; (load "~/.stumpwm.d/bluetooth.lisp") ;; (load "~/.stumpwm.d/commands.lisp") (load "~/.config/stumpwm/theme.lisp") (load "~/.config/stumpwm/placement.lisp") (load "~/.config/stumpwm/keybindings.lisp") ;; (load "~/./utilities.lisp") (load "~/.config/stumpwm/modeline.lisp") ;; autostart (run-shell-command " emacs --daemon & feh --bg-scale ~/dotfiles/wallpaper.png & picom & exec qbittorrent &") (setf *mouse-focus-policy* :click) ;; prefix key (set-prefix-key (kbd "C-t")) ;; prompt the user for an interactive command. The first arg is an ;; optional initial contents. (defcommand colon1 (&optional (initial "")) (:rest) (let ((cmd (read-one-line (current-screen) ": " :initial-input initial))) (when cmd (eval-command cmd t)))) (define-key *top-map* (kbd "Super-2") (gselect 1)) ;; Run rofi (define-key *root-map* (kbd "C-r") "exec rofi -show drun") (define-key *root-map* (kbd "e") "exec emacsclient -c") (define-key *root-map* (kbd "C-e") "exec emacs --daemon") ;; Browse somewhere (define-key *root-map* (kbd "b") "colon1 exec firefox http://www.") ;; Ssh somewhere (define-key *root-map* (kbd "C-s") "colon1 exec xterm -e ssh ") ;; Lock screen (define-key *root-map* (kbd "C-l") "exec xlock") ;; Audio (define-key *top-map* (kbd "XF86AudioLowerVolume") "exec amixer sset Master 5%-") (define-key *top-map* (kbd "XF86AudioRaiseVolume") "exec amixer sset Master 5%+") ;; Web jump (works for DuckDuckGo and Imdb) (defmacro make-web-jump (name prefix) `(defcommand ,(intern name) (search) ((:rest ,(concatenate 'string name " search: "))) (nsubstitute #\+ #\Space search) (run-shell-command (concatenate 'string ,prefix search)))) (make-web-jump "duckduckgo" "firefox https://duckduckgo.com/?q=") (make-web-jump "imdb" "firefox http://www.imdb.com/find?q=") ;; C-t M-s is a terrble binding, but you get the idea. (define-key *root-map* (kbd "M-s") "duckduckgo") (define-key *root-map* (kbd "i") "imdb") ;; UI (setf *message-window-gravity* :center *input-window-gravity* :center *window-border-style :thin *mouse-focus-policy* :click *transient-border-width* 2 *normal-size-border-width* 2) ;; Message window font (set-font "-xos4-terminus-medium-r-normal--14-140-72-72-c-80-iso8859-15") (set-font "-xos4-terminus-medium-r-normal-*-20-*-*-*-*-*-*-*") ;;; Define window placement policy... (defvar *thanos/workspaces* (list "EMACS" "WEB" "ANKI" "DOC" "RAND" "VID" "TOR")) (stumpwm:grename (nth 0 *thanos/workspaces*)) (dolist (workspace (cdr *thanos/workspaces*)) (stumpwm:gnewbg workspace)) (defvar *move-to-keybinds* (list "!" "@" "#" "$" "%" "^" "&" "*" "(")) (dotimes (y (length *ce/workspaces*)) (let ((workspace (write-to-string (+ y 1)))) (define-key *root-map* (kbd workspace) (concat "gselect " workspace)) (define-key *root-map* (kbd (nth y *move-to-keybinds*)) (concat "gmove-and-follow " workspace)))) ;; Clear rules (clear-window-placement-rules) ;; Last rule to match takes precedence! ;; TIP: if the argument to :title or :role begins with an ellipsis, a substring ;; match is performed. ;; TIP: if the :create flag is set then a missing group will be created and ;; restored from *data-dir*/create file. ;; TIP: if the :restonre flag is set then group dump is restored even for an ;; existing group using *data-dir*/restore file. (define-frame-preference "Default" ;; frame raise lock (lock AND raise == jumpto) (0 t nil :class "Konqueror" :role "...konqueror-mainwindow") (1 t nil :class "XTerm")) (define-frame-preference "Ardour" (0 t t :instance "ardour_editor" :type :normal) (0 t t :title "Ardour - Session Control") (0 nil nil :class "XTerm") (1 t nil :type :normal) (1 t t :instance "ardour_mixer") (2 t t :instance "jvmetro") (1 t t :instance "qjackctl") (3 t t :instance "qjackctl" :role "qjackctlMainForm")) (define-frame-preference "Shareland" (0 t nil :class "XTerm") (1 nil t :class "aMule")) (define-frame-preference "Emacs" (1 t t :restore "emacs-editing-dump" :title "...xdvi") (0 t t :create "emacs-dump" :class "Emacs"))