(In-package :stumpwm) (setf *default-package* :stumpwm) ;; Set the message and input box to the bottom right. (setf *message-window-gravity* :bottom-right *input-window-gravity* :bottom-right) ;; Set the 1337 lisp machine font (set-font "-lispm-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*") (defcommand firefox () () (run-or-raise "firefox" '(:class "Firefox-bin"))) (defcommand conkeror () () (run-or-raise "conkeror" '(:class "Conkeror"))) (defcommand pidgin () () (run-or-raise "pidgin" '(:class "Pidgin"))) ;; Keyboard shortcuts (define-key *root-map* (kbd "i") "exec xterm -e irssi") (define-key *root-map* (kbd "e") "exec xterm -e mutt") ;;(define-key *root-map* (kbd "f") "firefox") (define-key *root-map* (kbd "f") "conkeror") (define-key *root-map* (kbd "m") "pidgin") (define-key *root-map* (kbd "c") "exec LC_CTYPE=en_GB.UTF-8 xterm") (define-key *root-map* (kbd "l") "exec xlock") ;; Get rid of focus border (set-focus-color "black") ;; Settings (setf *transient-border-width* 0 *normal-border-width* 0 *maxsize-border-width* 0 *maxsize-border-width* 0 *debug-level* 10) ;; Bind the prefix key to the windows button (see .Xmodmap) (set-prefix-key (kbd "F30")) (run-shell-command "xmodmap /home/ricardo/.Xmodmap") ;; Focus follows mouse (setf *mouse-focus-policy* :sloppy) ;;(defun title-window-properly (window) ;; "Give new windows a proper title" ;; (cond ((equal (window-class window) "Firefox-bin") ;; (setf (window-user-title window) "firefox")))) ;;(stumpwm:add-hook *new-window-hook* 'title-window-properly) ;; cl-keynav (define-key *top-map* (kbd "KP_Enter") "keynav-start") (define-key *top-map* (kbd "Escape") "keynav-stop") (define-key *top-map* (kbd "KP_Left") "keynav-left") (define-key *top-map* (kbd "KP_Up") "keynav-up") (define-key *top-map* (kbd "KP_Down") "keynav-down") (define-key *top-map* (kbd "KP_Right") "keynav-right") (define-key *top-map* (kbd "KP_Begin") "keynav-click") (setf *keynav-mode* nil) (defcommand keynav-start () () (cl-keynav-start)) (defun cl-keynav-start () (if (not *keynav-mode*) (progn (setf *keynav-display* (xlib:open-display "")) (setf *keynav-screen* (car (xlib:display-roots *keynav-display*))) (setf *keynav-root-window* (xlib:screen-root *keynav-screen*)) (setf *keynav-black* (xlib:screen-black-pixel *keynav-screen*)) (setf *keynav-white* (xlib:screen-white-pixel *keynav-screen*)) (setf *keynav-height* (xlib:screen-height *keynav-screen*)) (setf *keynav-width* (xlib:screen-width *keynav-screen*)) (setf *keynav-x* 0) (setf *keynav-y* 0) (setf *keynav-gcontext* (xlib:create-gcontext :drawable *keynav-root-window* :line-width 4 :cap-style :butt :line-style :solid :foreground 16711680 ;; = 00FF0000 = red :background *keynav-white*)) (setf *keynav-clear-gcontext* (xlib:create-gcontext :drawable *keynav-root-window* :line-width 4 :cap-style :butt :line-style :solid :foreground 16711680 ;; = 00FF0000 = red :background *keynav-white*)) (setf *keynav-top-window* (xlib:create-window :parent *keynav-root-window* :override-redirect :on :x 0 :y 0 :width *keynav-width* :height *keynav-height* )) (setf *keynav-current-window* (xlib:create-window :parent *keynav-top-window* :x 0 :y 0 :width *keynav-width* :height *keynav-height*)) (setf *keynav-mode* t) (xlib:warp-pointer *keynav-root-window* (/ *keynav-width* 2) (/ *keynav-height* 2)) (xlib:map-window *keynav-top-window*) (xlib:map-window *keynav-current-window*) (xlib:draw-rectangle *keynav-current-window* *keynav-gcontext* 0 0 *keynav-width* *keynav-height* nil) (xlib:draw-line *keynav-current-window* *keynav-gcontext* (/ *keynav-width* 2) 0 (/ *keynav-width* 2) *keynav-height*) (xlib:draw-line *keynav-current-window* *keynav-gcontext* 0 (/ *keynav-height* 2) *keynav-width* (/ *keynav-height* 2)) (xlib:display-finish-output *keynav-display*)))) (defun cl-keynav-move (direction) (if *keynav-mode* (if (or (< *keynav-width* 2) (< *keynav-height* 2)) (cl-keynav-stop) (progn (cond ((equal direction "left") (setf *keynav-width* (ceiling (/ *keynav-width* 2)))) ((equal direction "right") (progn (setf *keynav-width* (ceiling (/ *keynav-width* 2))) (setf *keynav-x* (+ *keynav-x* *keynav-width*)))) ((equal direction "up") (setf *keynav-height* (ceiling (/ *keynav-height* 2)))) ((equal direction "down") (progn (setf *keynav-height* (ceiling (/ *keynav-height* 2))) (setf *keynav-y* (+ *keynav-y* *keynav-height*))))) (message (format nil "Width: ~d Height: ~d" *keynav-width* *keynav-height*)) (xlib:warp-pointer *keynav-root-window* (+ *keynav-x* (ceiling (/ *keynav-width* 2))) (+ *keynav-y* (ceiling (/ *keynav-height* 2)))) (xlib:draw-rectangle *keynav-root-window* *keynav-clear-gcontext* 0 0 *keynav-width* *keynav-height* nil) (xlib:display-finish-output *keynav-display*) ;(xlib:destroy-window *keynav-current-window*) (setf *keynav-current-window* (xlib:create-window :parent *keynav-top-window* :x *keynav-x* :y *keynav-y* :width *keynav-width* :height *keynav-height*)) (xlib:map-window *keynav-current-window*) (xlib:draw-rectangle *keynav-current-window* *keynav-gcontext* *keynav-x* *keynav-y* *keynav-width* *keynav-height* nil) (xlib:draw-line *keynav-current-window* *keynav-gcontext* (ceiling (/ *keynav-width* 2)) 0 (ceiling (/ *keynav-width* 2)) *keynav-height*) (xlib:draw-line *keynav-current-window* *keynav-gcontext* 0 (ceiling (/ *keynav-height* 2)) *keynav-width* (ceiling (/ *keynav-height* 2))) (xlib:display-finish-output *keynav-display*))))) (defun cl-keynav-stop () (if *keynav-mode* (progn (xlib:destroy-window *keynav-top-window*) (xlib:close-display *keynav-display*) (setf *keynav-mode* nil)))) (defun cl-keynav-click () (if *keynav-mode* (progn (run-shell-command "~/xmouse 1 d; ~/xmouse 1 u") ;; (send-fake-click (current-window) 1) (cl-keynav-stop)))) (defcommand keynav-left () () (cl-keynav-move "left")) (defcommand keynav-right () () (cl-keynav-move "right")) (defcommand keynav-up () () (cl-keynav-move "up")) (defcommand keynav-down () () (cl-keynav-move "down")) (defcommand keynav-click () () (cl-keynav-click)) (defcommand keynav-stop () () (cl-keynav-stop)) ;; Startup commands (run-shell-command "xsetroot -solid black -cursor_name left_ptr") (run-shell-command "xfce-mcs-manager") (run-shell-command "LC_CTYPE=en_GB.UTF-8 xterm -e 'stty -brkint -imaxbel erase ^H;emacs'") ;;(run-shell-command "keynav") ;;(run-shell-command "unclutter -idle 0 -jitter 0 -root") (define-key *top-map* (kbd "KP_Left") "gprev") (define-key *top-map* (kbd "KP_Right") "gnext")