Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;;;; -*- Mode: Lisp -*-
- ;;
- ;; vim: filetype=lisp
- ;;
- ;; Compiled using ANSI Common Lisp; not SBCL.
- ;; SBCL just made stumpwm run so slow, so I read that it actually runs
- ;; faster with Clisp, so I immediately undertook the process of compiling
- ;; stumpwm using Clisp.
- (in-package :stumpwm) ;; not sure what this does.
- ;; Emergency Key Bindings
- ; key bindings that will be set up in case of a problem in this .*rc file.
- (define-key *top-map* (kbd "s-E") ; enables the user to interact with the openbox logout script
- "exec oblogout")
- (define-key *top-map* (kbd "s-T") ; enables the user to start up an emergency session of a terminal
- "exec terminator")
- (define-key *top-map* (kbd "C-M-F") ; the 'failsafe' method xD
- "exec killall -s KILL stumpwm")
- ;; Modules
- ;(load "/home/gm/opt/stumpwm/contrib/battery-portable.lisp")
- ;(load "/home/gm/opt/stumpwm/contrib/battery.lisp")
- ;(load "/home/gm/opt/stumpwm/contrib/mpd.lisp")
- ;(load "/home/gm/opt/stumpwm/contrib/productivity.lisp")
- ;(load "/home/gm/opt/stumpwm/contrib/app-menu.lisp")
- ;; Background setup
- (run-shell-command "feh --bg-max ~/picts/'Washington DC'.jpg")
- ;; Startup message
- ;(setf *start-up* nil) (setf *startup-message* "Blarg")
- ;; Modeline
- ;(setf *mode-line-foreground-color* "White")
- ;(setf *mode-line-background-color* "Black")
- ;(setf *mode-line-border-color* "Black")
- ;(setf *group-format* "%t")
- ;(setf *window-name-source* :title)
- ;(setf *window-format* "%c")
- ;(setf *screen-mode-line-format* (list " ^B^7*((^6*"
- ; '(:eval (run-shell-command "date '+%I:%M%P' |tr -d [:cntrl:]" t))
- ; "^7*) (^6*%B^7*)"
- ; " ^7*(^6%g"
- ; " ^7*(^6*%w^7*)))"))
- ;
- ;(if (not (head-mode-line (current-head)))
- ; (toggle-mode-line (current-screen) (current-head)))
- ;; Mouse and Fonts
- (run-shell-command "xsetroot -cursor_name left_ptr")
- (setf *mouse-focus-policy* :click)
- ;; Mouse Mappings
- ;(defstruct mouse-event button state root-x root-y)
- ;;; This is a little bit uggly but this prevent to redefine all the
- ;;; interactive-command way.
- ;(defvar *current-mouse-event* nil)
- ;(defvar *ignore-next-mouse-event* nil)
- ;(defvar *frame-number-wins* nil)
- ;;; Little helpers
- ;(defun define-mouse (map button command)
- ; (define-key map button command))
- ;(defun button (buttons)
- ; (kbd buttons))
- ;(define-key *top-map* (button "1") "der-men")
- ;;; Default binding
- ;(defparameter *mouse-map*
- ; (let ((m (make-sparse-keymap)))
- ; (define-mouse m (button "1") "der-men")
- ; m))
- ;; Windows an' Messages
- ;None, yet.
- ;; Taskbar
- (run-shell-command "tint2")
- ;(run-shell-command "sh :B/ensur-tint2.sh")
- ;; Menu
- ; an experimental menu that uses plists.
- (defvar *exp-Books* (list :Common\ \Lisp\ General\ \Documentation "zathura /home/gm/docs/books/Lisp.pdf" :\On\ \Lisp "zathura /home/gm/docs/books/onlisp.pdf" :\The\ Collected\ Works\ of\ J.R.R.\ Tolkien "zathura /home/gm/docs/books/'The Collected Works of J.R.R. Tolkien.pdf'" :\The\ Tolkien\ Binder "zathura /home/gm/docs/books/Binder1.pdf" :Compaq\ Presario\ CQ60\ Maintenance\ \and\ Service\ Guide "zathura /home/gm/docs/books/maintenance.pdf"))
- (defun *exp-menu* () (setf *exp-Main* (list :Books *exp-Books*)) )
- ; the regular app-menu that is all too available and un-explained.
- (defparameter *app-menu* '(("Books"
- ;; a submenu
- ("Common Lisp General Documentation" "zathura /home/gm/docs/books/Lisp.pdf")
- ("On Lisp" "zathura /home/gm/docs/books/onlisp.pdf")
- ("The Collected Works of J.R.R. Tolkien" "zathura /home/gm/docs/books/'The Collected Works of J.R.R. Tolkien.pdf'")
- ("The Tolkien Binder" "zathura /home/gm/docs/books/Binder1.pdf")
- ("Compaq Presario CQ60 Maintenance and Service Guide" "zathura /home/gm/docs/books/maintenance.pdf"))
- ("All Programs"
- ("Accessories"
- ; the accessories submenu
- ("Xterm" "xterm")
- ("gvim" "gvim"))
- ("Internet"
- ("Chromium" "chromium"))
- )))
- (define-key *top-map* (kbd "s-SPC") "der-men")
- ;(define-key
- (defcommand der-men () ()
- "parses the '*app-menu*' variable allowing users to access a menu."
- (labels ((pick (options)
- (let ((selection (stumpwm::select-from-menu (current-screen) options "")))
- (cond
- ((null selection)
- (throw 'stumpwm::error "Okay."))
- ((stringp (second selection))
- (second selection))
- (t
- (pick (cdr selection)) ))) ))
- (let ((choice (pick *app-menu*)))
- (run-shell-command choice)) ))
- ;; Commands
- ;(defcommand reloadrc () ()
- ; "docstring"
- ; "/bin/sh -c pkill -HUP stumpwm")
- ;(defcommand donothing () ()
- ; "do nothing")
- ;(defcommand reinit ()
- ; "exec sh bin/stump-restart.sh")
- (defcommand reloadrc () ()
- "docstring"
- (run-commands "loadrc"))
- ;(defun shift-windows-forward (frames win)
- ; (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)))
- ;(defcommand other-win () ()
- ; (run-commands "other" "windows"))
- (defcommand next-win () ()
- "docstring"
- (run-commands "next" "windows"))
- (defcommand prev-win () ()
- "docstring"
- (run-commands "prev" "windows"))
- ;(defcommand next-in-frame-win () ()
- ; (run-commands "next-in-frame" "windows"))
- ;(defcommand prev-in-frame-win () ()
- ; (run-commands "prev-in-frame" "windows"))
- ;; toggle between vertical split and horizontal split
- ;(defcommand toggle-split () ()
- ; (let* ((group (current-group))
- ; (cur-frame (tile-group-current-frame group))
- ; (frames (group-frames group)))
- ; (if (eq (length frames) 2)
- ; (progn (if (or (neighbour :left cur-frame frames)
- ; (neighbour :right cur-frame frames))
- ; (progn
- ; (only)
- ; (vsplit))
- ; (progn
- ; (only)
- ; (hsplit))))
- ; (message "Works only with 2 frames"))))
- ;(defun pinger-for-pingit (ip-or-fqdn) ; see my comment about pingit below.
- ; (setf command (concatenate 'string "exec xterm -e" "ping" " " ip-or-fqdn "&&" "sh"))
- ; (run-shell-command command)) ; I have no idea if this command even works or not.
- ;(defcommand pingit (ip-or-fqdn)
- ; (if (eql nil ip-or-fqdn) (format t "variable is empty; variable must not be empty") (pinger-for-pingit ip-or-fqdn)))
- ;
- ;(defcommand mk-folder (folder-to-make folder-to-make-in)
- ; (setf command (concatenate 'string "cd" " " folder-to-make-in))
- ; (run-shell-command command)
- ; (setf command (concatenate 'string "mkdir" " " folder-to-make))
- ; (run-shell-command command)
- ; (run-shell-command "send-notify 'folder made'"))
- ;; Groups
- (grename "0")(gnewbg "1")(gnewbg "2")
- (gnewbg "3") (gnewbg "4") ;(gnewbg "4")(gnewbg "5")
- ;; display the key sequence in process/progress
- ;(defun key-press-hook (key-seq cmd)
- ; (declare (ignore key))
- ;(unless (eq *top-map* *resize-map*)
- ; (let ((*message-window-gravity* :bottom-right))
- ; (message "Key sequence: ~a" (print-key-seq (reverse key-seq))))
- ; (when (stringp cmd)
- ; ;; give 'em time to read it
- ; (sleep 0.5))))
- ;(defmacro replace-hook (hook fn)
- ; `(remove-hook ,hook ,fn)
- ; `(add-hook ,hook ,fn))
- ;(replace-hook *key-press-hook* 'key-press-hook)
- ;; Super_L is supposed to be the windows key.. but it doesn't seem to work. Oh, duh. Windows key represented by the M in Meta
- ;;
- ;; width in pixels given to the borders of windows with maxsize or ratio
- (setf *maxsize-border-width* 1)
- ;; width in pixels given to th eborders of transient of pop-up windows
- (setf *transient-border-width* 1)
- ;; width in pixels given to the borders of regular windows
- (setf *normal-border-width* 1)
- ;; set the border color for focused windows
- (set-focus-color "black") ; `white' by default
- (set-unfocus-color "yellow")
- ;; <!-- Keybindings Section Start -->
- ; symbolic keybindings
- ;(define-keysym #xffe3 "Control_L")
- ;(define-keysym #xffeb "Super_L")
- ;(define-keysym #xff14 "Scroll_Lock")
- ;(define-keysym #xffe9 "Alt_L") ;; I have specified which alt keys are which
- ;(define-keysym #xffe7 "Meta_L") ;; so that I can have certain keybindings
- ;(define-keysym #xffea "Alt_R") ;; that will only be triggered if a certain
- ;(define-keysym #xffe8 "Meta_R") ;; sequence of modifier keys is used.
- ;(define-keysym #xffe2 "Shift_R");; And so that Ix can have single-key bindings
- ;(define-keysym #xffe1 "Shift_L");; that only make use of a single modifier key
- ;; something which does not appear to be possible by default.
- (define-keysym #x1008ffa9 "XF86TouchpadToggle")
- ;(define-keysym #xffab "plus") ; this mapping defaults to "KP_Add")
- ;(define-keysym #xffad "minus") ; '' "KP_Subtract")
- ;(define-keysym #xffaa "asterisk") ; '' "KP_Multiply")
- ;(define-keysym #xffaf "slash") ; '' "KP_Divide")
- ; dmenu setup
- (define-key *top-map* (kbd "Menu")
- "exec dmenu_run -p \">_\" -nb '#191919'" );;-sb '#C0CC00' -sf '#000000' -nb '#191919' -nf 'grey' " )
- ; dmenfm setup
- (define-key *top-map* (kbd "M-.")
- "exec dmenfm")
- ;; <!-- XF86 Function Keys Section Start -->
- (define-key *top-map* (kbd "XF86Sleep") "exec xterm -e sudo pm-suspend")
- (define-key *top-map* (kbd "XF86PowerOff") "exec oblogout")
- (define-key *top-map* (kbd "XF86AudioMute") "exec amixer set Master toggle")
- (define-key *top-map* (kbd "XF86AudioLowerVolume") "exec amixer set Master 1%-")
- (define-key *top-map* (kbd "XF86AudioRaiseVolume") "exec amixer set Master 1%+")
- (define-key *top-map* (kbd "Print") "exec scrot")
- ;(define-key *top-map* (kbd "XF86WLAN")
- (define-key *top-map* (kbd "XF86HomePage") "exec chromium")
- (define-key *top-map* (kbd "s-F6") "exec xscreensaver")
- (define-key *top-map* (kbd "XF86TouchpadToggle") "exec sh ~/bin/chkpad.sh")
- ;; <!-- XF86 Section End -->
- ;(define-key *top-map* (kbd "M-Tab")
- ; "next-win")
- ;(define-key *top-map* (kbd "M-ISO_Left_Tab")
- ; "prev-win")
- ;(define-key *top-map* (kbd "C-M-Delete")
- ; "exec xterm -e htop")
- ;; <!-- Keybindings Section End -->
- ;;** Prefix Key
- (set-prefix-key (kbd "s-x")) ; sets the prefix key to Windows-key + the letter 'x'. The prefix key is Ctrl-t, by default. (it's a rather awkward key-binding, imo.)
- ;; EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement