;; -*-lisp-*- ;; ;; s__C config (in-package :stumpwm) (set-contrib-dir "/usr/share/stumpwm") (setf *default-package* :stumpwm) ;;;; change the prefix key to something else (set-prefix-key (kbd "C-e")) ;;;; Default terminal emulator (setq *terminal* "urxvtc") ;;;; Default Browser (setq *browser* "chromium") ;;;; Give conky enough space (resize-head 0 0 14 1440 886) ;;;; Message window gravity ;; ; :top-left :top-right :bottom-left :bottom-right :center (setq *message-window-gravity* :top-right) ;;;; Input window gravity ;; ; :top-left :top-right :bottom-left :bottom-right :center (setq *input-window-gravity* :bottom-left) ;;;; Window format (setq *window-format* "|%m%s%n %c %10t...") ;; in seconds, how long a message will appear for. This must be an integer. (setf *timeout-wait* 5) ;; In what frame system try to open next window ;; (setf *new-window-preferred-frame* '(:empty :focused)) ;;;; Style of window borders (setf *mouse-focus-policy* :click *window-border-style* :thin *message-window-gravity* :center *input-window-gravity* :center) (set-normal-gravity :bottom) (set-maxsize-gravity :center) (set-transient-gravity :bottom) ;; borders. (setf ;*resize-hides-windows* T *normal-border-width* 2 *maxsize-border-width* 2 *transient-border-width* 2 *float-window-border* 1 *float-window-title-height* 1) (set-msg-border-width 1) (set-fg-color "grey9") (set-bg-color "grey53") (set-focus-color "grey53") (set-unfocus-color "black") (set-border-color "grey9") (set-win-bg-color "grey9") ;;;; ;;;; Custom keybindings: ;;;; ;;;; Message window font (set-font "-*-montecarlo-medium-r-normal-*-11-*-*-*-*-*-*-*") ;;;; Loading some external modules (defcommand fullscreen () () "Fullscreen command" (let ((group-file (format nil "/tmp/stumpwm-group-~a" (group-name (current-group))))) (if (null (cdr (head-frames (current-group) (current-head)))) (restore-from-file group-file) (progn (dump-group-to-file group-file) (only))))) (defun shift-windows-forward (frames win) "Exchange windows through cycling frames." (when frames (let ((frame (car frames))) (shift-windows-forward (cdr frames) (frame-window frame)) (when win (pull-window win frame))))) (defcommand rotate-windows () () (let* ((frames (group-frames (current-group))) (win (frame-window (car (last frames))))) (shift-windows-forward frames win))) ;;; Matlab (defcommand matlab () () "Run or raise matlab" (let ((matlab-group (find-group (current-screen) "matlab"))) (if matlab-group (gselect matlab-group) (progn (gnew-float "matlab") (run-shell-command "/usr/bin/matlab -desktop"))))) ;; Definition of some useful keybindings (define-key *root-map* (kbd "q") "quit") (define-key *root-map* (kbd "M-r") "reload") (define-key *root-map* (kbd "e") "exec") (define-key *root-map* (kbd "v") "vsplit") (define-key *root-map* (kbd "h") "hsplit") (define-key *root-map* (kbd "f") "fullscreen") (define-key *top-map* (kbd "s-r") "rotate-windows") (define-key *top-map* (kbd "C-Left") "move-focus left") (define-key *top-map* (kbd "C-Down") "move-focus down") (define-key *top-map* (kbd "C-Up") "move-focus up") (define-key *top-map* (kbd "C-Right") "move-focus right") (define-key *top-map* (kbd "s-Up") "pull-hidden-previous") (define-key *top-map* (kbd "s-Down") "pull-hidden-next") (define-key *top-map* (kbd "C-M-Left") "move-window left") (define-key *top-map* (kbd "C-M-Down") "move-window down") (define-key *top-map* (kbd "C-M-Right") "move-window right") (define-key *top-map* (kbd "C-M-Up") "move-window up") (define-key *top-map* (kbd "M-r") "remove") (define-key *top-map* (kbd "s-m") "exec mpd") (define-key *top-map* (kbd "s-n") "exec urxvtc -e ncmpcpp") (define-key *top-map* (kbd "s-c") "exec chromium") (define-key *top-map* (kbd "s-p") "exec thunar") (define-key *top-map* (kbd "s-v") "exec urxvtc -e gvim") (define-key *top-map* (kbd "s-RET") "exec urxvtc") (define-key *top-map* (kbd "s-t") "exec urxvtc -e tmux") (define-key *top-map* (kbd "s-a") "exec urxvtc -e tmux a") (define-key *top-map* (kbd "s-C-Down") "exec mpc toggle") (define-key *top-map* (kbd "s-C-Up") "exec mpc stop") (define-key *top-map* (kbd "s-C-Right") "exec mpc next; stumpish echo `mpc --format '%artist% - %album% - %title%' | head -1`") (define-key *top-map* (kbd "s-C-Left") "exec mpc prev; stumpish echo `mpc --format '%artist% - %album% - %title%' | head -1`") (define-key *top-map* (kbd "s-x") "exec dmenu_run -p '>>>' -nb grey10 -nf white -sb grey30 -sf orange") (define-key *top-map* (kbd "s-Right") "gnext") (define-key *top-map* (kbd "s-Left") "gprev") ;;;; Debug level: 0-5 (setf *debug-level* 0) ;;; Desktops (setf (group-name (first (screen-groups (current-screen)))) "Term") (run-commands "gnewbg Web" "gnewbg Dev" "gnewbg Shit" "gnewbg Media" "gnewbg Matlab") ;; Clear rules (clear-window-placement-rules) (define-frame-preference "Term" ;; frame raise lock (lock AND raise == jumpto) (0 t t :instance "tmux")) (define-frame-preference "Web" ;; frame raise lock (lock AND raise == jumpto) (0 t t :class "Chromium")) (define-frame-preference "Shit" ;; frame raise lock (lock AND raise == jumpto) (0 t t :class "Thunar") (0 t t :class "Deluge")) (define-frame-preference "Dev" ;; frame raise lock (lock AND raise == jumpto) (0 t t :class "Gvim")) (define-frame-preference "Media" ;; frame raise lock (lock AND raise == jumpto) (0 t t :instance "ncmpcpp") (0 t t :class "mplayer")) (define-frame-preference "Matlab" (0 t t :class "Matlab")) (defun msg-notify (fmt args) (let ((*executing-stumpwm-command* nil) (*message-window-gravity* :center)) (message-no-timeout fmt args))) (defcommand notify (msg) ((:rest "Notify: ")) (msg-notify "~a" msg))