diff options
author | Thanos Apollo <[email protected]> | 2023-03-07 12:47:22 +0200 |
---|---|---|
committer | Thanos Apollo <[email protected]> | 2023-03-07 12:47:22 +0200 |
commit | 129e34d31e7e1a426f07b39333863b74acf6634a (patch) | |
tree | b6cf1f40eb12b0b714df85870e5c7056c13a81fd /.config/stumpwm | |
parent | 302859941439068bfd345b50f1a7a9be694fbd5d (diff) |
Add stumpwm configuration
Diffstat (limited to '.config/stumpwm')
-rw-r--r-- | .config/stumpwm/config | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/.config/stumpwm/config b/.config/stumpwm/config new file mode 100644 index 0000000..ea923ba --- /dev/null +++ b/.config/stumpwm/config @@ -0,0 +1,121 @@ +(in-package :stumpwm) + + +;; autostart +(run-shell-command " +emacs --daemon & +feh --bg-scale ~/dotfiles/wallpaper.png & +picom & +exec qbittorrent &") + + +;; 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) + +;; change the prefix key to something else +(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)))) + +;; 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 "e") "emacs --daemon")ay + +;; 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") + +;; Message window font +(set-font "-xos4-terminus-medium-r-normal--14-140-72-72-c-80-iso8859-15") + +;;; 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 :restore 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")) + +(setf *mouse-focus-policy* :click) |