summaryrefslogtreecommitdiff
path: root/.config/stumpwm/config
blob: 745a060853fe88fbdf2281310cfcbb5a0b548413 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#-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/placement.lisp")
(load "~/.config/stumpwm/keybindings.lisp")
(load "~/.config/stumpwm/theme.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 "e") "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"))