summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThanos Apollo <[email protected]>2023-03-07 12:47:22 +0200
committerThanos Apollo <[email protected]>2023-03-07 12:47:22 +0200
commit129e34d31e7e1a426f07b39333863b74acf6634a (patch)
treeb6cf1f40eb12b0b714df85870e5c7056c13a81fd
parent302859941439068bfd345b50f1a7a9be694fbd5d (diff)
Add stumpwm configuration
-rw-r--r--.config/stumpwm/config121
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)